videoId
和playlistId
未检索到 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}
唯一不同的是maxResults
的数量。 playlistItem的索引为3,因此无法检索。
除非我试图获得超出maxResults
最大数量的PlaylistItem,否则很好。但我必须这样做。它让我很沮丧。
有解决方法吗?
答案 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是否在其中。