Adds full support for YouTube playback.

While a few optimizations could be made, YouTube playback is almost as seamless as local playback.
This commit is contained in:
Markil3
2021-08-17 01:23:23 -06:00
parent ede9132279
commit 9c2cea1662
23 changed files with 388 additions and 261 deletions

View File

@@ -3,26 +3,51 @@ var video;
function onload()
{
video = document.getElementsByClassName('video-stream html5-main-video')[0]
video = document.getElementsByClassName('video-stream html5-main-video')[0];
statusUpdate = e => {
return onStatusUpdate(getState(), e.srcElement.currentTime, getSongData());
};
// video.addListener("timeupdate", statusUpdate);
// video.addListener("play", statusUpdate);
// video.addListener("pause", statusUpdate);
// video.addListener("ended", statusUpdate);
video.ontimeupdate = statusUpdate;
video.onplay = statusUpdate;
video.onpause = statusUpdate;
video.onended = statusUpdate;
}
function getSongData()
{
return {
type: "edu.regis.universeplayer.browser.InternetSong",
location: "window.location.href",
title: getTitle(),
artists: getArtists(),
trackNum: 0,
discNum: 0,
duration: parseInt(getLength() * 1000),
album: null
}
}
function getState()
{
if (!video)
{
return 4;
return "EMPTY";
}
else if (video.ended)
{
return 3;
return "FINISHED";
}
else if (video.paused)
{
return 1;
return "PAUSED";
}
else
{
return 0;
return "PLAYING";
}
}
@@ -36,6 +61,16 @@ function getLength()
return video.duration;
}
function getTitle()
{
return document.getElementsByTagName("meta").title.content;
}
function getArtists()
{
return [document.getElementById("channel-name").getElementsByTagName("a")[0].text];
}
function play()
{
if (video != null)