// ==UserScript== // @name Disney Plus Enchantments // @namespace http://tampermonkey.net/ // @version 0.6 // @description Enhancements for Disney Plus video player: auto Fullscreen, skip intro, skip credits, and more. // @author JJJ // @match https://www.disneyplus.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=disneyplus.com // @require https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js // @grant GM_setValue // @grant GM_getValue // @grant GM_registerMenuCommand // @license MIT // @downloadURL none // ==/UserScript== (function () { const config = { enableAutoFullscreen: GM_getValue('enableAutoFullscreen', true), enableSkipIntro: GM_getValue('enableSkipIntro', true), enableAutoPlayNext: GM_getValue('enableAutoPlayNext', false), }; const selectors = { skipIntroButton: '.skip__button:first-child', autoPlayButton: '*[data-testid="up-next-play-button"]', }; function showSettingsDialog() { const dialogHTML = `

Disney Plus Enchantments





`; const dialogWrapper = document.createElement('div'); dialogWrapper.innerHTML = dialogHTML; document.body.appendChild(dialogWrapper); const saveSettingsButton = document.getElementById('saveSettingsButton'); const cancelSettingsButton = document.getElementById('cancelSettingsButton'); saveSettingsButton.addEventListener('click', () => { console.log('Save button clicked'); config.enableAutoFullscreen = document.getElementById('enableAutoFullscreen').checked; config.enableSkipIntro = document.getElementById('enableSkipIntro').checked; config.enableAutoPlayNext = document.getElementById('enableAutoPlayNext').checked; saveSettings(); closeSettingsDialog(); }); cancelSettingsButton.addEventListener('click', () => { console.log('Cancel button clicked'); closeSettingsDialog(); }); } function closeSettingsDialog() { const dialog = document.getElementById('disneyPlusEnchantmentsDialog'); if (dialog) { dialog.remove(); if (document.fullscreenElement) { document.exitFullscreen(); } } } function saveSettings() { GM_setValue('enableAutoFullscreen', config.enableAutoFullscreen); GM_setValue('enableSkipIntro', config.enableSkipIntro); GM_setValue('enableAutoPlayNext', config.enableAutoPlayNext); } function isElementVisible(element) { return element && element.offsetParent !== null; } function clickButton(selector) { const button = document.querySelector(selector); if (button && isElementVisible(button)) { button.click(); } } function enterFullscreen() { if (!document.fullscreenElement) { document.documentElement.requestFullscreen(); } } function exitFullscreen() { if (document.fullscreenElement) { document.exitFullscreen(); } } function handleSkipActions() { try { if (config.enableAutoFullscreen) { enterFullscreen(); } if (config.enableSkipIntro) { clickButton(selectors.skipIntroButton); } if (config.enableAutoPlayNext) { clickButton(selectors.autoPlayButton); } } catch (error) { console.error('An error occurred:', error); } } const observer = new MutationObserver(handleSkipActions); observer.observe(document.body, { childList: true, subtree: true }); GM_registerMenuCommand('Disney Plus Enchantments', showSettingsDialog); let isSettingsDialogOpen = false; function toggleSettingsDialog() { if (isSettingsDialogOpen) { closeSettingsDialog(); isSettingsDialogOpen = false; } else { showSettingsDialog(); isSettingsDialogOpen = true; } } document.addEventListener('keyup', (event) => { if (event.key === 'F2') { toggleSettingsDialog(); } else if (event.key === 'Escape') { exitFullscreen(); } }); })();