読者です 読者をやめる 読者になる 読者になる

pythonでtwitterのstreaming apiから日本語ツイートを取得する

basic認証だけで行けるので結構簡単です.
getJapaneseTweetsは引数個の日本語ツイート(json)をsimplejsonで辞書に変換して,そのリストを返します.
文字参照をデコードし直してるのはツイート本文だけになってます.

#! /usr/bin/env python
# encoding=utf-8

import urllib2
import base64
import simplejson
import re

STREAM_URL = 'https://stream.twitter.com/1/statuses/sample.json'
USERNAME = 'username'
PASSWORD = 'userpassword'

def getJapaneseTweets(length, username=USERNAME, password=PASSWORD) :
	req = urllib2.Request(STREAM_URL, headers={
		'Authorization':
		'Basic %s' % (base64.encodestring('%s:%s' % (username, password))[:-1])
	})
	
	tweets = []
	while True :
		ua = urllib2.urlopen(req)
		for line in ua:
			tweet = simplejson.loads(line)
			try :
				tweet['text'] = tweet['text'].encode('utf-8').decode('utf-8', 'xmlcharrefreplace')
			except KeyError :
				tweet['text'] = ''
	
			if tweet['text'] and isJapanese(tweet['text']):
				tweets.append(tweet);
				if len(tweets) == length :
					return tweets
		time.sleep(30)

def isJapanese(text) :
	return  re.search(u'[ぁ-んァ-ヴ]', text)

if __name__ == '__main__' :
	print getJapaneseTweets(1)[0]['text']