YouTube - Custom Default Settings

live chat, transcript, auto play count

Ajankohdalta 2.1.2025. Katso uusin versio.

// ==UserScript==
// @name         YouTube - Custom Default Settings
// @name:en      YouTube - Custom Default Settings
// @name:ja      YouTube - 初期設定の変更
// @namespace    http://tampermonkey.net/
// @version      2024-12-29
// @description  live chat, transcript, auto play count
// @description:en live chat, transcript, auto play count
// @description:ja 画質 次の動画への秒数 文字起こしの有無 ライブチャットの有無などの変更
// @author       ぐらんぴ
// @match        https://www.youtube.com/*
// @icon         https://www.youtube.com/favicon.ico
// @grant        none
// @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: '1080', /* 144, 240, 360, 480, 720, 1080 */ },
    // // page: "all"
    { name: 'Promo', default: 'hide', /* show or hide */ },
];
document.addEventListener('yt-page-data-fetched', e =>{
    let res = e.detail.pageData.response
    // console.log(e.detail);
    console.log(e.detail.pageData)
    settings.forEach(s =>{
        try{
            // 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') document.querySelector(".annotation.annotation-type-custom").style.display = "none" // https://i.ytimg.com/an/
            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
            // page: "all"
            if(s.name == 'promo' && s.default == 'hide'){
                // promo
                e.detail.pageData.playerResponse.messages[0].mealbarPromoRenderer.isVisible = false;
            }
        }catch{}
    });
});