Twitter User Streams APIを使ってみる
やってみようやってみよう思いながらずっとやっていなかったTwitterのUser Streams APIを使ってみました。こうやってまたRuby熱が再燃してるのは札幌Ruby会議03に参加したおかげです。やっぱりあぁいうイベントに参加するとモチベーションが高まりますねー。本来はそのモチベーションをいつも維持しなきゃいけないのかも知れないけれど、まぁ、頑張ります。
で、あちこちのWebサイトを参考にしながら作ったのが以下。多分Tweet以外のイベントも取得出来ると思うんだけど、ソレは次回の課題として、とりあえずFriends_timelineのTweetを取得して流しっぱなしにします。
タイムラインを流し読みするのは楽しいのですねぇ。特定のキーワードだけ色変えたり太字にして表示とか出来ると面白そうだな。このAPIを使った次のステップも考えてみようと思います。
続きを書きました→Twitter User Streams APIを「より一層」使ってみる
で、あちこちのWebサイトを参考にしながら作ったのが以下。多分Tweet以外のイベントも取得出来ると思うんだけど、ソレは次回の課題として、とりあえずFriends_timelineのTweetを取得して流しっぱなしにします。
タイムラインを流し読みするのは楽しいのですねぇ。特定のキーワードだけ色変えたり太字にして表示とか出来ると面白そうだな。このAPIを使った次のステップも考えてみようと思います。
#!/usr/bin/ruby -Ku
require 'rubygems'
require 'oauth'
require 'net/https'
require 'json'
# OAuth 認証データ
CONSUMER_KEY = "HOGEHOGE"
CONSUMER_SECRET = "HOGEHOGE"
ACCESS_TOKEN = "HOGEHOGE"
ACCESS_TOKEN_SECRET = "HOGEHOGE"
consumer = OAuth::Consumer.new(
CONSUMER_KEY,
CONSUMER_SECRET,
:site => 'http://twitter.com'
)
token = OAuth::AccessToken.new(
consumer,
ACCESS_TOKEN,
ACCESS_TOKEN_SECRET
)
# http://dev.twitter.com/pages/user_streams
uri = URI.parse('https://userstream.twitter.com/2/user.json')
begin
# userstreamにはSSLでアクセスする
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
https.verify_mode = OpenSSL::SSL::VERIFY_PEER
https.verify_depth = 5
# 接続先サーバのルートCA証明書をダウンロードしてきて指定
https.ca_file = './ca.cer'
https.start do |https|
req = Net::HTTP::Get.new(uri.request_uri)
req.oauth!(https, consumer, token)
https.request(req) do |res|
res.read_body do |chunk|
# chunked = falseなら例外を発生
raise 'Response is not chunked' unless res.chunked?
# JSONのパースに失敗したらスキップして次へ
status = JSON.parse(chunk) rescue next
# textパラメータを含まないものはスキップして次へ
next unless status['text']
user = status['user']
puts "@" + "#{user['screen_name']}: #{status['text']}"
end
end
end
rescue
print "RuntimeError: ", $!, "\n";
end
続きを書きました→Twitter User Streams APIを「より一層」使ってみる
島田 浩二,設樂 洋爾,村田 賢太,前田 智樹,谷口 文威
翔泳社
売り上げランキング: 94811
翔泳社
売り上げランキング: 94811