kzfm’s trial and error

本腰いれてRubyやPHPを覚えていくブログ。

ツイートをリアルタイムに検索し取得する (Ruby)

OAuth対応だとか、数年間でAPIの様式がコロコロ変わった印象のTwitter
Rubyだとどう処理できるのか気になった。

Gem"Twitter" を使う

「特定のキーワードにマッチするツイートをリアルタイム取得する」方法。Twitterの検索は、データをリアルタイムに取得するAPIと、リアルタイムじゃないけど過去を含めて検索したりできるAPIの2通りがあって、今回はリアルタイム側を使う。

このモジュール1つで完結するのね…すげえ。

require "twitter"

client = Twitter::Streaming::Client.new do |config|
  config.consumer_key        = ""
  config.consumer_secret     = ""
  config.access_token        = ""
  config.access_token_secret = ""
end

keywords = "眠い,おやすみ"
options  = {
  :language => 'ja',
  :track    => keywords
}

client.filter(options) do |object|

  if object.is_a?(Twitter::Tweet)
    printf "%s / %s\n  %s\n\n",
      object.user.screen_name,
      object.user.name,
      object.text.gsub("\n", "\n  ")
  end

end

config部分はTwitterの開発者ページ*1の「Manage My Apps」からプログラム登録して設定する。

trackに指定しているキーワードは、カンマ区切りだとor検索、スペース区切りだとAND検索になる様子。その他の詳しいフィルタリングオプションは公式のAPI説明*2参照。