Detect via javascript if video is unavailable when using YouTube iframe player

I’m using the YouTube iFrame API to embed YouTube videos on my site. The videos are pulled from Reddit data obtained via their API, so the content dynamically changes. Some of these videos load as “Video Unavailable”.

My goal is to detect when this happens, and remove the unavailable video. However, I haven’t found a way to detect this state.

What I’ve tried so far:

  1. Look in the iframe contents for items with a class of ytp-error. This does not work because all modern browsers prevent javascript from looking inside iframe contents.
  2. Adding an onError event listener to the player. This does not work because a video being unavailable apparently does not constitute an error in eyes of the player.

I assume there is some call that I can use to detect this in the player, but I have not found such as call. How can this be detected?

Answer

Thankfully, it doesn’t require another call to the YT API. In the YouTube iFrame’s onReady handler, getPlayerState() will return -1 (unstarted) for “unavailable” videos, while all other videos return a status of 5 (video cued). I can now simply remove all videos from the DOM which have this -1 status.

Source: stackoverflow
The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .