我正在尝试使用Tweepy创建一个Twitter机器人,该机器人将搜索我的时间轴上的tweet,并找到与特定关键字(“ brexit”)匹配的tweet,然后转发这些tweet。我的开发者帐户与我要转发的帐户相同。
我相信,我已经遵循了本书的所有内容。这是我的代码:
import tweepy
from tweepy import OAuthHandler
import time
auth = tweepy.OAuthHandler("XXX", "XXX")
auth.set_access_token("XXX", "XXX")
api = tweepy.API(auth)
class listener(tweepy.StreamListener):
def on_status(self, status):
print("Tweet arrived!")
print("Authors name: %s" % status.author.screen_name)
status.retweet()
time.sleep(10)
def on_error(selfself, status_code):
if status_code == 420:
return False
keywords = ["brexit"]
def search_tweets():
api = tweepy.API(auth)
tweetlistener = listener()
stream = tweepy.Stream(tweepy.api.home_timeline(), listener = tweetlistener)
stream.filter(track=keywords)
search_tweets()
但是,我收到以下错误消息:
Traceback (most recent call last):
File "C:/Users/borde/Documents/PythonProjects/brexitbot/botcode.py", line 29, in <module>
search_tweets()
File "C:/Users/borde/Documents/PythonProjects/brexitbot/botcode.py", line 26, in search_tweets
stream = tweepy.Stream(tweepy.api.home_timeline(), listener = tweetlistener)
File "C:\Users\borde\AppData\Local\Programs\Python\Python37-32\lib\site-packages\tweepy\binder.py", line 245, in _call
method = APIMethod(args, kwargs)
File "C:\Users\borde\AppData\Local\Programs\Python\Python37-32\lib\site-packages\tweepy\binder.py", line 44, in __init__
raise TweepError('Authentication required!')
tweepy.error.TweepError: Authentication required!
我尝试重置密钥,以确保它们没有超时,但是仍然无法正常工作。我还尝试过更改侦听器类,以便只打印找到的推文,而不是转发它们。
我对此完全陌生,我们将不胜感激。
谢谢。
答案 0 :(得分:0)
如果您查看documentation,将会看到该Stream
调用的第一个参数应该是您实例化的api对象的auth属性:
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)
您只是实例化了TWICE API,而根本没有使用它。从search_tweets
删除重复的行,并实例化流,如下所示:
stream = tweepy.Stream(auth=api.auth, listener = tweetlistener)
P.S。您传递的是实例而不是类,请使用c / p代替函数:
def search_tweets():
stream = tweepy.Stream(auth=api.auth, listener=listener)
stream.filter(track=keywords)
顺便说一句,您应该以大写字母开头的类命名,将class listener(tweepy.StreamListener):
更改为class Listener(tweepy.StreamListener):
,在我刚刚提供的代码中,listener=Listener
。