如何获取 Youtube API v3 中 PlaylistItems 中列出的视频的频道 ID?
How to get Channel ID of videos listed in PlaylistItems in Youtube API v3?
当我尝试列出带有 playlistItems.list
的视频时,我似乎无法在任何地方获得视频的 channelId
。请注意,视频所有者与播放列表所有者不同。
Here is an example in Google API Explorer
我正在请求 ID 为 PLgMGySfO8dl_IybGLflF1QhHwhBkOyZg7
的播放列表中的一项。返回的一项是 ID 为 tDHxiDA1Y6s
的视频。我希望在某处看到 ID 为 UCOfEKi7Qkc3g5XNoQSl3D8Q
的频道,但我没有看到它。
我确实将 UC1bSfMYJEqh7DTSOsbe_t8Q
视为频道 ID,但那是播放列表所有者的频道 ID,而不是视频所有者的频道 ID。我还注意到在字段编辑器中应该有一个字段 snippet.resourceId.channelId
,但即使我选择将其包含在内,正如您在下面的示例结果中看到的那样,我在那里也没有得到任何值。
有没有办法在没有第二次请求的情况下获取视频中包含的频道 ID?
这是我得到的结果:
{
"kind": "youtube#playlistItemListResponse",
"etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/rEUHufzTzfkJMLVrD2pBtEz5OWY\"",
"nextPageToken": "CAEQAA",
"pageInfo": {
"totalResults": 30,
"resultsPerPage": 1
},
"items": [
{
"kind": "youtube#playlistItem",
"etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/2VurTVExuTlDwFHQ3ULfjL-KM7U\"",
"id": "UExnTUd5U2ZPOGRsX0l5YkdMZmxGMVFoSHdoQmtPeVpnNy41NkI0NEY2RDEwNTU3Q0M2",
"snippet": {
"publishedAt": "2018-05-26T11:37:02.000Z",
"channelId": "UC1bSfMYJEqh7DTSOsbe_t8Q",
"title": "Unreal Tournament - Soundtrack (UMX)",
"description": "Music by Alexander \"Siren\" Brandon and Michiel van den Bos.\n\"enigma\", \"seeker\", \"seeker2\" by Daniel \"Basehead\" Gardopée.\n\"FireBreath\" by Tero \"Teque\" Kostermaa and Kaj-Eerik \"Nitro\" Komppa.\n\"mechanism eight\" by Andrew \"Necros\" Sega.\n\"Razorback // Unreal mix\" by Peter \"Skaven\" Hajba.\n\nTracks:\n00:00 BOTPACK #9(By Michiel)\n04:51 BOTMCA#10 (By Michiel)\n09:13 Cannonade\n11:11 Colossus (Michiel)\n15:30 The Course\n20:01 Room of Champions\n22:17 Shared Dig\n28:03 Into the darkness (Ending.umx)\n29:53 unreal add-on (enigma)\n33:19 -xTREMELY xECUTABLE-\n35:31 FireBreath\n38:48 Foregone Destruction\n43:02 Go Down\n46:05 Guardian\n47:50 Nightvision - Sandman/KFM\n51:58 Lock\n54:44 mechanism eight - necros\n1:01:38 Mission Landing\n1:05:53 Nether Animal\n1:10:56 Organic\n1:14:01 Phantom\n1:20:04 Razorback // Unreal mix\n1:24:56 RipCord\n1:27:08 Riverb3\n1:29:05 Run\n1:33:41 Dream Tear Down\n1:38:54 Save Me (SaveMe.umx)\n1:40:47 Save Me (Savemeg.umx)\n1:42:41 unreal add-on (seeker)\n1:46:34 unreal add-on (seeker2)\n1:50:01 Skyward Fire\n1:55:00 Into the darkness (Strider.umx)\n1:57:45 Submarinebase 2\n2:01:51 SuperFist\n2:03:51 Underworld II\n2:07:02 Unreal Tournament Menu\n2:09:04 Unreal Tournament Title\n2:10:33 Three Wheels Turning\n\nA few titles and credits information taken from the Liandri Archives.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/tDHxiDA1Y6s/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/tDHxiDA1Y6s/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/tDHxiDA1Y6s/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/tDHxiDA1Y6s/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/tDHxiDA1Y6s/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "amcsi",
"playlistId": "PLgMGySfO8dl_IybGLflF1QhHwhBkOyZg7",
"position": 0,
"resourceId": {
"kind": "youtube#video",
"videoId": "tDHxiDA1Y6s"
}
},
"contentDetails": {
"videoId": "tDHxiDA1Y6s",
"videoPublishedAt": "2011-05-02T19:50:49.000Z"
}
}
]
}
如您所料,调用 PlaylistItems returns 播放列表所有者的频道 ID。要获取播放列表中视频的原始频道 ID,您需要使用视频 ID 再次调用视频端点。
他们已将字段“videoOwnerChannelTitle”和“videoOwnerChannelId”添加到片段部分。
现在您可以直接在播放列表项列表请求中获取这两个值。
我刚刚从 1.30 升级到 1.50(使用 Youtube API 的 .NET/C# 库)。
然后我开始工作了。有同样的问题。
当我尝试列出带有 playlistItems.list
的视频时,我似乎无法在任何地方获得视频的 channelId
。请注意,视频所有者与播放列表所有者不同。
Here is an example in Google API Explorer
我正在请求 ID 为 PLgMGySfO8dl_IybGLflF1QhHwhBkOyZg7
的播放列表中的一项。返回的一项是 ID 为 tDHxiDA1Y6s
的视频。我希望在某处看到 ID 为 UCOfEKi7Qkc3g5XNoQSl3D8Q
的频道,但我没有看到它。
我确实将 UC1bSfMYJEqh7DTSOsbe_t8Q
视为频道 ID,但那是播放列表所有者的频道 ID,而不是视频所有者的频道 ID。我还注意到在字段编辑器中应该有一个字段 snippet.resourceId.channelId
,但即使我选择将其包含在内,正如您在下面的示例结果中看到的那样,我在那里也没有得到任何值。
有没有办法在没有第二次请求的情况下获取视频中包含的频道 ID?
这是我得到的结果:
{
"kind": "youtube#playlistItemListResponse",
"etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/rEUHufzTzfkJMLVrD2pBtEz5OWY\"",
"nextPageToken": "CAEQAA",
"pageInfo": {
"totalResults": 30,
"resultsPerPage": 1
},
"items": [
{
"kind": "youtube#playlistItem",
"etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/2VurTVExuTlDwFHQ3ULfjL-KM7U\"",
"id": "UExnTUd5U2ZPOGRsX0l5YkdMZmxGMVFoSHdoQmtPeVpnNy41NkI0NEY2RDEwNTU3Q0M2",
"snippet": {
"publishedAt": "2018-05-26T11:37:02.000Z",
"channelId": "UC1bSfMYJEqh7DTSOsbe_t8Q",
"title": "Unreal Tournament - Soundtrack (UMX)",
"description": "Music by Alexander \"Siren\" Brandon and Michiel van den Bos.\n\"enigma\", \"seeker\", \"seeker2\" by Daniel \"Basehead\" Gardopée.\n\"FireBreath\" by Tero \"Teque\" Kostermaa and Kaj-Eerik \"Nitro\" Komppa.\n\"mechanism eight\" by Andrew \"Necros\" Sega.\n\"Razorback // Unreal mix\" by Peter \"Skaven\" Hajba.\n\nTracks:\n00:00 BOTPACK #9(By Michiel)\n04:51 BOTMCA#10 (By Michiel)\n09:13 Cannonade\n11:11 Colossus (Michiel)\n15:30 The Course\n20:01 Room of Champions\n22:17 Shared Dig\n28:03 Into the darkness (Ending.umx)\n29:53 unreal add-on (enigma)\n33:19 -xTREMELY xECUTABLE-\n35:31 FireBreath\n38:48 Foregone Destruction\n43:02 Go Down\n46:05 Guardian\n47:50 Nightvision - Sandman/KFM\n51:58 Lock\n54:44 mechanism eight - necros\n1:01:38 Mission Landing\n1:05:53 Nether Animal\n1:10:56 Organic\n1:14:01 Phantom\n1:20:04 Razorback // Unreal mix\n1:24:56 RipCord\n1:27:08 Riverb3\n1:29:05 Run\n1:33:41 Dream Tear Down\n1:38:54 Save Me (SaveMe.umx)\n1:40:47 Save Me (Savemeg.umx)\n1:42:41 unreal add-on (seeker)\n1:46:34 unreal add-on (seeker2)\n1:50:01 Skyward Fire\n1:55:00 Into the darkness (Strider.umx)\n1:57:45 Submarinebase 2\n2:01:51 SuperFist\n2:03:51 Underworld II\n2:07:02 Unreal Tournament Menu\n2:09:04 Unreal Tournament Title\n2:10:33 Three Wheels Turning\n\nA few titles and credits information taken from the Liandri Archives.",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/tDHxiDA1Y6s/default.jpg",
"width": 120,
"height": 90
},
"medium": {
"url": "https://i.ytimg.com/vi/tDHxiDA1Y6s/mqdefault.jpg",
"width": 320,
"height": 180
},
"high": {
"url": "https://i.ytimg.com/vi/tDHxiDA1Y6s/hqdefault.jpg",
"width": 480,
"height": 360
},
"standard": {
"url": "https://i.ytimg.com/vi/tDHxiDA1Y6s/sddefault.jpg",
"width": 640,
"height": 480
},
"maxres": {
"url": "https://i.ytimg.com/vi/tDHxiDA1Y6s/maxresdefault.jpg",
"width": 1280,
"height": 720
}
},
"channelTitle": "amcsi",
"playlistId": "PLgMGySfO8dl_IybGLflF1QhHwhBkOyZg7",
"position": 0,
"resourceId": {
"kind": "youtube#video",
"videoId": "tDHxiDA1Y6s"
}
},
"contentDetails": {
"videoId": "tDHxiDA1Y6s",
"videoPublishedAt": "2011-05-02T19:50:49.000Z"
}
}
]
}
如您所料,调用 PlaylistItems returns 播放列表所有者的频道 ID。要获取播放列表中视频的原始频道 ID,您需要使用视频 ID 再次调用视频端点。
他们已将字段“videoOwnerChannelTitle”和“videoOwnerChannelId”添加到片段部分。 现在您可以直接在播放列表项列表请求中获取这两个值。
我刚刚从 1.30 升级到 1.50(使用 Youtube API 的 .NET/C# 库)。 然后我开始工作了。有同样的问题。