Twitter 如何使用tweepy收听新推文以获得@提及?
我是特威比的新手。并尝试实现一个api,它可以监听新推文中的@提及或屏幕名称Twitter 如何使用tweepy收听新推文以获得@提及?,twitter,tweepy,Twitter,Tweepy,我是特威比的新手。并尝试实现一个api,它可以监听新推文中的@提及或屏幕名称 tweets = api.user_timeline(screen_name=username) 但它并没有听到新的推特。你能帮我理解一下它是如何实现的吗?这样每当一条推特上出现“@title”。api应该立即侦听首先,使用获取他们的twitter用户id。 然后,使用以下命令: from tweepy import OAuthHandler from tweepy import Stream from tweepy
tweets = api.user_timeline(screen_name=username)
但它并没有听到新的推特。你能帮我理解一下它是如何实现的吗?这样每当一条推特上出现“@title”。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
创建StreamListener
Tweepy的StreamListener的on_数据方法方便地将数据从状态传递到on_状态方法。
创建类MyStreamListener,该类继承自StreamListener并在\u状态下重写
import tweepy
重写tweepy.StreamListener以将逻辑添加到on_状态
创建流
需要一个API来流式传输用于身份验证的正确凭据。一旦有了API和状态侦听器,我们就可以创建流对象
myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)
起始流
异步流
处理错误
track=['python']将收集与'python'匹配的所有tweet。但是我需要所有包含@antify.'follow=id'的tweets将所有活动检索到用户id。我的目标是找到实时tweets。在上面的回答中,当您重写on_status函数时,有没有办法再进行一次检查以过滤tweet。请执行以下操作:
python uname=tweet.user.screen_name uname='@'+uname if uname in tweet.text:print(“使用给定的标签搜索时,此tweet中会提到用户”)
一个简单的字符串匹配。如果用户在tweet中被提及,这将打印该消息。谢谢,但如果没有此检查,我们也可以从status对象收集tweet
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)