2007/04/16
曇のち雨
[Projects::itread] It Read! - Twitterで自分が発言したメッセージを取得+Amazonリンクを作成
自分が管理してるマンガ感想サイト向けに、Twitterに自分が書き込んだテキストを取り込んで表示する(ついでに、ASINやISBNが書かれていたらAmazonから書影を引っ張ってアサマシ用リンクを生成する)perlのスクリプトを作りました。
せっかくなのでここで公開しておきます。
→It Read! (07/04/16版)
※実行するにはLWP::UserAgent, JSONモジュールが必要です
これを実行するとtwitter.txtというファイルができるので、それを何らかの手段で表示してやれば良いです。マンガ感想サイト(blosxomで運用中)の方では、テキストファイルの中身を表示するblosxom のプラグインを作って表示してます。スクリプトの実行は普通にcronで。
以下、これを作った時に気になったポイント。
・user_timeline で取得できないメッセージがある
自分自身の発言の取得は Twitter API の user_timeline を使っているのですが、発言したはずのメッセージがAPI経由では取得できないケースが(わりと頻繁に)発生します。原因は不明。
時間が経つと取得できることもあるので、反映されるまでにタイムラグがあるのかも知れません。
・user_timeline で取得できないメッセージも、friends_timeline からだと取得できる
friends_timeline で最近の友達メッセージを取得した場合、user_timeline では漏れる自分のメッセージも取得することができます。friends_timeline の方が信頼性が高いみたい。
ただし friends_timeline は直近の20発言しか取得できないので、頻繁にメッセージが流れがちな friends_timeline では確実に自分の発言が取得できる保証がないのが(今回のアプリでは)問題。
仕方がないので、とりあえず
- user_timeline を呼び出して自分のメッセージを取得
- friends_timeline を呼び出してメッセージを取得、そこから自分のメッセージ($item->{user}->{name}が自分の名前のもの)だけを抽出
- IDをキーにしてマージ、発言時刻を降順にソートして出力
というやり方で自分のメッセージを取得してます。まだ友達が少ないので、今のところ取りこぼしはないです。
早くuser_timelineだけでメッセージが確実に取れるようになるといいなあ。