python - 从 Twitter 流中排除回复 - tweepy

标签 python api twitter streaming tweepy

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

例如,如果我想从 Donald Trump 中提取实时推文然后回复 Donald Trump,我会使用:

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()

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

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

在此先感谢您的帮助。

最佳答案

  • 您可以添加条件以仅直接响应来自 follow id 的推文。
  • 这应该只允许对关注的帐户做出回应。
  • 因此在这种情况下,仅当关注的帐户回复时,才会对 tweetId 做出响应。
  • 对于多个用户,使用 in 测试包容性:
    • 如果 user_id 在 [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)

关于python - 从 Twitter 流中排除回复 - tweepy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63542654/

相关文章:

python - MySQL: django.db.utils.OperationalError: (1698, "Access denied for user ' root' @'localhost' ") with correct username and pw

javascript - axios 授权 header 仅适用于获取请求

android - 当我的应用程序在 Android 中运行时,如何打开 Wifi?

android - 百分号导致 Twitter 应用程序崩溃

python - 使用 print (", ".join(my_array)) 提取单个字符串并将其添加到 Streamlit Markdown 中。我没有得到字符串,而是没有得到任何东西

python - 亚马逊网络服务 (AWS) 上的 Django

Python Peewee - 将 Peewee 合并到具有缺少 ID AUTO_INCREMENT 字段的表的现有数据库中

javascript - 带有 SoundManager 的 Soundcloud API 不返回peakData

api - Vuex 和路由 - 登录后重定向

javascript - 对 Twitter 的简单 jQuery getJSON 调用