【问题标题】:Tweepy MyStreamListener is called even when the person isn't tweeting?Tweepy MyStreamListener 即使在这个人没有发推文时也会被调用?
【发布时间】:2019-01-31 01:41:58
【问题描述】:

我正在使用 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

似乎只在他回复的推文中这样做。但无论如何,它不应该拉他的推文。它应该等他发推文。

【问题讨论】:

    标签: python twitter tweepy


    【解决方案1】:

    找到了解决办法:

    原来它正在收集其他人回复他的推文。我只是添加了这个 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
    

    【讨论】:

      猜你喜欢
      • 2017-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-09
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 2018-11-20
      相关资源
      最近更新 更多