频道的视频列表中缺少的视频

时间:2018-08-10 13:54:32

标签: youtube google-api youtube-api youtube-data-api

我正在尝试检索有关给定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": [
  ]
}

是什么原因导致这种现象?我的请求有问题吗?

1 个答案:

答案 0 :(得分: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通过指定频道playlistId播放列表中的uploads来获取在YouTube频道中上传的所有视频

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}


有关问题的答案:


关于Search: list API的行为

如此处所述:https://developers.google.com/youtube/v3/docs/search/list关于搜索结果属性pageInfo.totalResults我的字面意思是:

  

结果集中的结果总数。请注意   值是一个近似值,可能不代表确切值。在   另外,最大值为1,000,000。

     

您不应使用此值创建分页链接。相反,使用   nextPageToken和prevPageToken属性值确定   是否显示分页链接。

此外,通过一些调查,我确实进行了测试,但是,当您在请求中明确指定了可选参数q时,结果似乎“丢失”了视频,正如您指出的那样,显然只有相关视频的数据可以满足指定的过滤器值。