YouTube Pr

YouTube Premium'

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Advertisement:

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

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 });
})();