私は楽しい目的のためにTweepy
を使ってTwitterボットを実装しています。TwitterのストリーミングAPIを読んで、特定のキーワードに基づいてユーザーに返信するにはどうすればいいですか?
私がコードしようとしているのは、特定のキーワードを追跡し、それに基づいてボットが与えられた文字列でツイートしたユーザーに返信するものです。
私は、.json
ファイルにTwitterのストリームを格納し、すべてのユーザーにTweetオブジェクトをループすることを検討しましたが、ストリームを受信するとループ上のプログラムをロックするので実用的ではありません。
TwitterのストリームAPIで特定のキーワードに基づいてつぶやきを追跡し、それをツイートしたユーザーに返信するにはどうすればよいですか?
現在のコード:
from tweepy import OAuthHandler
from tweepy import Stream
from tweepy.streaming import StreamListener
class MyListener(StreamListener):
def on_data(self, data):
try:
with open("caguei.json", 'a+') as f:
f.write(data)
data = f.readline()
tweet = json.loads(data)
text = str("@%s acabou de. %s " % (tweet['user']['screen_name'], random.choice(exp)))
tweepy.API.update_status(status=text, in_reply_to_status_id=tweet['user']['id'])
#time.sleep(300)
return True
except BaseException as e:
print("Error on_data: %s" % str(e))
return True
def on_error(self, status):
print(status)
return True
api = tweepy.API(auth)
twitter_stream = Stream(auth, MyListener())
twitter_stream.filter(track=['dengue']) #Executing it the program locks on a loop
あなたは単にあなたの* on_data *関数内のことを行うことはできません* MyListener? – SpiXel
@SpiXel APIを正しく使用する方法がわかりません。私はAPIの経験があまりありません – ovrwngtvity
@SpiXelああ、私は理解することができたと思う。 on_dataメソッドは、Twitterのストリームを受信しながら実行されます。私はそれがちょうどランダムな名前だと思った。私は私が意図していることを達成できると思う。 – ovrwngtvity