今回は、フィルターストリームを使って、リストに登録されているユーザのストリーミングを行います。
filterメソッドを使うと、指定された条件にマッチしたステータスを取得することが出来ます。
import tweepy CONSUMER_KEY = '(コンシューマキー)' CONSUMER_SECRET = '(コンシューマシークレット)' ACCESSS_TOKEN = '(アクセストークン)' ACCESS_SECRET = '(アクセストークン シークレット)' class ListStream(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(ListStream, self).__init__() if __name__ == '__main__': try: auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESSS_TOKEN, ACCESS_SECRET) api = tweepy.API(auth) me = api.me() lst = api.lists_all()[0] follow = [] for page in tweepy.Cursor(api.list_members, owner_id=me.id, list_id=lst.id).pages(): for user in page: follow.append(user.id_str) stream = tweepy.Stream(auth, ListStream(), secure=True) stream.filter(follow=follow) except tweepy.TweepError as e: print(e.reason)
filterメソッドには、パラメータとしてfollower, track, locationのいずれかを指定する必要があります。
ここでは、先頭のユーザリストに登録したユーザのリストをfollowerパラメータに指定してリストのストリーミングを行います。
カーソルを使ってリストに登録されている全てのユーザIDのリストを生成します。(33~35行目)
(リストに登録されているユーザが多いとここでエラーになりますのでご注意を)
生成したリストをfilterメソッドのfollowerパラメータに指定するだけです。
これ以外にもtrackパラメータでキーワード、locationパラメータで緯度経度を矩形範囲で指定しての絞り込みも出来ます。
trackキーワードはOR演算での絞り込みのようです。
ストリームイベントの処理は変わりませんので割愛します。