- // ==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)
- });
- */