[python]携帯メールからTwitterを更新する

携帯メールからTwitterのステータスを更新したいと思い、ぐぐってみたら俺的にストライクな書き込みを発見してしまった。
そのままでは動かなかったので、最近のPython Twitterに合わせて、ちょっぴり機能を追加したので、公開してみます。



#!/usr/bin/env python

from email.Header import Header, decode_header
import twitter, sys, email

uid = "TWITTER_ID"
pw = "TWITTER_PASSWORD"
from_addr = "KEITAI_EMAIL_ADDRESS" #email account to receive from

data = ""
for line in sys.stdin:
data = data + line

mail = email.message_from_string(data)

#Check for correct from address
if from_addr != mail.get('From'):
sys.exit(0) # Wrong email - ignore

for part in mail.walk():
type = part.get_content_maintype()
if type and type.find("text") != -1:
enc = part.get_charsets()[0] or "us-ascii"
message = unicode(part.get_payload(), enc, "ignore")

message = message.strip()[:140]
api = twitter.Api(uid, pw)
status = api.PostUpdate(message)



オリジナルからの変更点は:
- from_addrの追加。携帯のメールアドレスを入れておくと、このアドレスから受信した時のみ、Twitterに更新をかける。
- messageをstrip()して最大140文字までとした -> Twitterの仕様です。
- api.PostUpdate()の呼び方をpython-twitter0.5に合わせた。

参考:
元ネタ(mojo.jp/blogさん)
python-twitter

動作確認環境:
Ubuntu Hardy Heron Server + postfix

コメント

人気の投稿