我试图创建一个非常具体的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/
答案 0 :(得分:0)
好的,解决了。它正在开始工作,我犯了两个错误:
要解决406错误所有必须要做的事情,就是使用Twitter id而不是Twitter名称。
听众显然什么都不做,因为我发送的是“大”推文,也就是推文超过140个字符。在这种情况下,您不应使用status.text
,而应使用status.extended_tweet['full_text']
您必须检查extended_tweet
的存在,如果它不在收到的状态,那么您应该使用text