Twitter の User Streams を眺めてみた

更新: User StreamsのURLが変わったので修正しました。


TwitterAPI Documentationを眺めてゐたらStreaming APIとやらが気になった。

Streamingと聞くと何もしなくても勝手に流れてきさうなイメージがあるのですが、まさにその通りで数分おきにいちいちAPIを叩かなくてもtweetが流れてきます。

で、さうなるとやってみたくなるのがhome_timelineの取得。
現在ベータ版の機能としてUser StreamsというAPIが提供されており、home_timelineに相当するデータが容赦なく流れてきます。home_timelineと違ふところは、tweetだけでなくfavoriteやfollowなどの情報までリアルタイムに流れてくることです。


早速このAPIを使ってみようとググってみると、認証でBASIC認証を使ってゐる記事ばかりでがっかり*1

ただ、OAuthが使へないといふわけではないので
ChirpUserStreamがOauth認証で使えたり未だにdeleteイベントが流れてきたりする件
を参考にOAuth認証で使用してみました。

上記の記事のソースコードはGistで公開されてゐる(gist: 462891 - GitHub)ので、forkして自分用に弄ったものも公開しました(gist: 550448 - GitHub)。
変更した所は出力に色つけたりhttps使ふやうにしたくらゐなので、処理はほとんど変はってゐません。
詳しく説明する必要はなささうですが、OAuthに必要なtokenは各自で念力とかで取得してください。権限はreadonlyで十分です。


これでUser Streamsを眺める環境が整ったのですが、普段40秒間隔でTLを更新してゐるやうな人だとあまり更新が速くは見えないかもしれません。
それだと面白くないといふ人は、下記のやうに修正してみると幸せになれるかも。

58a59
>     params["replies"] = "all"
60c61
<     sig = make_signature(params, chirp_url, "GET", csecret, atoken_secret)
---
>     sig = make_signature(params, chirp_url, "POST", csecret, atoken_secret)
61a63
>     del params["replies"]
63a66
>     req.add_data("replies=all")

勘のいい人は予想が付くかもしれませんが、こんな感じでパラメータにreplies=allを付けると「普段は表示されないリプライ」まで表示されるやうになります。乗り物酔いを起こしたら元に戻しませう。

あるいはfavoriteやfollowなどのイベントだけ表示させておくのも便利かもしれません。これは56, 57行目をコメントアウトするだけで済みます。

*1:「えーマジ Basic Auth !?」「キモーイ」 この記事を書いた時点(9/1)で既にBasic Authは廃止されてゐます。Streaming APIはどうなのか知らないけど。