Tumblrへの投稿メール文字化け対策
Tumblrをメモ代わりに使おうかなと思った。
Tumblrはメール投稿のための送信先アドレスを発行してくれるのだけど、日本語が文字化けする。
なので別アドレスで中継してAPIにPOSTするスクリプトを書いた。誰かすでに作ってそうだが・・・。
POSTできるのはとりあえず通常のテキストのみ。PHSをカメラつきの機種に買い換えたら画像にも対応してみるかも。
さくらのレンタルサーバに置いてる。
/home/username/Mailbox/mailuser/.mailfilter
to "| /usr/local/bin/python /home/username/bin/post_tumblr.py" exit
/home/username/bin/post_tumblr.py
import urllib, urllib2 post_regular_url = "http://www.tumblr.com/api/write" class Tumblr(object): def __init__(self, email, password): self.email = email self.password = password def write_regular(self, title, body): params = urllib.urlencode({"email": self.email, "password": self.password, "type":"regular", "title":title.encode("UTF-8"), "body": body.encode("UTF-8")}) try: urllib2.urlopen(post_regular_url, params) except urllib2.HTTPError: pass # めんどくさいからパス import sys from email import Header, Parser user = "" # 自分の携帯メールアドレス tumblr_email = "" tumblr_password = "" mailstr = sys.stdin.read() parser = Parser.Parser() message = parser.parsestr(mailstr) from_addr = message.get("from") if not user in from_addr: sys.exit(0) # 気休め程度にチェック subject_data = Header.decode_header(message.get("subject")) subject_strings = [] for str, charset in subject_data: if charset: str = unicode(str, charset) subject_strings.append(str) subject = "".join(subject_strings) body_charset = "iso-2022-jp" # 手抜き body = unicode(message.get_payload(), body_charset) tumblr = Tumblr(email=tumblr_email, password=tumblr_password) tumblr.write_regular(subject, body)
1ファイルにまとめちゃった。
当然ながら中継アドレスも他人に知られてはいけない。
なんか成功のステータスが201の仕様でHTTPErrorってことになってしまう。