The jonki

呼ばれて飛び出てじょじょじょじょーんき

Twitter Streaming API

以前Twitterのデータマイニングフィードを与えられてましたが、ここ数日調子が良くない。
今まで600件取れてたのに20件しか取れなくなってしまいました。

TwitterのDevelopment Teamにメール投げたところ…
「Streaming APIつかえや( ^ω^)」と帰って来ました。
なんていうかデータマイニングフィード軽く流されましたが、さっそく使ってみることに。

いくつかタイプがあるみたいです。
Streaming API Documentation
とりあえず制約なしで使えるspritzerを試してみることに。


ではLet's Access
http://stream.twitter.com/spritzer.json

おお、確かにストリーミングデータですね!
パッと見た感じでは結構取得できてそう。

ということでさっそくデータマイニングフィードと比較。
今まで1分で600件でしたが、このspritzerでは90秒ほどかかりました。
# 実行時間の計測は結構適当なんでばらつきはあるかも。

[結論]
なかなかに使える。


以下今回のソース
# BasicAuth.pyは過去の記事参照
◆spritzer.py


#!/usr/bin/python
# -*- coding: utf-8 -*

#@author Junki OHMURA
#@date 2009/05/26

import BasicAuth
import simplejson as json
import sys, os

from datetime import datetime
#Basic認証
realm = "Firehose"
host = "http://stream.twitter.com/spritzer.json"
usrname = "user"
passwd = "pass"
basiApi = BasicAuth.BasicAuthentication(realm, host, usrname, passwd)


cont = basiApi.get("http://stream.twitter.com/spritzer.json")
i=1
start = datetime.now()
while 1:
s = cont.readline()
if not s:
break
obj = json.loads(s)
print i
print obj['id']
print obj['text']
print obj['created_at']
user = obj['user']
print user['id']
print user['name']
print
i = i+1
if(i==600):
end = datetime.now()
break

print "TIME"
print end -start