[英]Streaming multiple users in Twitter API v2
我正在从 Twitter APIv1.1 迁移到 v2,并尝试通过其 id 过滤用户的 stream 推文。 我在 python 中使用twarc.client2.Twarc2
并以这种形式构建规则列表:
{'value': 'from:user1 or from:user2 or ...'}
我有超过一千个用户,由于根据 twitter API(因为我的帐户),每个规则都限制为 512 个字符,我将用户 ID 拆分为不同的规则。 在流式传输时,我以 37 秒的时间间隔更改规则,因为 API 限制在 15 分钟内仅添加 25 条规则。 到目前为止,我尝试过的大致是这样的:
def manage_streaming():
event = threading.Event()
thread1 = threading.Thread(target=streaming, args=(event,))
thread1.start()
index = 0
while True:
sleep(37)
update_rule(index)
index = 0 if index == max_index else index+1
if event.is_set():
break
其中流式 function 就像:
def streaming(event):
results = client.stream(event=event)
for result in results:
process_tweet(result)
和 update_rule function 就像:
def update_rule(i):
clear_rules()
add_rule(rules_2_add[i])
它工作正常,但所有用户大约需要 43 分钟才能完成流式传输并重新开始。 所以我的问题:
在 API v2 中是否有更好的方法来 stream 多个用户? 或者是否可以在每个端口中打开具有不同规则的多个流端口?
先感谢您。 所有建议表示赞赏。
编辑!!
我混合了 API 限制,我的帐户是必不可少的,所以我只能添加 5 条规则; 之后我可以同时或异步添加 5 条规则如果我想添加更多规则,我需要删除旧规则并等待 15 分钟,没有办法添加超过 5 条规则。 对于更多的用户来说,这仍然不是有效的。
在搜索了方法和方法后,我发现有两种可能的方法(不是以编程方式)来克服这个问题:
{'value': 'from:user_1_name or from:user_2_id or ...'}
有关帐户级别的更多信息: 官方页面
这是一个简单的例子,更多细节你可以访问以下网址
class TweetListener(tweepy.StreamingClient):
def on_tweet(self, tweet):
print(tweet.text)
stream = TweetListener(bearer_token=tw.bearer_token)
stream.add_rules(tweepy.StreamRule("from:username01 OR from:username02"))
stream.filter()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.