如何使用videoId和playlistId获取playlistItem超出maxResults范围?

时间:2016-08-18 15:02:32

标签: youtube-api youtube-data-api

videoIdplaylistId未检索到

PlaylistItem。当它不在maxResults范围内时会发生这种情况。

你会得到项目的数据低于查询。

GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=3&playlistId=PLLALQuK1NDrgb03P3lIgK7SrBdYbuh4_5&videoId=H4lRmVy_qYc&key={YOUR_API_KEY}

这次你无法获得物品。

GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=2&playlistId=PLLALQuK1NDrgb03P3lIgK7SrBdYbuh4_5&videoId=H4lRmVy_qYc&key={YOUR_API_KEY}

Try it here

唯一不同的是maxResults的数量。 playlistItem的索引为3,因此无法检索。

除非我试图获得超出maxResults最大数量的PlaylistItem,否则很好。但我必须这样做。它让我很沮丧。

有解决方法吗?

1 个答案:

答案 0 :(得分:1)

API的这种行为实际上非常令人困惑,我不希望这样的事情发生。毕竟,documentation for the maxResults parameter州:

  

maxResults参数指定应在结果集中返回的最大项目数。

由于视频在播放列表中两次,因此应假设maxResults参数设置为2或3或任何高于此值的请求将返回两个项目。

可能的解决方法

我真的不明白为什么你不能将maxResults参数提升到50,但这样可行:

首先,获取播放列表中所有视频的列表(不含videoId参数)。将maxResults设置为50.这样,您必须为播放列表中的每50个视频执行一次请求,但至少此方法是可靠的。确保在响应中考虑任何nextPageToken属性。这是获取超过maxResults的项目的最简单方法。

或者,如果您不需要更多信息(如视频说明等),则可以将fields参数设置为items(snippet(position,resourceId/videoId)),nextPageToken。这样,它只会返回必要的信息并减少响应的大小。您的查询可能如下所示:

GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&playlistId=PLLALQuK1NDrgb03P3lIgK7SrBdYbuh4_5&fields=items(snippet(position%2CresourceId%2FvideoId))%2CnextPageToken&key={YOUR_API_KEY}

fields参数是使用字段编辑器在“试一试!”区域中编写的。

现在您已拥有播放列表中所有项目的视频ID,只需检查您的ID是否在其中。