ストリーミングAPIは大きく分けて3種類あります。
- Public Streams
- User Streams
- Site Streams
今回はユーザストリームを使ってみます。
tweepyではストリームクラス StreamListener を継承したクラスで配信されたステータスを扱います。
import tweepy
CONSUMER_KEY = '(コンシューマキー)'
CONSUMER_SECRET = '(コンシューマシークレット)'
ACCESSS_TOKEN = '(アクセストークン)'
ACCESS_SECRET = '(アクセストークン シークレット)'
class HomeStream(tweepy.streaming.StreamListener):
def on_status(self, status):
print('-------------------------------------------------------------------')
print('name:' + status.author.name)
print(status.text)
def on_error(self, status_code):
print('error:' + str(status_code))
if status_code == 420:
return False
def __init__(self):
super(HomeStream, self).__init__()
if __name__ == '__main__':
try:
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESSS_TOKEN, ACCESS_SECRET)
stream = tweepy.Stream(auth, HomeStream(), secure=True)
stream.userstream()
except tweepy.TweepError as e:
print(e.reason)
StreamListenerを継承したHomeStreamを作成し、userstreamメソッドを実行することでストリームAPIを使用することが出来ます。
配信されたステータスはon_statusメソッドで処理します。
他にもオーバライドできるメソッドがありますが、on_connect以外のメソッドでFalseを返すことで、ストリームを終了することが出来ます。
サンプルでは、on_errorのみ実装していますが、パラメータstatus_codeが420を返す場合、再接続アルゴリズムが間違っている場合がありますので、Falseでストリーミングを終了するようにしたほうがいいでしょうね。