[python]携帯メールからTwitterを更新する
携帯メールからTwitterのステータスを更新したいと思い、ぐぐってみたら俺的にストライクな書き込みを発見してしまった。
そのままでは動かなかったので、最近のPython Twitterに合わせて、ちょっぴり機能を追加したので、公開してみます。
オリジナルからの変更点は:
- from_addrの追加。携帯のメールアドレスを入れておくと、このアドレスから受信した時のみ、Twitterに更新をかける。
- messageをstrip()して最大140文字までとした -> Twitterの仕様です。
- api.PostUpdate()の呼び方をpython-twitter0.5に合わせた。
参考:
元ネタ(mojo.jp/blogさん)
python-twitter
動作確認環境:
Ubuntu Hardy Heron Server + postfix
そのままでは動かなかったので、最近の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
コメント