如何在tweepy的流媒体API中使用'count'参数?

3 投票
1 回答
3199 浏览
提问于 2025-04-16 23:53

当我在调用 filter() 时不加 count 参数时,我可以正常使用流式 API,但一旦我想指定想要接收多少条历史推文时,我的流对象就返回了 None

import tweepy
from tweepy.streaming import StreamListener, Stream

class Listener (StreamListener):
    def on_status(self, status):
        print '-' * 20
        print status.text
        return

def get_tweets(request):
    # if request.is_ajax():
    # All keys and secrets are declared here, but were removed for security reasons.

    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
    api = tweepy.API(auth)
    listener = Listener()
    stream = Stream(auth, listener)
    stream.filter(follow=("14739093",), count=-5)

我还尝试了以下方法,看看它返回了什么。

>>> something = stream.filter(follow=("14739093",), count=-5)
>>> print something
None

谢谢你的帮助!

1 个回答

9

Stream.filter 这个功能总是返回 None,它的作用只是把数据传递给 StreamListener

你遇到的问题是,Twitter 只允许某些“角色”使用 count 参数。

像 Firehose、Links、Birddog 和 Shadow 这些客户端,如果想要捕捉所有的状态更新,应该保持对每秒接收到的状态数量的最新估计,并记录最后一个状态接收的时间。当重新连接时,客户端就可以估算出需要请求的合适的积压数据量。注意,count 参数在其他地方是不能使用的,包括 track、sample 和默认访问角色。

这就是你在尝试使用 count 参数时收到 413 错误的原因——因为你处于“默认访问”角色。

撰写回答