使用 YouTube API 检查视频是否可嵌入

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 检测到这种情况 - 有人可以帮忙吗?

Mau*_*ave 3

此答案中使用了其他选项:

在这里,您可以使用以下 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 中显示/可用。