JoG*_*oGr 5 javascript youtube youtube-api youtube-data-api
我试图弄清楚 YouTube 视频是否可以使用 YouTube Data API v3 嵌入,从类似问题的答案中我注意到视频的 status.embeddable 属性,对于这样的请求:
https://www.googleapis.com/youtube/v3/videos?id=63flkf3S1bE&part=contentDetails,status&key={MY_API_KEY}
Run Code Online (Sandbox Code Playgroud)
响应如下
{
"kind": "youtube#videoListResponse",
"etag": "\"ksCrgYQhtFrXgbHAhi9Fo5t0C2I/ctZQYtBcOuMdnQXh8-Fv1EbS_VA\"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 1
},
"items": [
{
"kind": "youtube#video",
"etag": "\"ksCrgYQhtFrXgbHAhi9Fo5t0C2I/Cd8aGZD09NPuGYNumIEozZs2S90\"",
"id": "63flkf3S1bE",
"contentDetails": {
"duration": "PT8M23S",
"dimension": "2d",
"definition": "hd",
"caption": "false",
"licensedContent": false,
"projection": "rectangular"
},
"status": {
"uploadStatus": "processed",
"privacyStatus": "public",
"license": "youtube",
"embeddable": true,
"publicStatsViewable": true,
"madeForKids": false
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
embeddable下面的参数返回status为 true,但是该视频实际上不可嵌入,如此处所示。
当实际使用 iframe API 嵌入视频时,还有更详细的错误消息:
视频不可用 该视频包含来自国际奥委会的内容,该委员会已阻止其在本网站或应用程序上显示。在 YouTube 上观看
我不明白如何从 YouTube 数据 API 检测到这种情况 - 有人可以帮忙吗?
此答案中使用了其他选项:
在这里,您可以使用以下 URL:
https://www.youtube.com/get_video_info?video_id=<VIDEO_ID>
Run Code Online (Sandbox Code Playgroud)
您要检索信息的VIDEO_IDYouTube 在哪里。video_id
在这种情况下,一旦收到响应,您将看到一个名为“playabilityStatus.status”的属性。
以下是回复的摘录:
"playabilityStatus": {
"status": "UNPLAYABLE",
"reason": "The video is not available",
"errorScreen": {
"playerErrorMessageRenderer": {
"reason": {
"simpleText": "The video is not available"
},
Run Code Online (Sandbox Code Playgroud)
除了johnh10 的回答之外,在 YouTube 网页中看到的一些结果并不总是在 API 中显示/可用。