mazinlabsのブログ

RubyとかCloudとかその辺の記事を書いたり書かなかったり

RubyでTwitter Streaming APIを使ってみる1

その昔TwitterAPIを使ってBOTを作ろうとしたことはあったが、Twitter4Rを利用するところまでやってBOTのコンセプトが決まらなかったのでやめた。


で、今回また何かしようと思って調べた所、最近のTwitterはStreaming APIを利用すればこちらからPullしなくてもTwitter側から自動的にPushされるらしい。


The Streaming APIs | Twitter Developers


そんなわけで今回はTwitterのStreaming APIを使ってみた。
とりあえず手始めに使ったのはEM-TwitterというGemライブラリ。
tweetstream/em-twitter · GitHub

Twitter Streaming APIからのイベント(Push)が来ると自動的に動作するClientを実装できるらしい。
そこのサンプルに載っていたコードを元に書いたのが下のソースコード



サンプルでは、Filterを用いてTwitterのTLから"yankees"という単語を拾ってきていたが、ここでは"Ruby"という単語を含むTweetがあった場合にそのテキストを出力している。
ちなみに1行目の文字コード指定をしていないとRuby1.9系ではデフォルト文字コードがUS-ASCIIのため日本語でフィルタリングができない(プログラムが動かない)ので日本語を扱う際には必要である。


Twitter Streaming APIの機能を全て使おうとした場合はOAuthが必要になるので、コンシュマーやトークンの設定を行う必要がある。
設定は以下のページからログインを行い右上のアイコンをクリックして"My Application"のページから新規アプリケーションを作成すると発行される。


Twitter Developers


また、Twitter側から自動的に送られてくるレスポンスはJSON形式のため、サンプルを少し拡張して、レスポンスをJSONのパーサーに通すことで、データアクセスの利便性を上げている。


これで無事にサンプルが動いたので、次はもう少し簡単に書けるらしいTweetStreamを試してみる予定。