如何通过YouTube API获取所有总结果数据?

时间:2019-07-01 18:57:32

标签: youtube youtube-api

我正在使用Youtube Api来获取频道的所有视频详细信息

https://www.googleapis.com/youtube/v3/search?part=snippet,id&key=XXXXXXXX&channelId=UCq-Fj5jknLsUf-MWSy4_brA&order=date&maxResults=50

You can see response

在第一个响应中,我看到有761525个结果,也有nextPageToken,但是使用该下一个页面令牌,在该API没有给我任何结果之后,我最多可以获取300到400个视频详细信息。

还有其他获取所有视频详细信息的信息吗?还是我缺少什么?

2 个答案:

答案 0 :(得分:0)

对于任何搜索请求,YouTube都会返回500个视频的软限制。

如果totalResults中的内容不止这些,则可以使用 publishedAfter publishedBefore 过滤器拆分搜索查询,以按天/周/月等方式循环显示日期。 ,请确保每个“时间窗口”返回的值都小于500的限制。最终,您将获得所有结果。

答案 1 :(得分:0)

第一次请求API调用后,例如: https://www.googleapis.com/youtube/v3/search?part=snippet,id&key=XXXXXXXX&channelId=UCq-Fj5jknLsUf-MWSy4_brA&order=date&maxResults=50

您需要获取该(第一个)结果的nextPageToken参数,并将其提供给下一个(第二个)请求。假设第一个结果的nextPageToken是ABCDEFG,您的下一个请求必须是这样的: https://www.googleapis.com/youtube/v3/search?part=snippet&pageToken=ABCDEFG,id&key=XXXXXXXX&channelId=UCq-Fj5jknLsUf-MWSy4_brA&order=date&maxResults=50

看到代码段之后,我添加了&pageToken = ABCDEFG。然后,再次获取该(第二个)结果的参数nextPageToken的字符串,并将其提供给您的下一个(第三个)请求。因此,您需要使用while循环来执行此操作,直到nextPageToken为null,这意味着您已经击中了边框编号(在您的情况下为761525)。或者,您可以通过获得一定数量的结果来解决此问题。

摘要:

  1. 请求您的第一个API调用
  2. 循环播放
  3. 获取nextPageToken值
  4. 对于您的下一个请求,请在代码段后添加&pageToken =
  5. 在&pageToken =
  6. 之后写入nextPageToken的值
  7. 从第2步开始重复直到达到特定条件(直到获得所有结果或仅有一定数量的结果为止)