问题号。 1
对于您的第一个问题:
给定一个频道 ID——$CHANNEL_ID
--,测试相应通道是否存在。
我建议调用curl
在以下网址上:
https://www.googleapis.com/youtube/v3/channels?part=id&fields=items/id&id=$CHANNEL_ID&key=$APP_KEY
请注意,调用Channels.list https://developers.google.com/youtube/v3/docs/channels/list通过上面的 URL 的端点——其中包含参数part=id
and fields=items/id
- 将返回only频道的 ID。
尽管没有明确记录,但测试表明您将从端点返回您传递给它的 ID,当且仅当该频道确实存在。
例如,如果您的频道 ID 是上面的 --UC_x5XG1OVP6uZZ5FSM9Ttw
--,API 响应几乎是空的:
{}
因为这个频道不存在(只需点击这个link https://www.youtube.com/channel/UC_x5XG1OVP6uZZ5FSM9Ttw自己看看)。
另一方面,就 NBCNews 频道而言——UCeY0bbntWzzVIaj2z3QigXg
-- 响应是:
{
"items": [
{
"id": "UCeY0bbntWzzVIaj2z3QigXg"
}
]
}
表明这个频道确实是活跃的。
问题号。 2
关于您帖子的第二个问题:
通过 ID 指定频道$CHANNEL_ID
,请列出该频道的视频。
建议您咨询一下我最近对这个问题给出的答案 https://stackoverflow.com/a/63811627/8327971.
按照curl
,您必须调用以下 URL:
https://www.googleapis.com/youtube/v3/channels?part=contentDetails&fields=items/contentDetails/relatedPlaylists/uploads&id=$CHANNEL_ID&key=$APP_KEY
用于获取该频道的上传播放列表ID。例如,对于 NBCNews 频道,API 响应为:
{
"items": [
{
"contentDetails": {
"relatedPlaylists": {
"uploads": "UUeY0bbntWzzVIaj2z3QigXg"
}
}
}
]
}
然后从 JSON 响应中取出该 ID,如下所示$PLAYLIST_ID
并调用curl
在以下网址上反复, 实现分页 https://developers.google.com/youtube/v3/guides/implementation/pagination:
https://www.googleapis.com/youtube/v3/playlistItems?part=id,snippet,contentDetails,status&maxResults=50&playlistId=$PLAYLIST_ID&key=$APP_KEY
.
对于 NBCNews 的上传播放列表,第一页的输出看起来像:
{
"kind": "youtube#playlistItemListResponse",
"etag": "5DW9uT73DWmJtDoJ-rSw3AqHKpc",
"nextPageToken": "CAUQAA",
"items": [
{
"kind": "youtube#playlistItem",
"etag": "_X3LvLIRvEBM3RetizOGtB03ja0",
"id": "VVVlWTBiYm50V3p6VklhajJ6M1FpZ1hnLjE5NjU4N0NGQkY5M0M3MjI=",
"snippet": {
"publishedAt": "2020-09-12T06:11:59Z",
"channelId": "UCeY0bbntWzzVIaj2z3QigXg",
"title": "Watch NBC News NOW Live - September 11",
"description": "NBC News NOW is live, reporting breaking news and ...",
"thumbnails": {
...
},
"channelTitle": "NBC News",
"playlistId": "UUeY0bbntWzzVIaj2z3QigXg",
"position": 0,
"resourceId": {
"kind": "youtube#video",
"videoId": "yXO2hQXC5Dw"
}
},
"contentDetails": {
"videoId": "yXO2hQXC5Dw",
"videoPublishedAt": "2020-09-12T06:11:59Z"
},
"status": {
"privacyStatus": "public"
}
},
{
"kind": "youtube#playlistItem",
"etag": "PGyhZonOjiRzqHu7DKDPk6gcMTo",
"id": "VVVlWTBiYm50V3p6VklhajJ6M1FpZ1hnLjY2RTJFNDA4MDA0NDREQTU=",
"snippet": {
"publishedAt": "2020-09-12T02:48:48Z",
"channelId": "UCeY0bbntWzzVIaj2z3QigXg",
"title": "Gaza Sees Spike In Coronavirus Cases, Severe Shortage Of Supplies | NBC News NOW",
"description": "NBC News’ Kelly Cobiella reports on the surge in Gaza ...",
"thumbnails": {
...
},
"channelTitle": "NBC News",
"playlistId": "UUeY0bbntWzzVIaj2z3QigXg",
"position": 1,
"resourceId": {
"kind": "youtube#video",
"videoId": "I0lHV0ZVPAs"
}
},
"contentDetails": {
"videoId": "I0lHV0ZVPAs",
"videoPublishedAt": "2020-09-12T02:48:48Z"
},
"status": {
"privacyStatus": "public"
}
},
...
],
"pageInfo": {
"totalResults": 20000,
"resultsPerPage": 50
}
}
请注意该属性nextPageToken
在上面的 JSON 响应文本中;该房产的价值——CAUQAA
-- 必须作为参数传递给端点的第二次调用pageToken=CAUQAA
添加到上面的初始 URL。
为了获得n
-第页,您将提取以下值nextPageToken
来自n-1
-第页,用于将该值传递给n
-th URL 为pageToken=...
.