youtubeembedyoutube-data-api

How to identify the YouTube videos that can't embed on file


I have a mobile application that embeds some youtube videos in a webview.

The problem is that, using YouTube Data API v3 I get a list of "Embeddable" items to show. But some of them say that "Video unavailable". When I paste the same code on on jsfiddle or a domain or some sort of webserver, it does work but when reading from File or navigating to html string via webview, it doesn't work.

My question is that how can I understand if the video that I'm trying to embed is actually embeddable from file or not?

I have checked youtube data API v3 outputs for each video and I couldn't find any meaningful information.

Is there some other sort of web API or HTTP endpoint that I can check to see if the video is right?

If not, how can I get data from youtube player programatically to see whether it successfully embedded it or not?

The sample list of the youtube videos that can't be embedded in file are following:

https://www.youtube.com/watch?v=TjI3bzvbCU4
https://www.youtube.com/watch?v=QWveXdj6oZU
https://www.youtube.com/watch?v=KEEnap_h8cs

enter image description here

Note: My problem is to identify the unimbeddable items, because I want to load them from file (in a mobile app). Therefore trying to loading it from a webserver isn't an option for me.

Note 2: These blocks aren't regional, they are domain based.


Solution

  • YouTube Data API v3 provides a not working embed page while it says that it is.

    While for other videos like this one (ZqYezph-hgg) it works.

    So my idea is just to retrieve https://www.youtube.com/embed/VIDEO_ID and see if the video is unplayable like this for instance:

    curl -s https://www.youtube.com/embed/TjI3bzvbCU4 | grep "UNPLAYABLE" | wc -l

    Returns 1, so this video is unplayable.

    curl -s https://www.youtube.com/embed/ZqYezph-hgg | grep "UNPLAYABLE" | wc -l

    Returns 0, so this video is playable.

    Also note that my open-source YouTube operational API implements more properly this feature, as https://yt.lemnoslife.com/videos?part=status&id=TjI3bzvbCU4 returns:

    {
        "kind": "youtube#videoListResponse",
        "etag": "NotImplemented",
        "items": [
            {
                "kind": "youtube#video",
                "etag": "NotImplemented",
                "id": "TjI3bzvbCU4",
                "status": {
                    "embeddable": true,
                    ...
                }
            }
        ]
    }
    

    and https://yt.lemnoslife.com/videos?part=status&id=ZqYezph-hgg returns:

    {
        "kind": "youtube#videoListResponse",
        "etag": "NotImplemented",
        "items": [
            {
                "kind": "youtube#video",
                "etag": "NotImplemented",
                "id": "ZqYezph-hgg",
                "status": {
                    "embeddable": true,
                    ...
                }
            }
        ]
    }