ruby を使用したシステムで Twitter と連携したいなーと思ったので調べた。Twitter Ruy Gem を使うと良いらしい。使い方をメモしてみる。
インストール
インストールは gem を使うのが手っ取り早い。
$ gem install twitter
初期設定
以下のように Twitter アプリの Consumer Key と Consumer Secret, ユーザの Access Token, Access Token Secret と共に Twitter::REST::Client を new する。
client = Twitter::REST::Client.new do |config|
config.consumer_key = CONSUMER_KEY
config.consumer_secret = CONSUMER_SECRET
config.access_token = ACCESS_TOKEN
config.access_token_secret = ACCESS_TOKEN_SECRET
end
Consumer Key と Consumer Secret は Twitter Application Management よりアプリを作成し、取得可能。
Twitter Application Management
Access Token と Access Token Secret はユーザ毎に取得する必要があるが開発者自身のトークンであれば上記のアプリ設定画面にある Keys and Access Tokens より取得可能です。自分しか使わない Twitter Bot などであればそれで十分でしょう。
アプリの所有者と運用するユーザが違う場合且つユーザが自分のものであれば get-twitter-oauth-token を使うと楽に取得できます。これも gem でインストールできます。
jugyo/get-twitter-oauth-token · GitHub
Twitter API を 扱う
client を設定したらあとは以下のように Twitter API にアクセスする事ができます。
ツイートする
ツイートするには update メソッドを使おう。
client.update("I thought what I'd do was, I'd pretend I was one of those deaf-mutes")
メソッド名が update なのは Twitter API で投稿する際の URL が statuses/update だからだろう。
フォロー/アンフォローする
フォローとアンフォローは以下の通り、わかりやすいメソッド名だ。メソッドの引数はユーザ名(screen_name)かユーザIDを取れる。
# follow
client.follow("ryomatsu")
client.follow(4037051)
# unfollow
client.unfollow("ryomatsu")
client.unfollow(4037051)
ユーザを取得する
user メソッドでユーザの情報を取得する。フォロー時と同じようにユーザ名かユーザIDを指定できる。
user = client.user("ryomatsu")
返り値は User オブジェクトとなる。以下のような感じにユーザの情報へアクセスできる。
user.id # ユーザのID
user.screen_name # ユーザ名
user.protected? # ユーザがプロテクト状態かどうか
user.tweets_count # ユーザのツイート数を取得
user.followers_count # フォロワーの数
user.friends_count # フォローしている数
タイムラインを取得する
以下のメソッドを使う事で各種タイムラインを取得する。
tl = client.home_timeline # 自分のタイムラインを取得
tl = client.user_timeline("ryomatsu") # 指定したユーザのタイムラインを取得
tl = client.mentions_timeline # メンションを取得
以下のようにやればタイムラインを表示できる。
client.home_timeline.each do |tweet|
puts tweet.user.screen_name + ':' + tweet.text
end
検索する
検索は search を使う。
client.search('loumo.jp').each do|tweet|
puts tweet.user.screen_name + ':' + tweet.text
end<