なんだか mixi に twitter連携機能がついてたみたいですけど、その存在を知らずに twitter から mixi voice へ転送するスクリプトを作った。作ったというか以前使用してた物が使えなくなったので作り直した。
多分、普通のtwittererが連携使うとマイミクのvoice欄を埋め尽くす事になって非常にアレな感じになりそうなので(機能の詳細を見てないのでアレですけど)、細かく設定できる自作スクリプトのほうが良い感じかもしれない。
今回は twitter の rss を mechanize で voice へ投稿するようにしてる。twitter api を使用しない形なのでプロテクトな人は使えません。自分はプロテクトにする気は無いので api数を減らさない方法にしてます。
スクリプト起動する都度mixiにログインするので、cronで5分間隔にしておけば常にログイン時間5分以内になるおまけつき!
というわけで以下コード
import os
import mechanize
import feedparser
LOGFILE = '/home/ryomatsu/.tw2mixi.py.log'
email = 'your login email address'
passwd = 'your password'
twitter_feed = 'your twitter feed'
footer = ' via tw2mixi.py'
br = mechanize.Browser()
br.open('http://mixi.jp')
br.select_form(name='login_form')
br['email'] = email
br['password'] = passwd
br.submit()
f = feedparser.parse(twitter_feed)
if os.path.exists(LOGFILE):
log = open(LOGFILE).read()
if len(log) == 0:
maxid = 0
else:
maxid = int(log)
else:
maxid = 0
for i in sorted(f.entries):
id = int(i.id.split('/')[-1])
if maxid < id:
open(LOGFILE, 'w').write(str(id))
text = ':'.join(i.title.split(':')[1:])[1:]
# 50文字以下のつぶやきは転送しない。
if len(text) < 50:
continue
# @入りは転送しない。
if text.find('@') >= 0:
continue
br.open('http://mixi.jp')
br.select_form(nr=0)
br['body'] = (text + footer).encode('euc-jp')
br.submit()