From ffbef7c96d5c6f5f7d90108c43604ecfea78c5ad Mon Sep 17 00:00:00 2001 From: NikolaBorislavovHristov Date: Thu, 21 Feb 2019 15:20:21 +0200 Subject: [PATCH] embedded youtube subtitles implemented --- .../Video/stremio-video/YouTubeVideo.js | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/routes/Player/Video/stremio-video/YouTubeVideo.js b/src/routes/Player/Video/stremio-video/YouTubeVideo.js index 133158f99..ff1cd42b9 100644 --- a/src/routes/Player/Video/stremio-video/YouTubeVideo.js +++ b/src/routes/Player/Video/stremio-video/YouTubeVideo.js @@ -19,6 +19,7 @@ function YouTubeVideo(containerElement) { var bufferingObserved = false; var volumeObserved = false; var propChangedIntervalId = window.setInterval(onPropChangedInterval, 100); + var embeddedSubtitlesSelectedTrackId = null; var subtitles = new HTMLSubtitles(containerElement); var video = null; var scriptElement = document.createElement('script'); @@ -104,7 +105,10 @@ function YouTubeVideo(containerElement) { return null; } - return subtitles.dispatch('getProp', 'selectedTrackId'); + return embeddedSubtitlesSelectedTrackId !== null ? + embeddedSubtitlesSelectedTrackId + : + subtitles.dispatch('getProp', 'selectedTrackId'); } function getSubtitleSize() { if (!ready || destroyed) { @@ -118,14 +122,20 @@ function YouTubeVideo(containerElement) { return null; } - return subtitles.dispatch('getProp', 'delay'); + return embeddedSubtitlesSelectedTrackId !== null ? + null + : + subtitles.dispatch('getProp', 'delay'); } function getSubtitleDarkBackground() { if (!ready || destroyed) { return null; } - return subtitles.dispatch('getProp', 'darkBackground'); + return embeddedSubtitlesSelectedTrackId !== null ? + null + : + subtitles.dispatch('getProp', 'darkBackground'); } function onEnded() { events.emit('ended'); @@ -458,9 +468,19 @@ function YouTubeVideo(containerElement) { } case 'selectedSubtitleTrackId': { if (loaded) { - video.setOption('captions', 'track', arguments[2]); + embeddedSubtitlesSelectedTrackId = null; + var tracks = getSubtitleTracks(); + for (var i = 0; i < tracks.length; i++) { + if (tracks[i].id === arguments[2] && tracks[i].origin === 'EMBEDDED') { + embeddedSubtitlesSelectedTrackId = tracks[i].id; + break; + } + } + + video.setOption('captions', 'track', { languageCode: arguments[2] }); subtitles.dispatch('setProp', 'selectedTrackId', arguments[2]); onSubtitleDelayChanged(); + onSubtitleDarkBackgroundChanged(); onSelectedSubtitleTrackIdChanged(); updateSubtitleText(); } else {