今回は、フィルターストリームを使って、リストに登録されているユーザのストリーミングを行います。
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演算での絞り込みのようです。
ストリームイベントの処理は変わりませんので割愛します。