如何从Youtube API(搜索API)响应中获取所有结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Youtube API(搜索API)响应中获取所有结果相关的知识,希望对你有一定的参考价值。

像标题一样。我这样做了一个请求:

https://www.googleapis.com/youtube/v3/search?key=AIzaSyDuxczhyyvHWfxKuF3ygW9p0GWmKlvWLYc&part=id,snippet&publishedAfter=2014-12-09T00:00:00Z&publishedBefore=2014-12-11T00:00:00Z&videoCategoryId=GCSG93LXRvICYgRElZ&type=video&maxResults=50&pageToken=

总结果是1000000.但我最多可以获得500个结果(10页,50个结果/页)。在第10页,我没有看到nextPageToken属性转到下一页。 ???我不知道为什么。我怎样才能得到所有结果。

答案

YouTube规定了约500的软限制。没有直接的方法可以通过API获得更多。

详细信息:https://code.google.com/p/gdata-issues/issues/detail?id=4282

相关摘录:

“如果没有搜索结果的质量严重降低(重复等),我们无法通过API为任意YouTube查询提供超过500个搜索结果。

v1 / v2 GData API在11月更新,以限制返回到500的搜索结果数。如果指定500或更高的开始索引,则不会获得任何结果。

这应该对v3 API(使用不同的分页结果方法)生效,但显然没有被推出,所以仍然可以在v3中检索多达1000个搜索结果 - 最后500个其中通常质量很差。

将v3限制为500个搜索结果的更改将在不久的将来推出。一旦达到500个结果,将不再返回nextPageTokens。

我知道在所有这些情况下返回的totalResults远远高于500,但这与说我们可以有效地返回所有X万个可能的结果不同。它意味着估计与查询匹配的视频集的总大小,通常不是很有用。“

更新 - 如何绕过500结果最大软限制

使用过滤器'publishedAfter'和'publishedBefore'按日/周/月将查询分解为查询循环,直到不再返回结果为止。每个定期查询应该返回少于500个结果,但你会得到它们全部。

另一答案

顺便提一下channelId的文档(仍然不适用于videoCategoryId

https://developers.google.com/youtube/v3/docs/search/list#channelId

Note: Search results are constrained to a maximum of 500 videos if your request specifies a value
for the channelId parameter and sets the type parameter value to video, ...

以上是关于如何从Youtube API(搜索API)响应中获取所有结果的主要内容,如果未能解决你的问题,请参考以下文章

youtube-api 搜索响应 (java)

如何从 Youtube Data API v3 获取最大搜索结果?

带有 Google PHP SDK 的 YouTube API - 以 JSON 格式响应

如何从 Youtube API V3 中检索经过验证的频道?

本周搜索新的音乐视频 youtube api

从 YouTube API 响应中选择特定键