ストリーミング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でストリーミングを終了するようにしたほうがいいでしょうね。