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だけでメッセージが確実に取れるようになるといいなあ。

Posted at 11:58 | WriteBacks (0) | permalink
WriteBacks
TrackBack ping me at
http://fukaz55.main.jp/projects/itread/itread.trackback
Post a comment

writeback message: Ready to post a comment.















Syndicate this site (XML)  Subscribe with Bloglines  Subscribe with livedoor Reader    blosxom 2.0.2