如何从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 Data API v3 获取最大搜索结果?
带有 Google PHP SDK 的 YouTube API - 以 JSON 格式响应