前提・実現したいこと
Pythonにおいて、TwitterAPI、Tweepyを使用して、特定ワードが含まれるツイートをリアルタイムでストリーミングしようとしています。
該当のソースコード
Python
1import config # APIのKEYなどを記述してる 2import tweepy 3 4 5class MyStreamListener(tweepy.StreamListener): 6 def on_status(self, status): 7 j = status._json 8 # RT, mention, replyを除く 9 if ("retweeted_status" not in j.keys()) and (j["in_reply_to_status_id"] is None) and (j["entities"]["user_mentions"] == []): 10 print("-" * 50) 11 print(j['text']) 12 13 def on_error(self, status_code): 14 if status_code == 420: 15 # returning False in on_error disconnects the stream 16 return False 17 18 def on_timeout(self): 19 print('Timeout...') 20 return True 21 22 23# Twitterのユーザー名からユーザーIDを取得する 24def get_user_id(api, user_name): 25 if user_name[0] == "@": 26 user_name = user_name[1:] 27 user_info = api.get_user(user_name) 28 return user_info.id_str 29 30 31CK = config.API_KEY 32CS = config.API_SECRET_KEY 33AT = config.ACCESS_TOKEN 34ATS = config.ACCESS_TOKEN_SECRET 35 36auth = tweepy.OAuthHandler(CK, CS) 37auth.set_access_token(AT, ATS) 38api = tweepy.API(auth) 39 40listener = MyStreamListener() 41myStream = tweepy.Stream(auth=api.auth, listener=listener) 42follow = [] 43track = ["プログラミング", "Google"] # 特定ワードのリスト 44myStream.filter(follow=follow, track=track, is_async=True) 45
試したこと等
機能としては、上記のコードで正しく動作しているのですが、指定するワードが英語のときと日本語のときで感度が全く異なります。
具体的には、英語を指定した場合は、高頻度でツイートが表示されるのですが、日本語を指定した場合は、ほとんどのツイートを拾ってくれません。
単純に絶対量の差はあると思うのですが、直接Twitterで検索をかけて最新ツイートを監視していても、やはり日本語を指定した場合は、反映されないツイートが多く存在します。
これは、Tweepyの仕様なのでしょうか。
有識者の方の見解を伺いたいです。
追記(2021/06/17)
Node.jsでも試してみましたが、やはり日本語を指定した場合、ツイートの拾い残しが結構多かったです。
詳しくはわからないのですが、TwitterAPIの仕様ということになるんですかね。
補足情報(FW/ツールのバージョンなど)
Python: 3.8.5
tweepy: 3.10.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/17 04:34
2021/06/18 13:39