ruby で twitter api を使用する

シェアする

ruby を使用したシステムで Twitter と連携したいなーと思ったので調べた。Twitter Ruy Gem を使うと良いらしい。使い方をメモしてみる。

sferik/twitter · GitHub

Sponsored Links

インストール

インストールは 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<
Sponsored Link

シェアする

フォローする