您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
hide short, annotation, liveChat, etc.
// ==UserScript== // @name YouTube - Custom Default Settings // @name:en YouTube - Custom Default Settings // @name:ja YouTube - 初期設定の変更 // @namespace http://tampermonkey.net/ // @version 2025-04-10 // @description hide short, annotation, liveChat, etc. // @description:en hide short, annotation, liveChat, etc. // @description:ja 画質 次の動画への秒数 文字起こしの有無 ライブチャットの有無などの変更 // @author ぐらんぴ // @match https://www.youtube.com/* // @icon https://www.youtube.com/favicon.ico // @run-at document-start // @grant GM_addStyle // @license MIT // ==/UserScript== const settings = [ // page: "watch" { name: 'liveChat', default: 'hide', /* show or hide */ }, { name: 'transcript', default: 'hide', /* show or hide */ }, { name: 'autoPlayCount', default: '0', /* 0 or more */ }, { name: 'annotation', default: 'hide', /* show or hide */ }, { name: 'quality', default: '720', /* 144, 240, 360, 480, 720, 1080 */ }, { name: 'loop', default: 'on', /* on or off */ }, { name: 'shuffle', default: 'on', /* on or off */ }, // search { name: 'shorts', default: 'hide', /* show or hide */ }, // promo, ad { name: 'promo', default: 'hide', /* show or hide */ }, // testing { name: 'ad', default: 'hide', /* show or hide */ }, // testing ]; ///-----------------------------------------------------------------------------------/// document.addEventListener('yt-page-data-fetched', e =>{ let res = e.detail.pageData.response // console.log(e.detail.pageData.page); settings.forEach(s =>{ try{ if(e.detail.pageData.url == "/feed/you") return; // page: "watch" if(s.name == 'liveChat' && s.default == 'hide') res.contents.twoColumnWatchNextResults.conversationBar.liveChatRenderer.initialDisplayState = 'LIVE_CHAT_DISPLAY_STATE_COLLAPSED'; if(s.name == 'transcript' && s.default == 'show'){ let engagementPanels = res.engagementPanels engagementPanels.forEach(i =>{ if(i.engagementPanelSectionListRenderer.targetId == 'engagement-panel-searchable-transcript') i.engagementPanelSectionListRenderer.visibility = 'ENGAGEMENT_PANEL_VISIBILITY_EXPANDED'; }); } if(s.name == 'autoPlayCount'){ res.playerOverlays.playerOverlayRenderer.autoplay.playerOverlayAutoplayRenderer.countDownSecs = s.default res.playerOverlays.playerOverlayRenderer.autoplay.playerOverlayAutoplayRenderer.countDownSecsForFullscreen = s.default } if(s.name == 'annotation' && s.default == 'hide'){ // https://i.ytimg.com/an/ GM_addStyle(` .annotation { display: none; }`) } if(s.name == 'quality'){ for (let i = 0; i < localStorage.length; i++) { let key = localStorage.key(i); if (key === "yt-player-quality") { let data = localStorage.getItem(key); // console.log(data); let obj = JSON.parse(data); let innerData = JSON.parse(obj.data); innerData.quality = s.default; obj.data = JSON.stringify(innerData); let newData = JSON.stringify(obj); // console.log(newData); localStorage.setItem(key, newData); } } } // playList if(s.name == 'loop' && s.default == 'on' && e.detail.pageData.response.contents.twoColumnWatchNextResults.playlist){ const loopId = setInterval(()=>{ if(document.querySelector("[aria-label='Loop playlist']")){ clearInterval(loopId); document.querySelector("[aria-label='Loop playlist']").click(); } },1000); } if(s.name == 'shuffle' && s.default == 'on' && e.detail.pageData.response.contents.twoColumnWatchNextResults.playlist){ const shuffleId = setInterval(()=>{ if(document.querySelector("[aria-label='Shuffle playlist']").getAttribute("aria-pressed") == 'false'){ clearInterval(shuffleId); document.querySelector("[aria-label='Shuffle playlist']").click(); } },1000); } // search if(s.name == 'shorts' && s.default == 'hide'){ // page: "browse" - top, "search" GM_addStyle(` ytd-reel-shelf-renderer { display: none; } ytd-rich-shelf-renderer { display: none; }`) } // promo, ad if(s.name == 'promo' && s.default == 'hide') e.detail.pageData.playerResponse.messages[0].mealbarPromoRenderer = null; if(s.name == 'ad' && s.default == 'hide'){ if(e.detail.pageData.page == "watch"){ // page: "watch" e.detail.pageData.playerResponse.auxiliaryUi = null; // testing } GM_addStyle(` ytd-ad-slot-renderer { display: none; }`) } }catch(err){ //console.log(err) } }); }); const qualitySetting = settings.find(s => s.name === 'quality'); if(qualitySetting){ for(let i = 0; i < localStorage.length; i++){ let key = localStorage.key(i); if(key === "yt-player-quality"){ let data = localStorage.getItem(key); if(data){ try{ // Parse the existing data let obj = JSON.parse(data); let innerData = JSON.parse(obj.data); // Update quality with default value innerData.quality = qualitySetting.default; obj.data = JSON.stringify(innerData); // Save back to localStorage let newData = JSON.stringify(obj); localStorage.setItem(key, newData); // console.log('Quality updated to:', qualitySetting.default); }catch{} } } } } /* page load function document.addEventListener('yt-service-request-sent', e => { // console.log('loaded', e) }); */