配列の値が壊れる!?
kawa.xxx
kawalog
じゅーん29さんの記事に刺激を受けて
自分でもTwitter の Streaming APIで遊んでみた!
Twitter の StreamingAPIってなんぞや?
っていう人も多いとおもうので,簡単に解説します.
間違ってたらごめんなさい.
従来の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に投げて遊ぶぞ!