【问题标题】:Twitter Streaming API: only show tweets directed at a user and tweets from a userTwitter Streaming API:仅显示针对用户的推文和来自用户的推文
【发布时间】:2021-11-17 04:23:59
【问题描述】:

我使用 Twitter 流 API 来检索某个用户写的推文。为此,我使用

stream.filter(follow=['user_id'])

但是,我不仅得到了这个用户 ID 的推文,而且我猜还回复、转推(?),我不太确定我得到的所有这些推文是什么,但实际上我只想得到那些该单个用户撰写的推文。有没有办法可以排除其他消息?

另外,我想获取所有针对此人的推文,以及所有提及此帐户的推文。因此,我会使用。但是,在这里我遇到了同样的问题,因为我收到了很多不仅符合此标准的推文。

stream.filter(track=["@screen_name"])

我读到我可能会实现类似的东西

def on_status(self, status):
    if status.retweeted_status:
        return
    print(status)

但我什至不知道代码到底给了我什么,也不知道我必须排除什么,所以如果你能帮助我解决我的问题,我将非常感激。

【问题讨论】:

标签: python twitter tweepy twitter-streaming-api python-twitter


【解决方案1】:

这是一个示例,您可以在其中使用start_twitter_stream 函数流式传输@elonmusk 发布的状态:

from tweepy import API, OAuthHandler, Stream, errors
import os


TARGET_SCREEN_NAME = 'elonmusk'

class TweetListener(Stream):

    def on_status(self, status):
        if status.user.screen_name == TARGET_SCREEN_NAME:
            print(status.text)


def get_twitter_auth():
    auth = OAuthHandler(
        os.environ['TWITTER_CONSUMER_KEY'],
        os.environ['TWITTER_CONSUMER_SECRET'])
    auth.set_access_token(
        os.environ['TWITTER_ACCESS_KEY'],
        os.environ['TWITTER_ACCESS_SECRET'])
    print('Authenticated with Twitter API')
    return API(auth)

def get_user_id(screen_name):
    api = get_twitter_auth()
    try:
        user = api.get_user(screen_name=username)
        return user.id_str
    except errors.Forbidden:
        print(f'@{TARGET_SCREEN_NAME} has been suspended')
        return None

def start_twitter_stream():
    target_user_id = get_user_id(TARGET_SCREEN_NAME)
    if target_user_id is None: return
    stream = TweetListener(
        os.environ['TWITTER_CONSUMER_KEY'],
        os.environ['TWITTER_CONSUMER_SECRET'],
        os.environ['TWITTER_ACCESS_KEY'],
        os.environ['TWITTER_ACCESS_SECRET'])
    print(f'Started streaming from @{TARGET_SCREEN_NAME}')
    stream.filter(follow=[target_user_id])

参考资料:

【讨论】:

    猜你喜欢
    • 2021-11-19
    • 1970-01-01
    • 2021-09-20
    • 2015-02-21
    • 2016-07-03
    • 1970-01-01
    • 2014-01-18
    • 2013-04-09
    • 2014-06-18
    相关资源
    最近更新 更多