频道的视频列表中缺少视频
Posted
技术标签:
【中文标题】频道的视频列表中缺少视频【英文标题】:Videos missing from a channel's video list 【发布时间】:2019-01-18 03:54:37 【问题描述】:我正在尝试检索有关给定 YouTube 频道的所有视频的信息。
这是我的第一个请求:
GET https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=CHANNEL_ID&maxResults=50&type=video&key=YOUR_API_KEY
"kind": "youtube#searchListResponse",
"etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/15j9AlxbMtzBhzffpA04ahJgv9g\"",
"nextPageToken": "CDIQAA",
"regionCode": "FR",
"pageInfo":
"totalResults": 375,
"resultsPerPage": 50
,
"items": [
"... 50 items here ..."
]
如您所见,共有 375 个结果。因此,我使用nextPageToken
搜索下一个 50 个视频。
GET https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=CHANNEL_ID&maxResults=50&pageToken=CDIQAA&type=video&key=YOUR_API_KEY
"kind": "youtube#searchListResponse",
"etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/7mmGfmqsGmfP8OggZWZVefQ7z6Q\"",
"nextPageToken": "CGQQAA",
"prevPageToken": "CDIQAQ",
"regionCode": "FR",
"pageInfo":
"totalResults": 375,
"resultsPerPage": 50
,
"items": [
"... 28 more items here ..."
]
此响应中只有 28 项。此外,如果我查询下一页:
GET https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=CHANNEL_ID&maxResults=50&pageToken=CGQQAA&type=video&key=YOUR_API_KEY
这一次,根本没有任何物品。
"kind": "youtube#searchListResponse",
"etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/XKJQFk8Z_J6XraQ0mVCRtVWnSYc\"",
"nextPageToken": "CJYBEAA",
"prevPageToken": "CGQQAQ",
"regionCode": "FR",
"pageInfo":
"totalResults": 375,
"resultsPerPage": 50
,
"items": [
]
是什么导致了这种行为?我的请求有问题吗?
【问题讨论】:
为了重现问题,了解在测试中导致此问题的 CHANNEL_ID 值可能很有用。我刚刚尝试通过 apis-explorer 页面和channelId: "UCsGakFIbOsj-fgPFLf1QlQA"
没有任何问题。同样在我的情况下,我已经使用 OAuth 2.0 授权请求。
这里是我要查询的频道 ID:UCRVDPcrF_LTJo8u0bkzUL9A
,我一直在使用 API 密钥授权请求,尽管我认为它不应该有所作为。
只是为了提供更多信息,我确认在报告的频道中:UCRVDPcrF_LTJo8u0bkzUL9A
让我重现该问题,而对于相同的其他频道,例如 UCsGakFIbOsj-fgPFLf1QlQA
似乎不存在此问题
【参考方案1】:
在YouTube Data API v3
你应该:
第 1 步:获取您频道的上传播放列表
GET https://www.googleapis.com/youtube/v3/channels?part=contentDetails&id=UCRVDPcrF_LTJo8u0bkzUL9A&key=YOUR_API_KEY
json
"kind": "youtube#channel",
"etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/8HOHPc1ZO5cOiePp8nFHwKA99HM\"",
"id": "UCRVDPcrF_LTJo8u0bkzUL9A",
"contentDetails":
"relatedPlaylists":
"uploads": "UURVDPcrF_LTJo8u0bkzUL9A",
"watchHistory": "HL",
"watchLater": "WL"
您频道的上传播放列表是UURVDPcrF_LTJo8u0bkzUL9A
第 2 步:使用 youtube.playlistItems.list 通过指定您频道的uploads
播放列表的playlistId
来获取您频道中上传的所有视频
GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&pageToken=WHEN_YOU_HAVE_A_PAGETOKEN_PUT_IT_HERE&playlistId=UURVDPcrF_LTJo8u0bkzUL9A&key=YOUR_API_KEY
参考问题的答案:
youtube-api-v3-list-uploaded-videos how-do-i-obtain-a-list-of-all-videos-in-a-channel-using-the-youtube-data-api-v3关于Search: list
API 的行为
如此处所述:https://developers.google.com/youtube/v3/docs/search/list 关于搜索结果属性pageInfo.totalResults
我逐字引用:
结果集中的结果总数。请注意 值是近似值,可能不代表精确值。在 另外,最大值为1,000,000。
您不应使用此值来创建分页链接。相反,使用 nextPageToken 和 prevPageToken 属性值确定 是否显示分页链接。
另外,通过一些调查,我确实测试了结果中“丢失”的视频,正如您所指出的,但是,当请求中明确指定可选参数 q
时,结果中会出现视频,显然仅当相关视频的数据可以满足指定的过滤器值时。
【讨论】:
以上是关于频道的视频列表中缺少视频的主要内容,如果未能解决你的问题,请参考以下文章