RE: The YTP Skipping Issue


#1

PhantomBot Version: 2.4.2 (Revision: 5c75a7b2)
OS Version: Ubuntu 18.04
Java Version: openjdk-8
Browser and Version (for Panel Support):
Stock PhantomBot: Yes

Let us know what help you need:

Only creating a new topic because the previous threads appear to be locked due to lack of updates from folks. My previous request was met with a suggestion to clear the ytcache table as well as update. Having done that, the player is still skipping most songs.

Here’s the error it gives when skipping now:
[onMessage()@YTWebSocketServer.java:248] Skipping song, YouTube has thrown an error: 150

If there’s any other way for me to get more info about this, please let me know and I’ll try to get it. I really would like to have this working and help get this issue solved, as it seems to be affecting several people.

(PS - I’ll try to be quicker with my responses this time…life happened the last time I was trying to get help for the issue, lol)


#2

Got the same problem.

some songs works others dont.

i am using nightly: 2.4.2 (Revision: 5c75a7b2)

ytp


#3

Need examples of some songs. I do see errors in the API console, of course, I can’t see the requests, just that there are errors returned. However, YouTube is indeed returning errors for some requests as far as I can see so we are returning an error as expected.


#4

By the way:

  • 101 – The owner of the requested video does not allow it to be played in embedded players.
  • 150 – This error is the same as 101 . It’s just a 101 error in disguise!

This leads me to believe that you are attempting to load songs that are not allowed in an embedded player (error 150).


#5

Seen this before, it’s an odd one and seems to happen on 18.04 here and there. This may happen on 16.04 but I forget if I had it happen on it.
I have seen it do this to playlists that been playing fine on the bot for a long time, it will just error them all and if you try again it will do it all over again.

Here what I have done to fix it.
Try the following
If you haven’t rebooted your bot start there.
Next if not fixed.
Make sure your server is updated then restart.

  • sudo apt update
  • sudo apt upgrade
  • stop the bot(s)
  • reboot

Let us know if this fixes your issue.

P.S YouTube is weird at times.


#6

This may ultimately be the problem, now that I look closer. I was under the impression that if the video gave you the option to copy embed code, that embedding was allowed. That is apparently not the case.

That said, to bring this a bit off topic is there a way anyone’s aware of to verify a video is allowed to be embedded without having to individually try to do it somewhere for every one? That would take forever to go through a large list of songs and confirm each one.


#7

I was looking through the youtube API and it appears you’d have to make an additional API call, depending on which API phantombot uses. I use the playlistItems API response in a tool I made and it doesn’t contain the embed status. But the videos API response does contain the embed data among other stuff.


#8

This error is coming from the YouTube Web Socket server which means it is coming from the YouTube Embedded Player itself.

Look at onError

onError
This event fires if an error occurs in the player. The API will pass an event object to the event listener function. That object's data property will specify an integer that identifies the type of error that occurred. Possible values are:
2 – The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.
5 – The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.
100 – The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.
101 – The owner of the requested video does not allow it to be played in embedded players.
150 – This error is the same as 101. Its just a 101 error in disguise!

Now, when we do a lookup for a song request we do ask YouTube if the video is allowed to be embedded. However, I question how accurate that is or, if we have previously cached a video and the status flips later. I wonder if we need to invalidate videos that come back with 101 or 150.

If at all curious, the API call is (remember, this is not the same as the error 150, that comes from the iFrame API at the top):

https://developers.google.com/youtube/v3/docs/videos

Look for status.embeddable. This is the best check that we have prior to allowing in the player. If the player is still throwing it then maybe reset the cache and see if the songs are looked up again fresh from YouTube.