从 Twitter 流中排除回复 - tweepy

我正在使用 tweepy 从 Twitter 的流媒体 API 中提取推文。然后我用它来自动回复那个用户。


例如,如果我想从中提取实时推文然后回复唐纳德特朗普,我使用:


import tweepy

from tweepy import Stream

from tweepy.streaming import StreamListener


import json


class StdOutListener(StreamListener):

    def on_data(self, data):

        clean_data = json.loads(data)

        tweetId = clean_data["id"]

        tweet = "YOUR MESSAGE HERE"

        respondToTweet(tweet, tweetId)


def setUpAuth():

    auth = tweepy.OAuthHandler("consumer_token", "consumer_secret")

    auth.set_access_token("access_token", "Access_token_secret")

    api = tweepy.API(auth)

    return api, auth


def followStream():

    api, auth = setUpAuth()

    listener = StdOutListener()

    stream = Stream(auth, listener)

    stream.filter(follow=["25073877"], is_async=True)


def respondToTweet(tweet, tweetId):

    api, auth = setUpAuth()

    api.update_status(tweet, in_reply_to_status_id=tweetId, auto_populate_reply_metadata=True)


if __name__ == "__main__":

    followStream()

如果你运行我上面的代码,你会注意到它确实回复了唐纳德特朗普,但也回复了他的推文的所有新回复


我需要添加什么才能从流中排除对他的推文的回复?


在此先感谢您的帮助。


陪伴而非守候
浏览 109回答 1
1回答

胡子哥哥

您可以添加条件以仅直接从followid 响应推文。这应该只允许对所关注的帐户做出响应。tweetId因此,在这种情况下,仅当关注的帐户回复时才会回复。对于多个用户,测试包含in:if user_id in [25073877, id2, id3,...]:class StdOutListener(StreamListener):    def on_data(self, data):        clean_data = json.loads(data)        tweetId = clean_data["id"]        user_id = clean_data['user']['id']        tweet = 'Trying to figure out this code to answer a question on SO, just ignore this'        if user_id == 25073877:            print('Tweeting a reply now')  # optional            respondToTweet(tweet, tweetId)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python