IT技術
PR

Streaming APIで遊んでみた コンソールにただ出力するだけ編

kawa.xxx
記事内に商品プロモーションを含む場合があります

じゅーん29さんの記事に刺激を受けて

自分でもTwitter の Streaming APIで遊んでみた!

Twitter の StreamingAPIってなんぞや?
っていう人も多いとおもうので,簡単に解説します.
間違ってたらごめんなさい.

従来のAPI と Streaming API

従来のAPIはデータを取得するたびにサーバに接続しデータをもらっていました.

それに対してStreamingAPIは一度接続したらエラーや回線の切断がない限り
Twitterのサーバが勝手にデータを送りつけてくれるというものです.

使用したサンプル

よーし!ガシガシかくぞー!

(「・ω・)「・・・

ワカンネ・・・

ということで先人の知恵を借りました.

しばそんノートさまのところに公開されていたソースを利用させていただきました.

Twitter側のURLが変更になっていたので,そこだけ変更してあります.

自分の遊んでみたコードは下記の通り.

# coding: utf-8
require 'net/http'
require 'uri'
require 'rubygems'
require 'json'
USERNAME = 'ゆーざあいでぃ' # ここを書き換える
PASSWORD = 'ぱすわーど' # ここを書き換える
uri = URI.parse('http://stream.twitter.com/1/statuses/filter.json')
Net::HTTP.start(uri.host, uri.port) do |http|
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data('track' => 'bit,')
request.basic_auth(USERNAME, PASSWORD)
http.request(request) do |response|
raise 'Response is not chuncked' unless response.chunked?
response.read_body do |chunk|
status = JSON.parse(chunk) rescue next
next unless status['text'] && status['text'].include?('http://bit.ly')
user = status['user']
puts "#{user['screen_name']}: #{status['text']}"
end
end
end

このスクリプトはツイート本文に”http://bit.ly”の文字列が入っているもの
のみをターミナルの画面にバーッと表示するだけなのですが,なんか楽しい!

ちょっと自分のTwitterIDのみのをバーッとだしてみよう!
ということで下記 ‘bit’ のところを自分のTwitterID ‘@kawa_xxx’ に変更し

request.set_form_data('track' => 'bit')
↓
request.set_form_data('track' => '@kawa_xxx')

次の一行をコメントアウトしました.

#next unless status['text'] && status['text'].include?('http://bit.ly')

そして実行すると,シーン....

そりゃそうですね.検索対象の言葉がTwitter上に流れてないんですもんねw
自分で自分に@飛ばしてきゃっきゃしてましたw

それから,検索対象の文字列を複数指定する場合は,下記の様にカンマ区切りで複数指定します.
コイツの文字数制限が1~60バイトらしいです.

request.set_form_data('track' => 'bit')
↓
request.set_form_data('track' => '文字列1,文字列2')

よーし!これを次はim.kayac.comに投げて遊ぶぞ!

ABOUT ME
kawa.xxx
都内のIT系企業に勤める会社員。自分の備忘録的なアウトプット用の場所で、ボルダリングやガシェッド、セキュリティ、カメラの話題が中心です。
記事URLをコピーしました