その昔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側から自動的に送られてくるレスポンスはJSON形式のため、サンプルを少し拡張して、レスポンスをJSONのパーサーに通すことで、データアクセスの利便性を上げている。
これで無事にサンプルが動いたので、次はもう少し簡単に書けるらしいTweetStreamを試してみる予定。