2013年7月4日木曜日

Ruby2.0でTwitterStreamingAPI (1.1) を使う

2014/11/21 追記
Ruby2.0でTwitterStreamingAPI (1.1) を使う(改)」にtweetstreamを使う方法を書きました。
下記でも動作しますが、より効率の良いこちらもご覧ください。


これまで、PerlでStreamingデータを収集していたのですが、API1.1になったのを機会にRubyに移行しました。以下、動作までの覚え書きです。

投稿や検索は、gem で Twitterライブラリをインストールすれば、簡単に使えます。

ところが、このライブラリでは StreamingAPIには対応していないようです。
To access the Twitter Streaming API, we recommend TweetStream.
とのことだったので、TweetStreamを見てみました

ところがこちらにも
Note: TweetStream does not currently work with Ruby 2.0, this is a known issue.
という記載があります。
そこで、さらに内部で使用しているらしいEM-Twitterを使ってみました

ところが、これは実行時にライブラリが足りないらしく、なにやらDevelopperKitうんぬんとメッセージが表示されます。gemだけで使いたいので、これも不採用としました。


 上記の調査から既存ライブラリの使用は断念し、TwitterStreamingAPI を直接http接続から使用する方法をとることにしました。
 探してみると、以下のようなものがありました。3つのプログラムコードはほとんど同じです。



上記のページを参考にしながら、次のような変更を施しました。
1.CONSUMER_KEY、ACCESS_TOKENなど
 自分で用意したものに変更しました。

2.request["User-Agent"]
 自分の都合に合わせて変更しました

3.接続先
 「GET statuses/sample
を使いたかったので、接続先を
  https://stream.twitter.com/1.1/statuses/sample.json
に変更しました

4.サーバ証明書
 これは、本来は必要なんでしょうが、実験で使用するプログラムであることから、証明書なしで動作させるために
  https.verify_mode = OpenSSL::SSL::VERIFY_NONE
としました
(将来的な動作を保証するものではありません)

※必要なライブラリは、適宜gemからインストールしました

以上で、基本動作の確認が出来ました。あとは、それぞれの都合に合わせて修正して使います。

※2013/07/04時点の調査です。