如何使用tweepy收听@mention的新微博?

问题描述 投票:0回答:1

我是一个新的tweepy新手,我试图实现一个api,可以监听@mention或屏幕名的新微博。并试图实现一个api,可以监听一个@mention或屏幕名称的新微博。

tweets = api.user_timeline(screen_name=username)

但它没有监听新的微博。请你帮我理解如何实现,让每当一条带"@mention "的推文出现时,api应该立即监听。

twitter tweepy
1个回答
0
投票

首先,使用以下方法获取他们的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

0
投票

创建一个StreamListener

Tweepy的StreamListener的on_data方法方便地将状态的数据传递给on_status方法。创建继承自StreamListener的类MyStreamListener,并覆盖on_status。

import tweepy

覆盖tweepy.StreamListener为on_status添加逻辑。

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.

0
投票
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)
© www.soinside.com 2019 - 2024. All rights reserved.