Используйте API YouTube, чтобы проверить, можно ли встраивать видео - PullRequest
1 голос
/ 30 марта 2020

Я пытаюсь выяснить, является ли видео YouTube встраиваемым с использованием API данных YouTube v3, по ответам на похожие вопросы я заметил свойство видео status.embeddable для такого запроса:

https://www.googleapis.com/youtube/v3/videos?id=63flkf3S1bE&part=contentDetails,status&key={MY_API_KEY}

Ответ следующий:

{
    "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
            }
        }
    ]
}

Параметр embeddable в поле status возвращается как истинное, ОДНАКО это видео на самом деле не может быть встроено, как видно здесь .

При фактическом встраивании видео с помощью API iframe также появляется более подробное сообщение об ошибке:

Видео недоступно Это видео содержит материалы из Международного комитета Olympi c, кто заблокировал его показ на этом сайте или в приложении. Смотрите на YouTube

Я не вижу, как можно обнаружить этот случай с помощью API данных YouTube - кто-нибудь может помочь?

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

К сожалению, эта «проверка авторских прав» происходит непосредственно от игрока. Эти данные недоступны через API.

1 голос
/ 31 марта 2020

Другая опция используется в этом ответе :

Здесь вы можете использовать следующий URL:

https://www.youtube.com/get_video_info?video_id=<VIDEO_ID>

Где VIDEO_ID - YouTube video_id вы хотите получить информацию.

В этом случае, как только вы получите ответ, вы увидите свойство с именем "playabilityStatus.status".

Вот выдержка из ответа:

 "playabilityStatus": {
        "status": "UNPLAYABLE",
        "reason": "The video is not available",
        "errorScreen": {
            "playerErrorMessageRenderer": {
                "reason": {
                    "simpleText": "The video is not available"
                },

Дополнительно к ответу johnh10 , некоторые результаты, которые можно увидеть на веб-странице YouTube, не всегда отображаются / доступны в API.

...