我有一个大约1500个twitter帐户的列表(可能有也可能没有发过推文),我想每隔20分钟检索最后一条(最多100条推文)。考虑到Twitter API v.2的速率限制,在不达到速率限制(https://developer.twitter.com/en/docs/twitter-api/rate-limits)的情况下,最有效的方法是什么?
据我所知,使用https://api.twitter.com/2/users/<twitter id>/tweets
并遍历1500个帐户以获得最后一条tweet是不可能同时从多个用户获取tweet的,这会使您达到每15分钟900个请求的速率限制。
是否存在可以这样做的批量请求?将它们全部添加到Twitter列表中并从那里获取最新的Twitter消息是唯一真正的选择吗?
我需要这个Node.js应用程序,但问题更多的是关于如何在Twitter API级别解决它。
Twitter搜索API在/2/tweets/search/all
上公开可用。也可以使用/2/tweets/search/recent
使用这个,您可以使用它们的OR
操作符一次从多个帐户的tweet中搜索:
(from:twitter OR from:elonmusk)
的回报:
{
"data": [
{
"id": "1540059169771978754",
"text": "we would know"
},
{
"id": "1540058653155278849",
"text": "ratios build character"
},
{
"id": "1539759270501023744",
"text": "RT @NASA: The landmark law #TitleIX opened up a universe of possibility for women, including Janet Petro, the 1st woman director of @NASAKe…"
},
// ...
注意,这有更严格的速率限制,并且您将限制在搜索中可以使用的字符数(可能是512)。
如果你需要的话,你可以从tweet.fields
中添加额外的author_id
字段。
如果你不能做到这一点,那么你可以组合API端点,因为速率限制应用于每个端点。例如,通过搜索端点搜索一半,通过单个用户端点搜索另一半。
如果这仍然不起作用,你是对的(从我发现的一切),你需要:
- 将缓存时间从20分钟增加到30-45分钟
- 创建列表