ruby用twitterライブラリ。Botを作るのに使ってみた。
詳細はTwitter4R v0.3.0: Open Source Ruby Client Library for the Twitter REST APIを参照。
まとめ
- “gem install twitter4r”でインストール
- YAMLファイルにログインユーザ名、パスワードを記述
- Twitter::Client.timeline_forでタイムライン取得。パラメータに:friendを指定するとFollowing込みのタイムラインを取得できる
- Twitter::Client.statusで発言する
インストール
gem install twitter4r
公式には上のコマンドになっているけど、うちのマシンでやると”Bulk updating Gem source index for: http://gems.rubyforge.org“で止まったままになるので直接gemをダウンロードしてきてインストール。jsonが必要なので先にインストール。
gem install json-1.1.2.gem
gem install twitter4r-0.3.0.gem
ユーザ認証
YAMLファイルを作成してそこにユーザ名とパスワードを書く。
test:
login: hoge
password: hogehoge
prod:
login: foo
password: bar
作成したファイルは以下のように読み込む。同時にtwitterクライアントのインスタンスを取得。
twitter = Twitter::Client.from_config(config_file, "prod")
この例では”prod”を指定しているので”foo”の方でログインする。
必ずファイルに生パスワード書かないといけないのかどうかがよくわからんかった。irb用のHelperとは書いてあるのだけれども、他にログイン用のメソッドがあるのかな?
タイムラインの読み込み
timeline_forでタイムラインを取得。引数に:friendを指定するとログインユーザのFollowingを含めたタイムラインを取得ができる。他には:publicでパブリックタイムライン、:meで自分の発言のタイムラインを取得可能。引数を追加すると発言を絞り込める(id, since等)。当然twitter APIの制限を受けるので1時間に70回しか使えない。
twitter.timeline_for(:friend).each { |friend|
if /@foo/ =~ friend.text
twitter.status(:post, "@" + friend.user.screen_name + " " + message)
end
}
取得したタイムラインから各ユーザの発言を取り出す時は、friend.textが各ユーザの発言、friend.user.screen_nameがユーザ名になる。
発言
statusの引数に:postを指定して第二引数に発言内容を指定する。
twitter.status(:post, "@" + friend.user.screen_name + " " + message)
感想
JavascriptでAPI直叩きのときよりはるかに簡単で使いやすい。Botの基本動作作るのに2時間もかからなかったのは満足。一番時間がかかってたのが”gem install twitter4r”だからなぁ。