AdBlockThisYT2

Permite reproducir videos con AdBlock activado sin errores ni bloqueos, incluso en nueva pestaña.

目前為 2025-06-08 提交的版本,檢視 最新版本

// ==UserScript==
// @name         AdBlockThisYT2
// @namespace    SebaARG22
// @version      3.0.1
// @description  Permite reproducir videos con AdBlock activado sin errores ni bloqueos, incluso en nueva pestaña.
// @author       SebaARG22
// @match        *://www.youtube.com/*
// @icon         https://i.imgur.com/fd1D46S.png
// @run-at       document-start
// @license      MIT
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    const LOG_PREFIX = '[😭 CryTubeFix]';

    console.log(`${LOG_PREFIX} Script iniciado. Bloqueando el berrinche de YouTube.`);

    // 1. Oculta overlays molestos
    const css = `
        ytd-enforcement-message-view-model,
        tp-yt-paper-dialog,
        ytd-popup-container,
        #dialog,
        .ytp-ad-overlay-container,
        .ytp-ad-player-overlay,
        .ytp-ad-module {
            display: none !important;
            opacity: 0 !important;
            visibility: hidden !important;
        }
        body {
            overflow: auto !important;
        }
    `;
    const style = document.createElement('style');
    style.textContent = css;
    document.documentElement.appendChild(style);

    console.log(`${LOG_PREFIX} CSS inyectado. Publicidad visual: OUT.`);

    // 2. Observa cambios en el DOM para eliminar bloqueos dinámicos
    const observer = new MutationObserver(() => {
        const dialogs = document.querySelectorAll('ytd-popup-container tp-yt-paper-dialog, ytd-enforcement-message-view-model');
        dialogs.forEach(el => {
            console.log(`${LOG_PREFIX} Eliminado un popup llorón.`);
            el.remove();
        });
        const backdrop = document.querySelector('#backdrop');
        if (backdrop) {
            console.log(`${LOG_PREFIX} Backdrop eliminado.`);
            backdrop.remove();
        }
        document.body.style.overflow = 'auto';
    });
    observer.observe(document, { childList: true, subtree: true });

    console.log(`${LOG_PREFIX} Observador activado. Listo para limpiar rabietas.`);

    // 3. Soluciona carga de video en nueva pestaña
    if (window.location.pathname.startsWith('/watch')) {
        window.addEventListener('DOMContentLoaded', () => {
            const player = document.querySelector('video');
            if (!player) {
                console.warn(`${LOG_PREFIX} Player no cargado. Reintentando...`);
                location.href = location.href;
            } else {
                console.log(`${LOG_PREFIX} Video cargado correctamente.`);
            }
        });
    }

})();