如何在tweepy的流媒体API中使用'count'参数?
当我在调用 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
错误的原因——因为你处于“默认访问”角色。