Я использую бот Twitter для забавных целей, используя Tweepy
.Как читать Twitter Streaming API и отвечать пользователю на основе определенного ключевого слова?
Что я пытаюсь закодировать, это бот, который отслеживает определенное ключевое слово и базирующийся в нем бот отвечает пользователю, который в твиттере данной строки.
Я рассмотрел возможность хранения потока Twitter в файле .json
и зацикливания объекта Tweet для каждого пользователя, но кажется непрактичным, поскольку получение потока блокирует программу в цикле.
Итак, как я могу отслеживать твиты с помощью Stream API Twitter, основанные на определенном ключевом слове, и отвечать пользователям, которые его в твиттере?
Текущий код:
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