summaryrefslogtreecommitdiffstats
path: root/assets/js/embed.js
diff options
context:
space:
mode:
authorOmar Roth <omarroth@protonmail.com>2019-05-06 10:37:10 -0500
committerOmar Roth <omarroth@protonmail.com>2019-05-06 10:37:22 -0500
commit2ddc61fa5cd9b69ae66c4e7748a2ceb30b103b00 (patch)
tree700b5b73ae785d849e283f55d92acae5f64a75b2 /assets/js/embed.js
parente04b7d0f01d8cbdc8871e0439a2bcc71f063d8a5 (diff)
downloadinvidious-2ddc61fa5cd9b69ae66c4e7748a2ceb30b103b00.tar.gz
invidious-2ddc61fa5cd9b69ae66c4e7748a2ceb30b103b00.tar.bz2
invidious-2ddc61fa5cd9b69ae66c4e7748a2ceb30b103b00.zip
Refactor embed.js
Diffstat (limited to 'assets/js/embed.js')
-rw-r--r--assets/js/embed.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/assets/js/embed.js b/assets/js/embed.js
new file mode 100644
index 00000000..04b08ca5
--- /dev/null
+++ b/assets/js/embed.js
@@ -0,0 +1,80 @@
+function get_playlist(plid, timeouts = 0) {
+ if (timeouts > 10) {
+ console.log('Failed to pull playlist');
+ return;
+ }
+
+ if (plid.startsWith('RD')) {
+ var plid_url = '/api/v1/mixes/' + plid +
+ '?continuation=' + embed_data.id +
+ '&format=html&hl=' + embed_data.preferences.locale;
+ } else {
+ var plid_url = '/api/v1/playlists/' + plid +
+ '?continuation=' + embed_data.id +
+ '&format=html&hl=' + embed_data.preferences.locale;
+ }
+
+ var xhr = new XMLHttpRequest();
+ xhr.responseType = 'json';
+ xhr.timeout = 20000;
+ xhr.open('GET', plid_url, true);
+ xhr.send();
+
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState == 4) {
+ if (xhr.status == 200) {
+ if (xhr.response.nextVideo) {
+ player.on('ended', function () {
+ var url = new URL('https://example.com/embed/' + xhr.response.nextVideo);
+
+ if (embed_data.params.autoplay || embed_data.params.continue_autoplay) {
+ url.searchParams.set('autoplay', '1');
+ }
+
+ if (embed_data.params.listen !== embed_data.preferences.listen) {
+ url.searchParams.set('listen', embed_data.params.listen);
+ }
+
+ if (embed_data.params.speed !== embed_data.preferences.speed) {
+ url.searchParams.set('speed', embed_data.params.speed);
+ }
+
+ url.searchParams.set('list', plid);
+ location.assign(url.pathname + url.search);
+ });
+ }
+ }
+ }
+ }
+
+ xhr.ontimeout = function () {
+ console.log('Pulling playlist timed out.');
+ get_playlist(plid, timeouts + 1);
+ }
+}
+
+if (embed_data.plid) {
+ get_playlist(embed_data.plid);
+} else if (embed_data.video_series) {
+ player.on('ended', function () {
+ var url = new URL('https://example.com/embed/' + embed_data.video_series.shift());
+
+ if (embed_data.params.autoplay || embed_data.params.continue_autoplay) {
+ url.searchParams.set('autoplay', '1');
+ }
+
+ if (embed_data.params.listen !== embed_data.preferences.listen) {
+ url.searchParams.set('listen', embed_data.params.listen);
+ }
+
+ if (embed_data.params.speed !== embed_data.preferences.speed) {
+ url.searchParams.set('speed', embed_data.params.speed);
+ }
+
+ if (embed_data.video_series.length !== 0) {
+ url.searchParams.set('playlist', embed_data.video_series.join(','))
+ }
+
+ location.assign(url.pathname + url.search);
+ });
+}