python - Tweepy MyStreamListener 即使在这个人没有发推文时也会被调用?
问题描述
我正在使用 StreamListener 制作一个 Tweepy 程序,该程序等待帐户发送推文,将推文保存为 txt 文件,替换字符,然后发送更新 txt 文件。
当我将帐户设置为我自己的@Bobwont 时,它工作正常。等待@Bobwont 发送推文,将推文保存为 txt 文件,替换字符并发送文本。
当我将帐户设置为@Zackfox 时,它似乎从他的个人资料中提取推文,而不是等待他发推文。我不知道该怎么解释。我已经发布了我的代码和终端进程。
如果您需要更多信息,请告诉我。
zabkfox.py:
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
if hasattr(status, 'retweeted_status'):
print('retweet')
else:
#print data
with open('tweet.txt','w') as tf:
tf.write(status.text)
with open('tweet.txt','r') as tf:
contents = tf.read()
newcontents = contents.replace('c','\U0001F171\uFE0F')
print(newcontents)
api.update_status(newcontents)
return True
def on_error(self, status):
print(status.text)
myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)
myStream.filter(follow=['1700626069'])
终端:
Documents/zabkfox/zabkfox.py
this is my twitter bot
retweet
retweet
@za️kfox I liked this and then unliked this. I had a good ️hu️kle. This is why I'm on twitter.
retweet
@za️kfox @bluefa️ebleedem Songs wa️k af
retweet
retweet
retweet
retweet
似乎只在他回复的推文中这样做。但无论如何,它不应该拉他的推文。它应该等他发推文。
解决方案
找到了一个修复:
原来它正在收集其他人回复他的推文。我只是添加了这个 elif 语句来解决它:
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
if hasattr(status, 'retweeted_status'):
print('retweet')
elif hasattr(status, 'in_reply_to_user_id'):
print('reply')
else:
#print data
with open('tweet.txt','w') as tf:
tf.write(status.text)
with open('tweet.txt','r') as tf:
contents = tf.read()
newcontents = contents.replace('c','\U0001F171\uFE0F')
print(newcontents)
api.update_status(newcontents)
return True
推荐阅读
- c++ - 不覆盖数组中的元素
- php - 如何用 Doctrine 解决实例问题?
- python - Python和dask:如何在worker上调用方法而不是函数?
- java - 如何在范围报告中打印 WebElement 变量名称?
- css - CSS 只粘在左边
- windows - 如何使用 Azure Cli 在 Azure Windows VM 上安装 IIS
- python - 两个时间序列的python聚合
- json - 如何将 slf4j-over-logback 日志编写为 JSON
- javascript - 如何定位嵌套对象并引用此属性?
- python - 使用 Python 的多个属性直接在字典或 json 对象中定位元素