YouTube Pr

YouTube Premium'

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

Advertisement:

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

Advertisement:

// ==UserScript==
// @name         YouTube Pr
// @namespace    http://tampermonkey.net/
// @version      19.8
// @description  YouTube Premium'
// @author       Mustafa Hakan
// @match        *://*.youtube.com/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

(function () {
    'use strict';
    const LANG = localStorage.getItem('yt-lang') || 'tr';
    const THEME = localStorage.getItem('yt-theme') || 'Koyu Mavi';
    const TEXT = {
        tr: {
            title: 'ARKA PLAN RENK SEÇ',
            lang: 'TR',
            premium: 'Premium',
            loop: 'Döngü',
            default: 'Varsayılan (Siyah)',
            colors: {
                'Koyu Mavi': 'Koyu Mavi', 'Koyu Gri': 'Koyu Gri',
                'Koyu Yeşil': 'Koyu Yeşil', 'Koyu Mor': 'Koyu Mor',
                'Koyu Kahve': 'Koyu Kahve', 'Koyu Bordo': 'Koyu Bordo',
                'Gece Mavisi': 'Gece Mavisi', 'Kömür': 'Kömür',
                'Lacivert': 'Lacivert', 'Zeytin': 'Zeytin'
            }
        },
        en: {
            title: 'BACKGROUND COLOR',
            lang: 'EN',
            premium: 'Premium',
            loop: 'Loop',
            default: 'Default (Black)',
            colors: {
                'Koyu Mavi': 'Dark Blue', 'Koyu Gri': 'Dark Gray',
                'Koyu Yeşil': 'Dark Green', 'Koyu Mor': 'Dark Purple',
                'Koyu Kahve': 'Dark Brown', 'Koyu Bordo': 'Dark Burgundy',
                'Gece Mavisi': 'Night Blue', 'Kömür': 'Charcoal',
                'Lacivert': 'Navy', 'Zeytin': 'Olive'
            }
        }
    };
    const THEMES = {
        'Koyu Mavi': '#1a2430',
        'Koyu Gri': '#282828',
        'Koyu Yeşil': '#1a2a1a',
        'Koyu Mor': '#241a2a',
        'Koyu Kahve': '#2a1f1a',
        'Koyu Bordo': '#2a1a1a',
        'Gece Mavisi': '#0f1a2a',
        'Kömür': '#1a1a1a',
        'Lacivert': '#141a2a',
        'Zeytin': '#1f2a1a'
    };
    const SNOOPY_SVG = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28">
      <path d="M12 4C8 4 5 7 5 11C5 13.5 6.5 15.5 8 16.5V19C8 19.5 8.5 20 9 20H15C15.5 20 16 19.5 16 19V16.5C17.5 15.5 19 13.5 19 11C19 7 16 4 12 4Z" fill="#FFFFFF" stroke="#000000" stroke-width="1.5" stroke-linejoin="round"/>
      <path d="M4 9C3 11 3 14 4.5 15.5C5.5 16.5 7 16 7 14C7 11.5 6 9 4 9Z" fill="#000000"/>
      <circle cx="10" cy="10" r="1" fill="#000000"/>
      <circle cx="14" cy="10" r="1" fill="#000000"/>
      <path d="M11 12C11 13 13 13 13 12" stroke="#000000" stroke-width="1" fill="none" stroke-linecap="round"/>
      <ellipse cx="12" cy="14" rx="2" ry="1.2" fill="#000000"/>
    </svg>`;
    function setTheme(themeName) {
        localStorage.setItem('yt-theme', themeName);
        if (themeName === 'Varsayılan' || themeName === 'Default') {
            let s = document.getElementById('yt-style');
            if (s) s.remove();
            return;
        }
        const color = THEMES[themeName];
        if (!color) return;
        let s = document.getElementById('yt-style');
        if (!s) {
            s = document.createElement('style');
            s.id = 'yt-style';
            document.head.appendChild(s);
        }
        const textColor = (themeName === 'Beyaz') ? '#111' : '#ffffff';
        s.textContent = `
            html, body, ytd-app, #content, #page-manager, ytd-browse, ytd-watch-flexy,
            ytd-two-column-browse-results-renderer, #primary, #secondary {
                background-color: ${color} !important;
                background-image: none !important;
            }
            #yt-label {
                border: none !important;
                background: transparent !important;
                color: ${textColor} !important;
                padding: 0 4px !important;
                box-shadow: none !important;
                text-shadow: 0 0 8px rgba(0,0,0,0.9) !important;
                font-weight: 600 !important;
                cursor: pointer;
                margin-left: 6px;
                font-size: 13px !important;
                opacity: 0.9;
            }
            #yt-label:hover { opacity: 0.5; text-decoration: underline; }
            #yt-loop.active { opacity: 0.5 !important; filter: none !important; }
        `;
    }
    function injectSnoopyHead() {
        if (document.getElementById('yt-snoopy-head')) return;
        const progress = document.querySelector('.ytp-progress-bar');
        if (!progress) return;
        const div = document.createElement('div');
        div.id = 'yt-snoopy-head';
        div.innerHTML = SNOOPY_SVG;
        div.style.cssText = `
            position: absolute;
            top: -20px;
            left: 50%;
            transform: translateX(-50%);
            pointer-events: none;
            z-index: 9999;
            filter: drop-shadow(0 3px 6px rgba(0,0,0,0.8));
            width: 28px;
            height: 28px;
        `;
        progress.style.overflow = 'visible';
        progress.appendChild(div);
    }
    function addLoop() {
        if (document.getElementById('yt-loop')) return;
        const ctrl = document.querySelector('.ytp-right-controls');
        if (!ctrl) return;
        const btn = document.createElement('button');
        btn.id = 'yt-loop';
        btn.className = 'ytp-button';
        btn.title = TEXT[LANG].loop;
        btn.innerHTML = `<svg viewBox="0 0 36 36" width="36" height="36">
            <path d="M10 25v-7h2v5h12V12H12v5h-2V10h16v15H10z" fill="#fff"/>
            <path d="M26 9l3 3-3 3" stroke="#fff" stroke-width="2" fill="none" stroke-linecap="round"/>
        </svg>`;
        btn.style.opacity = '0.5';
        btn.onclick = function () {
            const v = document.querySelector('video');
            if (v) { v.loop = !v.loop; btn.classList.toggle('active', v.loop); }
        };
        ctrl.prepend(btn);
    }
    function openPanel() {
        let p = document.getElementById('yt-panel');
        if (p) { p.remove(); return; }
        const activeTheme = localStorage.getItem('yt-theme') || 'Koyu Mavi';
        p = document.createElement('div');
        p.id = 'yt-panel';
        p.style.cssText = 'position:fixed;top:68px;right:18px;background:#1a1a22;border:2px solid #2e2e3a;border-radius:20px;padding:18px 16px 14px;z-index:2147483647;min-width:200px;font-family:sans-serif;box-shadow:0 8px 32px rgba(0,0,0,0.55);';
        const title = document.createElement('div');
        title.textContent = TEXT[LANG].title;
        title.style.cssText = 'color:#6060a0;font-size:10px;font-weight:900;text-align:center;margin-bottom:12px;text-transform:uppercase;';
        p.appendChild(title);
        const grid = document.createElement('div');
        grid.style.cssText = 'display:grid;grid-template-columns:1fr 1fr;gap:6px;';
        const defaultCard = document.createElement('div');
        const isDefaultActive = (activeTheme === 'Varsayılan' || activeTheme === 'Default' || !THEMES[activeTheme]);
        defaultCard.style.cssText = `display:flex;align-items:center;justify-content:center;padding:10px;cursor:pointer;border-radius:10px;border:2px solid ${isDefaultActive ? '#fff' : '#2e2e3a'};background:${isDefaultActive ? '#ffffff20' : '#22222e'};grid-column: span 2;font-size:12px;font-weight:700;color:${isDefaultActive ? '#fff' : '#888'};`;
        defaultCard.textContent = TEXT[LANG].default;
        defaultCard.onclick = () => { setTheme('Varsayılan'); p.remove(); };
        grid.appendChild(defaultCard);
        const colorNames = TEXT[LANG].colors;
        Object.entries(THEMES).forEach(([key, hex]) => {
            const displayName = colorNames[key] || key;
            const isActive = key === activeTheme;
            const card = document.createElement('div');
            card.style.cssText = `display:flex;align-items:center;gap:8px;padding:8px 10px;cursor:pointer;border-radius:10px;border:2px solid ${isActive ? hex : '#2e2e3a'};background:${isActive ? hex + '40' : '#22222e'};`;
            const dot = document.createElement('span');
            dot.style.cssText = `width:16px;height:16px;border-radius:50%;background:${hex};border:1px solid #444;flex-shrink:0;`;
            const lbl = document.createElement('span');
            lbl.textContent = displayName;
            lbl.style.cssText = `font-size:11px;font-weight:700;color:${isActive ? '#fff' : '#aaa'};`;
            card.appendChild(dot);
            card.appendChild(lbl);
            card.onclick = () => { setTheme(key); p.remove(); };
            grid.appendChild(card);
        });
        p.appendChild(grid);
        const hr = document.createElement('div');
        hr.style.cssText = 'border-top:1.5px solid #2e2e3a;margin:12px 0 10px;';
        p.appendChild(hr);
        const langBtn = document.createElement('div');
        langBtn.textContent = TEXT[LANG].lang;
        langBtn.style.cssText = 'cursor:pointer;background:#58CC02;color:#fff;padding:9px;border-radius:12px;text-align:center;font-size:13px;font-weight:800;border-bottom:3px solid #3a9900;';
        langBtn.onclick = () => {
            localStorage.setItem('yt-lang', LANG === 'tr' ? 'en' : 'tr');
            location.reload();
        };
        p.appendChild(langBtn);
        const hint = document.createElement('div');
        hint.textContent = 'Ctrl + Shift + D';
        hint.style.cssText = 'text-align:center;color:#3a3a58;font-size:10px;font-weight:700;margin-top:9px;';
        p.appendChild(hint);
        document.body.appendChild(p);
        setTimeout(() => {
            document.addEventListener('mousedown', function close(e) {
                if (!p.contains(e.target) && e.target.id !== 'yt-label') {
                    p.remove();
                    document.removeEventListener('mousedown', close);
                }
            });
        }, 10);
    }
    document.addEventListener('keydown', function (e) {
        if (e.ctrlKey && e.shiftKey && e.key === 'D') {
            e.preventDefault();
            openPanel();
        }
    });
    function addLabel() {
        if (document.getElementById('yt-label')) return;
        const logo = document.querySelector('#logo');
        if (!logo) return;
        const label = document.createElement('span');
        label.id = 'yt-label';
        label.textContent = TEXT[LANG].premium;
        label.title = 'Ctrl+Shift+D — Tema Paneli';
        label.onclick = function (e) { e.stopPropagation(); openPanel(); };
        logo.parentNode.insertBefore(label, logo.nextSibling);
    }
    function cleanAds() {
        document.querySelectorAll('ytd-ad-slot-renderer,#masthead-ad,.ytd-ad-slot-renderer,ytd-display-ad-renderer,ytd-promoted-sparkles-web-renderer').forEach(el => el.remove());
        const skipBtn = document.querySelector('.ytp-ad-skip-button,.ytp-skip-ad-button');
        if (skipBtn) skipBtn.click();
    }
    function init() {
        setTheme(THEME);
        addLabel();
        addLoop();
        cleanAds();
        injectSnoopyHead();
    }
    setTimeout(init, 1500);
    setInterval(() => {
        injectSnoopyHead();
        addLabel();
        addLoop();
        cleanAds();
    }, 1000);
    new MutationObserver(() => {
        setTimeout(() => {
            injectSnoopyHead();
            addLabel();
            addLoop();
        }, 300);
    }).observe(document.body, { childList: true, subtree: true });
})();