TwitterAPIでRuby関連の話題をキャッチしたい時のサンプルコード

 

インターネットのおかげでほぼ人力ならぬほぼ独学でRubyの勉強を日々たんたんと進めて来られている訳ですが、ナウな情報(それかホットな情報かな?どちらにしろ古いか。)と云いますか、今の流行りと云いますか、そういう流れるものは、コミュニティに属さない形でのほぼ独学という学習形態ではなかなか掴みにくい部類に入ると思われます。ところがこれもインターネットのおかげで色々な情報を得る事ができるようになった訳です。
全国各地で行われてる個人クラスでの勉強会やセミナーもインターネットの賜物です。
ナウといえばTwitterです。おーい磯野、Twitterを使ってナウな情報を仕入れるスクリプトを作ろうぜー。というのが今回のネタです。
ところで、ほぼ独学というのは話のネタに対する話を膨張するための表現であって、ぼくは俺様系の人間ではないのでそこは勘違いしないで頂きたい。
常日頃からラッパーの方以上にいろいろな方に感謝している。そこんとこヨロシク。

今回はRuby OAuthと、Twitter Ruby Gemを使った2パターンを調べてみました。
TwitterのAPIから、GET search/tweets | Twitter Developers: を利用します。

参考サイトと各ドキュメントの紹介。

GET search/tweets | Twitter Developers:
https://dev.twitter.com/rest/reference/get/search/tweets

Documentation for oauth (0.4.7):
http://www.rubydoc.info/gems/oauth/0.4.7

Documentation for twitter (5.14.0):
http://www.rubydoc.info/gems/twitter

Ruby – OAuth gemだけでTwitter APIを使ってみる – Qiita:

ではまず何をするにもアクセスキーやらが必要になるので、apps.twitter.comで自分のアカウントを使って取得しておきましょう。やり方はぐぐってちょ。
使用しているURLについてはGET search/tweets | Twitter Developers:で調べます。

OAUTHを使ったサンプル

※引数でキーワードを指定します。

#! /usr/bin/env ruby
# coding: utf-8

require 'oauth'
require 'json'

consumer_key        = "ぐぐってちょ"
consumer_secret     = "ぐぐってちょ"
access_token        = "ぐぐってちょ"
access_token_secret = "ぐぐってちょ"

con = OAuth::Consumer.new(
  consumer_key,
  consumer_secret,
  site:'https://api.twitter.com/'
)

ep = OAuth::AccessToken.new(
  con,
  access_token,
  access_token_secret
)

#GET
keyword = ARGV[0]

res = ep.get("https://api.twitter.com/1.1/search/tweets.json?q=#{keyword}&count=1&result_type=popular")
result = JSON.parse(res.body)

result["statuses"].each do |message|
  puts message["user"]["name"]
  puts message["text"]
end

 

Twitterを使ったサンプル

#! /usr/bin/env ruby
# coding utf-8

require 'twitter'

client = Twitter::REST::Client.new do |config|
  config.consumer_key        = "ぐぐってちょ"
  config.consumer_secret     = "ぐぐってちょ"
  config.access_token        = "ぐぐってちょ"
  config.access_token_secret = "ぐぐってちょ"
end

client.search("ruby", result_type: "popular").take(1).each do |tweet|
  puts tweet.user.name
  puts tweet.text
end

Twitterを使った方がコンパクトにできますが、応用が効きそうなのはOAUTHな気がします。
このサンプルは中身はOAUTHはRubyを引数にする必要があるけど兼ね同じです。

実行結果。

OAUTH
$ ruby twbot.rb ruby
la Repubblica
Caso Ruby, "Nicole Minetti riceve ancora da Berlusconi un bonifico di 15mila euro al mese" http://t.co/Dbhf9Hkeoj http://t.co/LJ55nu41vw

TWITTER
$ ruby twbot_twgems.rb
la Repubblica
Caso Ruby, "Nicole Minetti riceve ancora da Berlusconi un bonifico di 15mila euro al mese" http://t.co/Dbhf9Hkeoj http://t.co/LJ55nu41vw

langをjaにすれば日本語のものに絞れますし、他にもユーザーも絞ったりすることもできるし、抽出できるキーは豊富にあるので、アイデア次第で何とでもなりそうだ。
何とでもなりそうで、HTMLが書けないと汎用性がガタ落ちな気がする。そこでRailsですよ。となるのかどうかはまた別のお話だろう。

 

Similar Posts:


Leave a Reply

Your email address will not be published. Required fields are marked *