// ==UserScript== // @name LINE TV 免會員劇院模式 // @namespace http://tampermonkey.net/ // @version 1.0 // @description 將 LINE TV 的選集列表移到播放器下方,並將播放器調整到劇院模式,阻止改變尺寸。 // @author RouZong // @match https://www.linetv.tw/drama/* // @grant none // ==/UserScript== (function() { 'use strict'; // 等待頁面完全加載 window.addEventListener('load', function() { // 獲取播放器和選集列表 const playerContainer = document.querySelector('.w-full.px-5.md\\:w-2\\/3'); const episodeListContainer = document.querySelector('.DramaDesktop___StyledDiv-sc-1n4rs0l-0'); // 刪除指定元素 const flexWrapElement = document.querySelector('div.-mx-5.mt-6.flex.flex-wrap'); if (flexWrapElement) { flexWrapElement.remove(); } // 刪除包含關鍵字的元素 const smartChannelElements = document.querySelectorAll('div[class*="SmartChannelTemplatesstyled__"]'); smartChannelElements.forEach(element => { element.remove(); }); // 刪除 class 為 container flex flex-col pb-2 pt-16 的元素 const containerFlexColElement = document.querySelector('div.container.flex.flex-col.pb-2.pt-16'); if (containerFlexColElement) { containerFlexColElement.remove(); } if (playerContainer && episodeListContainer) { // 創建新的容器 const newContainer = document.createElement('div'); newContainer.style.width = '100%'; newContainer.style.marginTop = '20px'; // 將選集列表移動到新的容器中 newContainer.appendChild(episodeListContainer); // 將新的容器插入到播放器下方 playerContainer.parentNode.insertBefore(newContainer, playerContainer.nextSibling); // 調整播放器寬度到100% playerContainer.style.width = '100%'; playerContainer.style.height = 'auto'; // 調整播放器內部元素寬度 const videoElement = playerContainer.querySelector('.aspect-ratio.aspect-ratio--16x9'); if (videoElement) { videoElement.style.paddingBottom = '0%'; videoElement.style.height = 'auto'; } // 調整選集列表內部樣式 const navElement = episodeListContainer.querySelector('nav'); if (navElement) { navElement.style.flexDirection = 'row'; navElement.style.flexWrap = 'wrap'; navElement.style.justifyContent = 'space-around'; } // 阻止改變尺寸的函數 const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.attributeName === 'style') { // 恢復播放器寬度和高度 playerContainer.style.width = '100%'; playerContainer.style.height = 'auto'; if (videoElement) { videoElement.style.paddingBottom = '45%'; videoElement.style.height = 'auto'; } } }); }); // 觀察播放器容器的變化 observer.observe(playerContainer, { attributes: true, attributeFilter: ['style'] }); if (videoElement) { observer.observe(videoElement, { attributes: true, attributeFilter: ['style'] }); } } }, false); })(); |
更新日誌:
v1.0 2024-07-05
簡單實現劇院模式,會移除影片介紹跟推薦影片及小廣告避免重疊(技術不佳 這樣最省事)