twitter4r

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”だからなぁ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です