TwitterAPI/StreamingAPI
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*目次 [#m579fb68]
#contents
*参考情報 [#y3bb4c2c]
-[[Streaming API Documentation | dev.twitter.com:http://d...
-[[Twitter Streaming APIをRubyで試してみる - しばそんノー...
-[[RubyからTwitterStreamingAPIを使うgem作ったよ! - yayug...
*基本 [#b89d8901]
-BASIC認証で使える。一つのアカウントで一つのみ。
-OAuthでも使えるらしい([[OAuth で Streaming API - 記録用:...
-全てのデータがとれるわけではない。firehose, gardenhose, ...
-[[Twitter Streaming API を gardenhose レベルで利用する -...
*パラメータ [#ma7dfd37]
** track [#zb88381a]
[[Streaming API: Methods | dev.twitter.com:http://dev.twi...
#pre{{
Specifies keywords to track. Phrases of keywords are spec...
Exact matching on phrases, that is, keywords with spaces,...
}}
-トラックするキーワードを指定する。キーワードのフレーズは...
-カンマ区切りのキーワードは論理OR("the, twitter")。
-フレーズは論理AND。フレーズ内の単語はスペースで区切られ...
-フレーズのどれかに一致すればtweetは一致したとみなされる。
-フレーズはすべての語がtweetの中に出現すれば一致したとみ...
-スペースが含まれるキーワードの性格なマッチはサポートされ...
-句読点が含まれるキーワードは(句読点以外の)項目だけがマッ...
-#と@はマッチしない。
-CJKやArabicは現在はサポートされない。
-UTF-8はマッチする(?)
*レスポンス [#o0e1aecd]
*Rubyのサンプルコード [#zeca8442]
#pre{{
#!/usr/bin/env ruby
# coding: utf-8
require 'net/http'
require 'uri'
require 'rubygems'
require 'json'
USERNAME = '_USERNAME_' # ここを書き換える
PASSWORD = '_PASSWORD_' # ここを書き換える
# URLが変更になってるみたい(2010/07/22)
#uri = URI.parse('http://stream.twitter.com/spritzer.json')
uri = URI.parse('http://stream.twitter.com/1/statuses/sam...
Net::HTTP.start(uri.host, uri.port) do |http|
request = Net::HTTP::Get.new(uri.request_uri)
# Streaming APIはBasic認証のみ
request.basic_auth(USERNAME, PASSWORD)
http.request(request) do |response|
raise 'Response is not chuncked' unless response.chun...
response.read_body do |chunk|
# 空行は無視する = JSON形式でのパースに失敗したら次へ
status = JSON.parse(chunk) rescue next
# 削除通知など、'text'パラメータを含まないものは無...
next unless status['text']
user = status['user']
puts "#{user['screen_name']}: #{status['text']}"
end
end
end
}}
*Tweepy(Python)のサンプルコード [#r2370c91]
#pre{{
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import tweepy
import simplejson
#from pit import Pit
class StreamListener(tweepy.StreamListener):
def on_data(self, data):
data = simplejson.loads(data)
if data.has_key('text'):
print data['text']
def main():
user = 'xxxxx'
passwd = 'yyyyy'
stream = tweepy.Stream(user, passwd, StreamListener())
stream.filter(track=('#nhk',))
if __name__ == "__main__":
main()
}}
streaming.pyで処理が行われている。
#pre{{
def filter(self, follow=None, track=None, async=False):
params = {}
self.headers['Content-type'] = "application/x-www...
if self.running:
raise TweepError('Stream object already conne...
self.url = '/%i/statuses/filter.json?delimited=le...
if follow:
params['follow'] = ','.join(map(str, follow))
if track:
params['track'] = ','.join(map(str, track))
self.body = urllib.urlencode(params)
self._start(async)
}}
終了行:
*目次 [#m579fb68]
#contents
*参考情報 [#y3bb4c2c]
-[[Streaming API Documentation | dev.twitter.com:http://d...
-[[Twitter Streaming APIをRubyで試してみる - しばそんノー...
-[[RubyからTwitterStreamingAPIを使うgem作ったよ! - yayug...
*基本 [#b89d8901]
-BASIC認証で使える。一つのアカウントで一つのみ。
-OAuthでも使えるらしい([[OAuth で Streaming API - 記録用:...
-全てのデータがとれるわけではない。firehose, gardenhose, ...
-[[Twitter Streaming API を gardenhose レベルで利用する -...
*パラメータ [#ma7dfd37]
** track [#zb88381a]
[[Streaming API: Methods | dev.twitter.com:http://dev.twi...
#pre{{
Specifies keywords to track. Phrases of keywords are spec...
Exact matching on phrases, that is, keywords with spaces,...
}}
-トラックするキーワードを指定する。キーワードのフレーズは...
-カンマ区切りのキーワードは論理OR("the, twitter")。
-フレーズは論理AND。フレーズ内の単語はスペースで区切られ...
-フレーズのどれかに一致すればtweetは一致したとみなされる。
-フレーズはすべての語がtweetの中に出現すれば一致したとみ...
-スペースが含まれるキーワードの性格なマッチはサポートされ...
-句読点が含まれるキーワードは(句読点以外の)項目だけがマッ...
-#と@はマッチしない。
-CJKやArabicは現在はサポートされない。
-UTF-8はマッチする(?)
*レスポンス [#o0e1aecd]
*Rubyのサンプルコード [#zeca8442]
#pre{{
#!/usr/bin/env ruby
# coding: utf-8
require 'net/http'
require 'uri'
require 'rubygems'
require 'json'
USERNAME = '_USERNAME_' # ここを書き換える
PASSWORD = '_PASSWORD_' # ここを書き換える
# URLが変更になってるみたい(2010/07/22)
#uri = URI.parse('http://stream.twitter.com/spritzer.json')
uri = URI.parse('http://stream.twitter.com/1/statuses/sam...
Net::HTTP.start(uri.host, uri.port) do |http|
request = Net::HTTP::Get.new(uri.request_uri)
# Streaming APIはBasic認証のみ
request.basic_auth(USERNAME, PASSWORD)
http.request(request) do |response|
raise 'Response is not chuncked' unless response.chun...
response.read_body do |chunk|
# 空行は無視する = JSON形式でのパースに失敗したら次へ
status = JSON.parse(chunk) rescue next
# 削除通知など、'text'パラメータを含まないものは無...
next unless status['text']
user = status['user']
puts "#{user['screen_name']}: #{status['text']}"
end
end
end
}}
*Tweepy(Python)のサンプルコード [#r2370c91]
#pre{{
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import tweepy
import simplejson
#from pit import Pit
class StreamListener(tweepy.StreamListener):
def on_data(self, data):
data = simplejson.loads(data)
if data.has_key('text'):
print data['text']
def main():
user = 'xxxxx'
passwd = 'yyyyy'
stream = tweepy.Stream(user, passwd, StreamListener())
stream.filter(track=('#nhk',))
if __name__ == "__main__":
main()
}}
streaming.pyで処理が行われている。
#pre{{
def filter(self, follow=None, track=None, async=False):
params = {}
self.headers['Content-type'] = "application/x-www...
if self.running:
raise TweepError('Stream object already conne...
self.url = '/%i/statuses/filter.json?delimited=le...
if follow:
params['follow'] = ','.join(map(str, follow))
if track:
params['track'] = ','.join(map(str, track))
self.body = urllib.urlencode(params)
self._start(async)
}}
ページ名: