使用tweepy从特定用户获取关键字

时间:2018-04-30 23:57:24

标签: python twitter tweepy

我试图创建一个非常具体的Twitter帐户(我的)的监听器,所以我可以做一些自动化,如果我用特殊的"特别的"最后的代码(可能是像" ..."这样的字符)它会触发一个动作,比如将以前的字符添加到数据库中。

所以,我使用Tweepy并且我能够创建监听器,过滤关键字等等,但它会过滤掉所有Tweetverse中的关键字。这是我的代码:

import tweepy

cfg = { 
    "consumer_key"        : "...",
    "consumer_secret"     : "...",
    "access_token"        : "...",
    "access_token_secret" : "..." 
    }

auth = tweepy.OAuthHandler(cfg['consumer_key'], cfg['consumer_secret'])
auth.set_access_token(cfg['access_token'], cfg['access_token_secret'])
api = tweepy.API(auth)

class MyStreamListener(tweepy.StreamListener):
    def on_status(self, status):
        print(status.text)
        return True

    def on_error(self, status):
        print('error ',status)
        return False

myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth=auth, listener=myStreamListener)

myStream.filter(track=['…'])

它将过滤包含" ..."的所有消息。无论是谁写的,所以我在最后一行添加了参数follow='',如:

myStream.filter(follow='myTwitterName', track=['…'])

它总是给我一个406错误,如果我使用myStream.userstream('myTwitterName')它会给我,不仅仅是我写的推文,还包括我的整个时间轴。

那么,我做错了什么?

修改

我发现了第一个错误。我使用的是用户的屏幕名称,而不是Twitter ID。现在我摆脱了406错误,但仍然无法正常工作。我将Twitter ID放在follow参数中,但绝对没有。我尝试了这两种方式,我的帐户以及一个过于生活的帐户,就像CNN(ID = 759251)一样,我看到我的浏览器中有新的推文,但听众没有。

如果您对了解自己的Twitter ID感兴趣,我使用了这项服务:http://gettwitterid.com/

1 个答案:

答案 0 :(得分:0)

好的,解决了。它正在开始工作,我犯了两个错误:

  • 要解决406错误所有必须要做的事情,就是使用Twitter id而不是Twitter名称。

  • 听众显然什么都不做,因为我发送的是“大”推文,也就是推文超过140个字符。在这种情况下,您不应使用status.text,而应使用status.extended_tweet['full_text']

  • 您必须检查extended_tweet的存在,如果它不在收到的状态,那么您应该使用text