Ruby でツイートを取得してみる

前の記事で Rails で作成したアプリケーションに Twitter でログインを試しました。
TwitterAPI を使用してツイートを取得してみます。
(そもそもは TwitterAPI の使用ってこっちが目的なのではとも感じますし。)

目次

参考

実装

下準備

以下のコマンドで環境の用意をします。

1
2
3
4
5
# 適当なディレクトリを作成して
bundle init

#Gemfileに gem "twitter"を記述してから実行する
bundle install --path=vendor/bundle

実装

get_tweet.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
require "twitter"

# クライアント設定
client = Twitter::REST::Client.new do |config|
config.consumer_key = "YOUR_CONSUMER_KEY"
config.consumer_secret = "YOUR_CONSUMER_SECRET"
config.access_token = "YOUR_ACCESS_TOKEN"
config.access_token_secret = "YOUR_ACCESS_SECRET"
end

# タイムライン取得
# countの最大値は200 デフォルトは20
client.home_timeline({ count: 200 }).each do |tweet|
puts "#{tweet.user.name}[ID:#{tweet.user.screen_name}]"
puts tweet.full_text
end

bundle exec ruby get_tweet.rbで実行します。
実行すると自分自身のタイムラインを取得できます。

YOUR_CONSUMER_KEYYOUR_CONSUMER_SECRETなど 4 つのパラメータは twitter の developer アカウントの管理画面で取得します。

YOUR_ACCESS_TOKENYOUR_ACCESS_SECRETの二つは、Twitter 認証の完了時の情報の中に含んでいるので、こちらからも使用が可能でした。
巷にあふれるツイッター連携するアプリってこういう風に作っているんでしょうか。

他にも取得できる情報があったので、一部ですがまとめます。

実行可能なAPI
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# キーワードに対しての最近のツイートを取得
# 参考:https://rdoc.info/gems/twitter/Twitter/REST/Search#search-instance_method
# こちらのカウント数:countを設定できるがどうにも安定しないので、take(個数)とかで制限するほうが良かった
client.search('Ruby').take(10).each do |tweet|
# 参考:https://rdoc.info/gems/twitter/Twitter/Tweet
# ツイートのテキスト
puts tweet.text
# ツイートのURI
puts tweet.uri
# リツイート数
puts tweet.retweet_count
#ツイートがリツイートかどうか
puts tweet.retweet?
end

# ユーザーのID取得
puts client.user.id
# ユーザーのバナー画像URL取得
puts client.user.profile_banner_uri
# ユーザーのバナー画像に関するオブジェクトが取得できるサイズ別のURLなど
puts client.profile_banner
# ユーザーのアイコン画像URL取得
puts client.user.profile_image_uri
# ユーザーアカウント作成時刻の取得?
puts client.user.created_at
# ユーザーアカウント名の取得
puts client.user.name
# ユーザーのプロフィールの取得
puts client.user.description
# ユーザーの設定しているWebサイトの取得
puts client.user.website
# 色関係の取得
puts client.user.profile_background_color
puts client.user.profile_link_color
puts client.user.profile_sidebar_fill_color

# フォロワーのIDのリストを取得
puts client.follower_ids
# フォロワーのIDの1番目を取得
puts (client.follower_ids.to_a)[0]

# ツイート数っぽいですが、数字が小さすぎるので詳細不明
puts client.user.tweets_count

# トレンドの取得
puts client.trends


#ツイートする
# 参考:https://github.com/sferik/twitter/blob/master/examples/Update.md#update
#.updateメソッドでツイートできる
#.update_with_mediaメソッドで、画像を付けたツイートができる
client.update("TEST")
client.update_with_media("TEST with media", File.new("ファイルのパス"))


# プロフィールの更新 name、description以外にもまだある
client.update_profile({name: "新しいユーザー名"})
client.update_profile({description: "新しい自己紹介"})

今回は ruby から Twitter の API を触ってみました。
前回記事の認証を作った時、返り値で提供されている情報を見ていろいろできそうだと感じたのがきっかけではありましたが、なかなか良かったと感じます。
API はリクエスト回数の制限もあるので頻繁に実行できないものもありますが、ユーザー情報の取得は十分に使えました。
ただ、いまいち応答する API がわかりにくいとも感じました。
Rdoc と Twitter 本体の公開しているドキュメント、gem についての github のドキュメントを相互に読みながら進めるのがいいと感じます。

ではでは。