Ruby2.3&Twitter Ruby GemでTwitterキーワード検索を試す


だいぶ前に書いた記事のアップデート版です。
2016/4/1時点での最新版のRuby2.3とTwitter Ruby GemでTwitterキーワード検索の動作確認しました。

環境

サンプルコード

Twitter_KeywordSearch.rb
#!/bin/env ruby
#encoding:UTF-8
require "twitter"

# アプリケーションキー(consumer key/secret)の読み込み
# OAuth アクセストークンの読み込み
@client = Twitter::REST::Client.new do | cnf |
  cnf.consumer_key = "****************************************"
  cnf.consumer_secret = "****************************************"
  cnf.access_token = "****************************************"
  cnf.access_token_secret = "****************************************"
end

# 変数の初期化
since_id = 0
counter = 0

# 無限ループ
while counter == 0  do
    begin
      # 引数で受け取ったワードを元に、検索結果を取得し、古いものから順に並び替え
      # ※最初はsince_id=0であるため、tweet ID 0以降のTweetから最新のもの上位100件を取得
       @client.search(ARGV[0], count: 100, result_type: "recent").take(100).reverse.collect do |tweet|

        # Tweet ID, ユーザ名、Tweet本文、投稿日などなど・・・を1件づつ表示
        p tweet.user.id
        p tweet.user.screen_name
        p tweet.user.description
        p tweet.user.location
        p tweet.text
        p tweet.retweet_count
        p tweet.favorite_count
        p tweet.geo
        p tweet.place
        p tweet.source
        p tweet.created_at
        print("\n")

        # 取得したTweet idをsince_idに格納
        # ※古いものから新しい順(Tweet IDの昇順)に表示されるため、
        #  最終的に、取得した結果の内の最新のTweet IDが格納され、
        #  次はこのID以降のTweetが取得される
        since_id=tweet.id
      end

    # 検索ワードで Tweet を取得できなかった場合の例外処理
    rescue Twitter::Error::ClientError
      # 60秒待機し、リトライ
      sleep(60)
      retry
    end
    sleep(60)
end

実行

% ruby Twitter_KeywordSearch.rb 検索ワード