最近流行のIFTTTをちょっと応用して使ってみます。IFTTTは様々なサービスをトリガーにして様々なアクションを作ることができます。既に色々なトリガーとアクションがWebで簡単に登録できるので、それを組み合わせてレシピとして通常は活用します。
今回は応用例としてTwitterでふぁぼったら自前のメールサーバーにふぁぼった内容を件名にしたメールを飛ばし、それをトリガーにしてTwitterのアイコンの吹き出しにふぁぼり内容を書き出します。トリガーは正直なんでも良いのですが、その後のアクションはメールを活用して自分好みの処理をほぼなんでも行うというものです。アイコンの吹き出しに文字を出す、というのは前の記事で行ったものです。
メール受信の活用
今回自前のサーバーではpostfixを動かし、my.mail.net(仮称)で運用しているます。.forwardを利用することで、メールの受信をトリガーに任意のプログラムを動かすことができます。さらに実行されたプログラムには受信したメール内容が入るのでそれを元に色々と遊べるわけです。つまりIFTTTのアクションをメールにしておき、さらにそれをトリガーにして自分のプログラムをアクションとして動かすイメージです。
\jonki@my.mail.net "| python /path/to/program-file.py"
メールの件名を吹き出しの文字に適用
下記がメール受信の際に実行されるプログラムです。かなり雑に作ったもので恥ずかしいのですが、標準入力でメールのSubjectを抜き出して、前回の記事のようにImageMagickで吹き出しの文字を作り、それをTweepyライブラリでTwitterのプロフィール画像を変更します。ここはお好みでなんでも良いのですがメールにIFTTTのアクション生成時に色々なものを詰め込んでおけば、カスタマイズも自由ですね。
# /usr/bin/python # -*- coding: utf-8 -*- import sys import tweepy import base64 import quopri import re import quopri import re from wand.image import Image from wand.drawing import Drawing from wand.font import Font CONSUMER_KEY = 'xxxxxx' CONSUMER_SECRET = 'xxxxx' ACCESS_KEY = 'xxxxx' ACCESS_SECRET = 'xxxxx' auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) api = tweepy.API(auth_handler=auth, api_root='/1.1', secure=True) subheader = 'Subject: ' r_base64 = re.compile('\?UTF-8\?B\?(\S+)\?=') r_qp = re.compile('\?UTF-8\?Q\?(\S+)\?=') for line in sys.stdin: if(line.startswith(subheader)): title = line.split(subheader)[1] m = r_base64.search(title) if m: # print(m.group(1)) print 'base 64 decoding...' title = base64.b64decode(m.group(1)) else: m = r_qp.search(title) if m: print 'quoted print decoding...' title = quopri.decodestring(m.group(1)) with Drawing() as draw: with Image(filename='/path/to/original/image.png') as img: with img.clone() as i: draw.font = '/path/to/somefont.ttf' draw.font_size = 24 draw.text(138, 110, title) draw(i) output_file_name = '/path/to/output/image.png' i.save(filename=output_file_name) api.update_profile_image(output_file_name) f.close()