【2009/10/21:追記】
このエントリーで紹介しているYahoo!PipesはTwitterの規約に違反しているため、公開停止としました。詳しい解説は下記エントリーをご確認ください。
Twitter野良APIを停止しました。 [C!]
Twitter APIを使ったWEBサービスを運営していると、APIのアクセス回数制限に引っかかってしまう事もあると思います。
APIへのアクセス数残りはこちらで確認できます。
http://twitter.com/account/rate_limit_status.xml
んで、簡単な回避方法はないかと考えた結果、API制限の対象にならないWebページをスクレイピングしてデータを取得する方法を思い付きました。TwitGIFのTwitter API制限対策用に作った2つのPipesを紹介します。
Twitterのユーザーの最新発言20件を取得するPipes
Pipes: Twitter UserStatus(公開停止)
最新発言20件を取得するPipesです。ユーザIDを入れるとそのユーザの最新20件の発言が取得できます。発言時間が「about * hours ago」とかなっている場合は正確なデータが取得できない場合がありますが、その辺はご愛嬌。
APIが返す内容(JSONの場合)
{ count: 20 value: { items: [ { published: "4:11 PM Aug 12th" link: http://twitter.com/yager/status/3275183729 title: "TwitGIFのTwitter API制限対策を行いました http://bit.ly/12Uzjh" pubDate: "Wed, 12 Aug 2009 23:11:00" description: "TwitGIF のTwitter API制限対策を行いました <a rel="nofollow" target="_blank" href="http://bit.ly/12Uzjh">http://bit.ly/12Uzjh</a>" }, (snip) ] } }
titleにはアンカーなしの文字列が、descriptionにはURLや#ハッシュタグをアンカーに変換済みのHTMLが入っています。
公開停止していますので、動作例やサンプルコードは削除しました。
Twitterのユーザーのプロフィール画像を取得するPipes
Pipes: Twitter Profile Image(公開停止)
Twitterのユーザーのプロフィール画像を取得するPipesです。ユーザIDを入れるとそのユーザのプロフィール画像(大/中/小)が取得できます。
APIが返す内容(JSONの場合)
{ count: 1 value: { items: [ { mini: "http://s3.amazonaws.com/twitter_production/profile_images/213027021/yager_64px_mini.jpg", normal: "http://s3.amazonaws.com/twitter_production/profile_images/213027021/yager_64px_normal.jpg", bigger: "http://s3.amazonaws.com/twitter_production/profile_images/213027021/yager_64px_bigger.jpg" } ] } }
mini, normal, biggerにそれぞれサイズごとの画像URLが入っています。
公開停止していますので、動作例やサンプルコードは削除しました。
まとめ
これらのPipesは、APIの制限回避のために作ったので、それ以外のメリットがあるかというと微妙なところです。WEBページのスクレイピングを使っているのでTwitterのリニューアルで使えなくなる可能性もあります。変更にはなるべく早くフォローしていくつもりですが、その辺ご理解頂いた上でご利用ください。