我是一个新的tweepy新手,我试图实现一个api,可以监听@mention或屏幕名的新微博。并试图实现一个api,可以监听一个@mention或屏幕名称的新微博。
tweets = api.user_timeline(screen_name=username)
但它没有监听新的微博。请你帮我理解如何实现,让每当一条带"@mention "的推文出现时,api应该立即监听。
首先,使用以下方法获取他们的twitter用户ID 这个. 然后,使用这个。
from tweepy import OAuthHandler
from tweepy import Stream
from tweepy import StreamListener
listener = StreamListener()
auth = OAuthHandler(config.API_KEY, config.API_SECRET)
auth.set_access_token(config.ACCESS_TOKEN, config.ACCESS_TOKEN_SECRET)
stream = Stream(auth, listener)
stream.filter(follow=['1102105048253849600']) # user ID for random account
Tweepy的StreamListener的on_data方法方便地将状态的数据传递给on_status方法。创建继承自StreamListener的类MyStreamListener,并覆盖on_status。
import tweepy
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
print(status.text)
需要一个API来流与正确的凭证进行验证。一旦我们有了一个API和一个状态监听器,我们就可以创建我们的流对象。
myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)
myStream.filter(track=['python'])
myStream.filter(follow=["2211149702"])
myStream.filter(track=['python'], is_async=True)
class MyStreamListener(tweepy.StreamListener):
def on_error(self, status_code):
if status_code == 420:
#returning False in on_error disconnects the stream
return False
# returning non-False reconnects the stream, with backoff.
def on_data( self, status ):
print("Entered on_data()")
print(status.text, flush = True)
return True
...
user = api.verify_credentials()
# this is just for getting user. without this also connection can be established
if user:
print(user.id)
print('started')
twitter_stream=Stream(auth,StdOutListener())
print('Stream created...')
twitter_stream.filter(follow=[user.id_str], is_async=True)