aboutsummaryrefslogtreecommitdiffstats
path: root/youtube/static/js/plyr-start.js
diff options
context:
space:
mode:
authorAstounds <kirito@disroot.org>2026-04-05 14:56:51 -0500
committerAstounds <kirito@disroot.org>2026-04-05 14:56:51 -0500
commitf0649be5dec84ce06a3164a2d9ee90f5385ac92f (patch)
tree6dcae30ff3e0d66c895033aab9e92a4c9e4ed513 /youtube/static/js/plyr-start.js
parent62a028968e6d9b4e821b6014d6658b8317328fcf (diff)
downloadyt-local-f0649be5dec84ce06a3164a2d9ee90f5385ac92f.tar.lz
yt-local-f0649be5dec84ce06a3164a2d9ee90f5385ac92f.tar.xz
yt-local-f0649be5dec84ce06a3164a2d9ee90f5385ac92f.zip
Add HLS support to multi-audio
Diffstat (limited to 'youtube/static/js/plyr-start.js')
-rw-r--r--youtube/static/js/plyr-start.js136
1 files changed, 0 insertions, 136 deletions
diff --git a/youtube/static/js/plyr-start.js b/youtube/static/js/plyr-start.js
deleted file mode 100644
index 3838acc..0000000
--- a/youtube/static/js/plyr-start.js
+++ /dev/null
@@ -1,136 +0,0 @@
-(function main() {
- 'use strict';
-
- // Captions
- let captionsActive = false;
- if (data.settings.subtitles_mode === 2 || (data.settings.subtitles_mode === 1 && data.has_manual_captions)) {
- captionsActive = true;
- }
-
- // AutoPlay
- let autoplayActive = data.settings.autoplay_videos || false;
-
- let qualityOptions = [];
- let qualityDefault;
-
- for (let src of data.uni_sources) {
- qualityOptions.push(src.quality_string);
- }
-
- for (let src of data.pair_sources) {
- qualityOptions.push(src.quality_string);
- }
-
- if (data.using_pair_sources) {
- qualityDefault = data.pair_sources[data.pair_idx].quality_string;
- } else if (data.uni_sources.length !== 0) {
- qualityDefault = data.uni_sources[data.uni_idx].quality_string;
- } else {
- qualityDefault = 'None';
- }
-
- // Fix plyr refusing to work with qualities that are strings
- Object.defineProperty(Plyr.prototype, 'quality', {
- set: function (input) {
- const config = this.config.quality;
- const options = this.options.quality;
- let quality = input;
- let updateStorage = true;
-
- if (!options.length) {
- return;
- }
-
- if (!options.includes(quality)) {
- return;
- }
-
- // Update config
- config.selected = quality;
-
- // Set quality
- this.media.quality = quality;
-
- // Save to storage
- if (updateStorage) {
- this.storage.set({ quality });
- }
- },
- });
-
- const playerOptions = {
- // Learning about autoplay permission https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Permissions-Policy/autoplay#syntax
- autoplay: autoplayActive,
- disableContextMenu: false,
- captions: {
- active: captionsActive,
- language: data.settings.subtitles_language,
- },
- controls: [
- 'play-large',
- 'play',
- 'progress',
- 'current-time',
- 'duration',
- 'mute',
- 'volume',
- 'captions',
- 'settings',
- 'pip',
- 'airplay',
- 'fullscreen',
- ],
- iconUrl: '/youtube.com/static/modules/plyr/plyr.svg',
- blankVideo: '/youtube.com/static/modules/plyr/blank.webm',
- debug: false,
- storage: { enabled: false },
- quality: {
- default: qualityDefault,
- options: qualityOptions,
- forced: true,
- onChange: function (quality) {
- if (quality == 'None') {
- return;
- }
- if (quality.includes('(integrated)')) {
- for (let i = 0; i < data.uni_sources.length; i++) {
- if (data.uni_sources[i].quality_string == quality) {
- changeQuality({ type: 'uni', index: i });
- return;
- }
- }
- } else {
- for (let i = 0; i < data.pair_sources.length; i++) {
- if (data.pair_sources[i].quality_string == quality) {
- changeQuality({ type: 'pair', index: i });
- return;
- }
- }
- }
- },
- },
- previewThumbnails: {
- enabled: storyboard_url !== null,
- src: [storyboard_url],
- },
- settings: ['captions', 'quality', 'speed', 'loop'],
- tooltips: {
- controls: true,
- },
- }
-
- const player = new Plyr(document.getElementById('js-video-player'), playerOptions);
-
- // disable double click to fullscreen
- // https://github.com/sampotts/plyr/issues/1370#issuecomment-528966795
- player.eventListeners.forEach(function(eventListener) {
- if(eventListener.type === 'dblclick') {
- eventListener.element.removeEventListener(eventListener.type, eventListener.callback, eventListener.options);
- }
- });
-
- // Add .started property, true after the playback has been started
- // Needed so controls won't be hidden before playback has started
- player.started = false;
- player.once('playing', function(){this.started = true});
-})();