PlaylistItem没有被videoId
和playlistId
检索到。
maxResults
范围内,则会出现此情况。你会得到item has data below query.
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,所以它没有被检索到。
这是很好的,除非我会试着得到PlaylistItem,这是maxResults
的最大数量。但我必须这么做。这让我很沮丧。
有什么解决办法吗?
API的这种行为实际上是相当令人困惑的,我不希望发生这样的事情。毕竟,maxResults
参数的文档说明:
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
参数是使用字段编辑器在"Try it!"区域中组成的)
现在您已经有了播放列表中所有项目的视频id,只需检查您的id是否在其中