YouTube - 阻止自动播放预览和频道预告片

在所有YouTube页面上阻止缩略图悬停预览(WebP和视频)并停止频道预告片(视频+音频)。保留进度条和播放按钮。无需登录或权限,页面加载时运行。

当前为 2025-11-14 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         YouTube - Block Autoplay Preview & Channel Trailer
// @name:ar      يوتيوب - حظر معاينة التشغيل التلقائي وإعلان القناة
// @name:bg      YouTube - Блокиране на Автоматично Възпроизвеждане на Преглед и Трейлър на Канал
// @name:ca      YouTube - Bloqueja Previsualització de Reproducció Automàtica i Tràiler del Canal
// @name:cs      YouTube - Blokovat Autoplay Náhled a Trailer Kanálu
// @name:cy      YouTube - Bloc Rhagddangos Chwarae Awtomatig a Threilar Sianel
// @name:da      YouTube - Blokér Autoplay-Forhåndsvisning og Kanaltrailer
// @name:de      YouTube - Autoplay-Vorschau und Kanaltrailer Blockieren
// @name:el      YouTube - Μπλοκάρει Προεπισκόπηση Αυτόματης Αναπαραγωγής και Τρέιλερ Καναλιού
// @name:eo      YouTube - Bloki Aŭtomatan Antaŭrigardon kaj Kanalan Antaŭfilmon
// @name:es      YouTube - Bloquear Vista Previa de Reproducción Automática y Tráiler del Canal
// @name:et      YouTube - Blokeeri Autoplay Eelvaade ja Kanali Treiler
// @name:eu      YouTube - Autoplay Aurrebista eta Kanaleko Trailerra Blokeatu
// @name:fi      YouTube - Estä Autotoiston Esikatselu ja Kanavan Traileria
// @name:fr      YouTube - Bloquer Aperçu Lecture Automatique et Bande-annonce de Chaîne
// @name:fr-CA   YouTube - Bloquer Aperçu Lecture Automatique et Bande-annonce de Chaîne
// @name:gl      YouTube - Bloquear Vista Previa de Reprodución Automática e Tráiler do Canal
// @name:he      YouTube - חסום תצוגה מקדימה אוטומטית וטריילר ערוץ
// @name:hi      YouTube - ऑटोप्ले पूर्वावलोकन और चैनल ट्रेलर ब्लॉक करें
// @name:hr      YouTube - Blokiraj Automatski Pregled i Trailer Kanala
// @name:hu      YouTube - Autoplay Előnézet és Csatorna Előzetes Blokkolása
// @name:id      YouTube - Blokir Pratinjau Putar Otomatis dan Trailer Saluran
// @name:is      YouTube - Blokera Sjálfvirka Forskoðun og Rásarstiklu
// @name:it      YouTube - Blocca Anteprima Riproduzione Automatica e Trailer del Canale
// @name:ja      YouTube - 自動再生プレビューとチャンネルトレーラーをブロック
// @name:ka      YouTube - ავტომატური წინასწარი ჩვენებისა და არხის ტრეილერის ბლოკირება
// @name:ko      YouTube - 자동 재생 미리보기 및 채널 예고편 차단
// @name:lt      YouTube - Blokuoja Autoplay Peržiūrą ir Kanalo Anonsą
// @name:lv      YouTube - Bloķēt Autoplay Priekšskatījumu un Kanāla Treileri
// @name:ms      YouTube - Blok Pratinjau Putar Automatik dan Treler Saluran
// @name:nb      YouTube - Blokker Forhåndsvisning av Autoplay og Kanaltrailer
// @name:nl      YouTube - Blokkeer Automatische Afspeelvoorbeeld en Kanaaltrailer
// @name:no      YouTube - Blokker Autoplay-Forhåndsvisning og Kanaltrailer
// @name:pl      YouTube - Blokuj Podgląd Automatycznego Odtwarzania i Zwiastun Kanału
// @name:pt-BR   YouTube - Bloquear Prévia de Reprodução Automática e Trailer do Canal
// @name:ro      YouTube - Blochează Previzualizare Redare Automată și Trailer de Canal
// @name:ru      YouTube - Блокировать Автовоспроизведение Превью и Трейлер Канала
// @name:sk      YouTube - Blokovať Autoplay Náhľad a Ukážku Kanála
// @name:sl      YouTube - Blokiraj Samodejni Predogled in Napovednik Kanala
// @name:sq      YouTube - Bllokoni Parapamjen e Riprodhimit Automatike dhe Trailerin e Kanalit
// @name:sr      YouTube - Blokiraj Automatsko Reprodukciju Pregleda i Trejler Kanala
// @name:sv      YouTube - Blockera Autoplay-Förhandsgranskning och Kanaltrailer
// @name:th      YouTube - บล็อกตัวอย่างการเล่นอัตโนมัติและตัวอย่างช่อง
// @name:tr      YouTube - Otomatik Oynatma Önizlemesini ve Kanal Fragmanını Engelle
// @name:ug      يوتيۇب - ئاپتوماتىك كۆرۈش ئالدىن كۆرۈش ۋە قانال تىزىرلىقىنى چەكلەش
// @name:uk      YouTube - Блокувати Автовідтворення Попереднього Перегляду та Трейлер Каналу
// @name:vi      YouTube - Chặn Xem Trước Tự Động Khi Hover & Trailer Kênh
// @name:zh-CN   YouTube - 阻止自动播放预览和频道预告片
// @name:zh-TW   YouTube - 阻止自動播放預覽和頻道預告片
// @description  Blocks YouTube thumbnail hover previews (WebP & video) and stops channel trailers (video + audio). Keeps progress bars and play buttons. Works on all pages, no login or permissions needed, runs at document-start.
// @description:ar يحظر معاينات الصور المصغرة عند التمرير (WebP وفيديو) ويوقف إعلانات القناة (فيديو + صوت). يحافظ على أشرطة التقدم وأزرار التشغيل. يعمل على جميع الصفحات، بدون تسجيل دخول أو أذونات، يبدأ فور تحميل الصفحة.
// @description:bg Блокира предварителни прегледи при навеждане на миниатюри (WebP и видео) и спира трейлърите на канали (видео + звук). Запазва лентите за напредък и бутоните за възпроизвеждане. Работи на всички страници, без вход или разрешения, стартира при зареждане на страницата.
// @description:ca Bloqueja les visualitzacions prèvies de les miniatures en passar-hi per sobre (WebP i vídeo) i atura els tràilers del canal (vídeo + àudio). Manté les barres de progrés i els botons de reproducció. Sense inici de sessió ni permisos, s'executa al carregament de la pàgina.
// @description:cs Blokuje náhledy miniaturek při najetí myší (WebP a video) a zastavuje trailery kanálů (video + zvuk). Zachovává ukazatele postupu a tlačítka přehrávání. Bez přihlášení nebo oprávnění, spouští se při načtení stránky.
// @description:cy Bloc rhagddangos thumbnail hover (WebP a fideo) ac atal treilars sianel (fideo + sain). Cadw bariau cynnydd a botymau chwarae. Dim mewngofnodi na chaniatâd, yn rhedeg wrth lwytho'r dudalen.
// @description:da Blokerer miniature-hover-forhåndsvisninger (WebP og video) og stopper kanaltrailere (video + lyd). Bevarer fremskridtsmærker og afspilningsknapper. Ingen login eller tilladelser, kører ved sideindlæsning.
// @description:de Blockiert Hover-Vorschauen von Thumbnails (WebP & Video) und stoppt Kanaltrailer (Video + Ton). Behält Fortschrittsbalken und Play-Buttons bei. Kein Login oder Berechtigungen erforderlich, startet beim Seitenladen.
// @description:el Μπλοκάρει προεπισκοπήσεις εικόνων miniature κατά το hover (WebP και βίντεο) και σταματά τρέιλερ καναλιών (βίντεο + ήχος). Διατηρεί γραμμές προόδου και κουμπιά αναπαραγωγής. Χωρίς σύνδεση ή άδειες, εκτελείται κατά τη φόρτωση σελίδας.
// @description:eo Blokas miniaturojn hover antaŭrigardojn (WebP & video) kaj haltigas kanalajn antaŭfilmojn (video + sono). Konservas progresajn stangojn kaj ludbutonojn. Sen ensaluto aŭ permesoj, lanĉiĝas ĉe ŝarĝo de paĝo.
// @description:es Bloquea vistas previas de miniaturas al pasar el mouse (WebP y video) y detiene tráilers de canal (video + audio). Mantiene barras de progreso y botones de reproducción. Sin inicio de sesión ni permisos, se ejecuta al cargar la página.
// @description:et Blokeerib thumbnail-kursorilähisvaadet (WebP ja video) ja peatab kanalite treilerid (video + heli). Säilitab edenemisribad ja esitusnupud. Ilma sisselogimise või lubadeta, käivitub lehe laadimisel.
// @description:eu Aurrebista blokeatu thumbnail hover (WebP eta bideoa) eta gelditu kanalaren trailerrak (bideoa + audioa). Mantentzen ditu aurrerapen-barrak eta erreproduzitzeko botoiak. Saioa hasi gabe eta baimenik gabe, orria kargatzean exekutatzen da.
// @description:fi Estää thumbnail-kohdistus-esikatselut (WebP ja video) ja pysäyttää kanavan trailerit (video + ääni). Säilyttää edistymispalkit ja toistonapit. Ei kirjautumista tai lupia, käynnistyy sivun latautuessa.
// @description:fr Bloque les aperçus au survol des miniatures (WebP et vidéo) et arrête les bandes-annonces de chaîne (vidéo + son). Conserve les barres de progression et boutons de lecture. Sans connexion ni permission, s'exécute au chargement de la page.
// @description:fr-CA Bloque les aperçus au survol des miniatures (WebP et vidéo) et arrête les bandes-annonces de chaîne (vidéo + son). Conserve les barres de progression et boutons de lecture. Sans connexion ni permission, s'exécute au chargement de la page.
// @description:gl Bloquea as vistas previas de miniaturas ao pasar o rato (WebP e vídeo) e detén os tráilers do canal (vídeo + son). Mantén as barras de progreso e os botóns de reprodución. Sen inicio de sesión nin permisos, execútase ao cargar a páxina.
// @description:he חוסם תצוגות מקדימות של תמונות ממוזערות (WebP ווידאו) ועוצר טריילרים של ערוצים (וידאו + קול). שומר על סרגלי התקדמות וכפתורי ניגון. ללא כניסה או הרשאות, פועל בטעינת הדף.
// @description:hi YouTube थंबनेल होवर पूर्वावलोकन (WebP और वीडियो) और चैनल ट्रेलर (वीडियो + ऑडियो) ब्लॉक करता है। प्रोग्रेस बार और प्ले बटन रखता है। सभी पेजों पर काम करता है, लॉगिन या अनुमति नहीं चाहिए, पेज लोड होते ही चलता है।
// @description:hr Blokira preglede pri lebdenju na sličicama (WebP i video) i zaustavlja trailere kanala (video + zvuk). Zadržava trake napretka i tipke za reprodukciju. Bez prijave ili dozvola, pokreće se pri učitavanju stranice.
// @description:hu Blokkolja a miniatűr hover előnézeteket (WebP és video) és megállítja a csatorna előzeteseit (video + hang). Megtartja a folyamatjelzőket és lejátszási gombokat. Bejelentkezés vagy engedély nélkül, oldal betöltésekor fut.
// @description:id Memblokir pratinjau hover thumbnail (WebP & video) dan menghentikan trailer saluran (video + audio). Menjaga bilah kemajuan dan tombol putar. Tanpa login atau izin, berjalan saat halaman dimuat.
// @description:is Blokkar forsýnispillist fyrirsýni á öllum YouTube síðum (WebP og video) og stöðvar rásarstiklur (myndskeið + hljóð). Heldur áfram framfara stöng og spila hnöppum. Engin innskráning eða heimild, keyrir við hleðslu síðu.
// @description:it Blocca anteprime hover su miniature (WebP e video) e ferma i trailer dei canali (video + audio). Mantiene barre di avanzamento e pulsanti play. Nessun login o permessi, si avvia al caricamento della pagina.
// @description:ja YouTubeのすべてのページでサムネイルのホバー時プレビュー(WebPおよびビデオ)とチャンネルトレーラー(ビデオ+音声)をブロックします。進捗バーと再生ボタンを保持。ログインや権限不要、ページ読み込み時に実行。
// @description:ka ბლოკავს მინიატურების ჰოვერ წინასწარ ჩვენებას (WebP & ვიდეო) და აჩერებს არხის ტრეილერებს (ვიდეო + ხმა). ინახავს პროგრესის ზოლებსა და დაკვრის ღილაჩებს. შესვლა ან ნებართვა არაა საჭირო, გვერდის ჩატვირთვისას მუშაობს.
// @description:ko 모든 YouTube 페이지에서 썸네일 호버 미리보기(WebP 및 비디오)와 채널 예고편(비디오 + 오디오)을 차단합니다. 진행 막대와 재생 버튼을 유지합니다. 로그인이나 권한 불필요, 페이지 로드 시 실행.
// @description:lt Blokuoti miniatiūrų užvedimo peržiūras (WebP ir vaizdo įrašus) ir sustabdyti kanalų anonsus (vaizdo įrašas + garsas). Išlaiko pažangos juostas ir grojimo mygtukus. Be prisijungimo ar leidimų, veikia puslapio įkėlimo metu.
// @description:lv Bloķē sīktēlu pārslēgšanās priekšskatījumu (WebP un video) un aptur kanāla treilerus (video + audio). Saglabā progresa joslas un atskaņošanas pogas. Bez pieteikšanās vai atļaujām, darbojas lapas ielādes laikā.
// @description:ms Menghalang pratinjau hover thumbnail (WebP & video) dan menghentikan treler saluran (video + audio). Menyimpan bar kemajuan dan butang main. Tiada log masuk atau kebenaran, dijalankan semasa halaman dimuat.
// @description:nb Blokkerer forhåndsvisninger av miniatyrbilder ved svev (WebP og video) og stopper kanaltrailere (video + lyd). Beholder fremdriftslinjer og avspillingsknapper. Ingen innlogging eller tilladelser, kjører ved sidelasting.
// @description:nl Blokkeert hover-voorbeelden van thumbnails (WebP en video) en stopt kanaaltrailers (video + audio). Behoudt voortgangsbalken en afspeelknoppen. Geen login of toestemming, start bij paginalading.
// @description:no Blokkerer forhåndsvisninger av miniatyrer ved svev (WebP og video) og stopper kanaltrailere (video + lyd). Beholder fremdriftslinjer og avspillingsknapper. Ingen innlogging eller tilladelser, kjører ved sidelasting.
// @description:pl Blokuje podglądy miniaturek przy najechaniu myszą (WebP i wideo) oraz zatrzymuje zwiastuny kanałów (wideo + dźwięk). Zachowuje paski postępu i przyciski odtwarzania. Bez logowania i uprawnień, uruchamia się przy ładowaniu strony.
// @description:pt-BR Bloqueia prévias de miniaturas ao passar o mouse (WebP e vídeo) e interrompe trailers de canal (vídeo + áudio). Mantém barras de progresso e botões de play. Sem login ou permissão, executa ao carregar a página.
// @description:ro Blochează previzualizări la hover pe miniaturi (WebP și video) și oprește trailerele de canal (video + audio). Păstrează barele de progres și butoanele de redare. Fără login sau permisiuni, rulează la încărcarea paginii.
// @description:ru Блокирует превью при наведении на миниатюры (WebP и видео) и останавливает трейлеры каналов (видео + звук). Сохраняет индикаторы прогресса и кнопки воспроизведения. Без входа или разрешений, запускается при загрузке страницы.
// @description:sk Blokuje náhľady miniatúr pri prechode myšou (WebP a video) a zastavuje ukážky kanálov (video + zvuk). Zachováva ukazovatele postupu a tlačidlá prehrávania. Bez prihlásenia alebo povolení, spúšťa sa pri načítaní stránky.
// @description:sl Blokira predoglede sličic ob preletu (WebP in video) in ustavi napovednike kanalov (video + zvok). Ohrani vrstice napredka in gumbe za predvajanje. Brez prijave ali dovoljenj, zažene ob nalaganju strani.
// @description:sq Bllokon parapamjen e hover thumbnail (WebP dhe video) dhe ndalon trailerat e kanalit (video + audio). Mbaj shirita përparimi dhe butona luajtjeje. Pa hyrje ose leje, ekzekutohet gjatë ngarkimit të faqes.
// @description:sr Blokira preglede pri lebdećem pokazivaču na sličicama (WebP i video) i zaustavlja trejlere kanala (video + zvuk). Zadržava trake napretka i dugmiće za reprodukciju. Bez prijave ili dozvola, pokreće se pri učitavanju stranice.
// @description:sv Blockerar förhandsgranskningar vid hovring på miniatyrer (WebP och video) och stoppar kanaltrailers (video + ljud). Behåller förloppsindikatorer och uppspelningsknappar. Ingen inloggning eller behörighet, körs vid sidladdning.
// @description:th บล็อกตัวอย่างการเลื่อนเมาส์บนรูปย่อ (WebP และวิดีโอ) และหยุดตัวอย่างช่อง (วิดีโอ + เสียง) รักษาแถบความคืบหน้าและปุ่มเล่น ไม่ต้องล็อกอินหรืออนุญาต ทำงานเมื่อโหลดหน้าเว็บ
// @description:tr Tüm YouTube sayfalarında küçük resim hover önizlemelerini (WebP ve video) ve kanal fragmanlarını (video + ses) engeller. İlerleme çubuklarını ve oynat düğmelerini korur. Giriş veya izin gerekmez, sayfa yüklenirken çalışır.
// @description:ug بارلىق YouTube بەتلىرىدە كىچىك رەسىم hover ئالدىن كۆرۈشلىرىنى (WebP & ۋىدىيو) ۋە قانال تىزىرلىقلىرىنى (ۋىدىيو + ئاۋاز) چەكلەيدۇ. ئىلگىرىلەش تارىمىقى ۋە ئويناش كۇنۇپكىلىرىنى ساقلايدۇ. كىرىش ياكى ئىجازەت تەلەپ قىلمايدۇ، بەت يۈكلەنگەندە ئىجرا بولىدۇ.
// @description:uk Блокує попередній перегляд при наведенні на мініатюри (WebP та відео) та зупиняє трейлери каналів (відео + звук). Зберігає смуги прогресу та кнопки відтворення. Без входу чи дозволів, запускається при завантаженні сторінки.
// @description:vi Chặn hiệu ứng xem trước khi hover thumbnail (ảnh động WebP & video) và dừng trailer kênh (video + âm thanh). Giữ nguyên thanh tiến độ, nút play và ảnh tĩnh. Không cần đăng nhập, không cần quyền, chạy ngay khi tải trang.
// @description:zh-CN 在所有YouTube页面上阻止缩略图悬停预览(WebP和视频)并停止频道预告片(视频+音频)。保留进度条和播放按钮。无需登录或权限,页面加载时运行。
// @description:zh-TW 在所有YouTube頁面上阻止縮圖懸停預覽(WebP和視頻)並停止頻道預告片(視頻+音頻)。保留進度條和播放按鈕。無需登錄或權限,頁面載入時執行。
// @namespace    https://greasyfork.org/users/979364-miebie-1412
// @author       miebie.1412
// @version      1.2.8
// @match        https://www.youtube.com/*
// @match        http://www.youtube.com/*
// @match        https://youtube.com/*
// @match        http://youtube.com/*
// @grant        none
// @run-at       document-start
// @license      MIT
// @homepageURL  https://greasyfork.org/en/users/979364-miebie-1412
// @supportURL   https://greasyfork.org/en/users/979364-miebie-1412
// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABm0lEQVR4AdSWAZaCIBRFaTY2tbJsZTUra979iqECYqLWHJ4IfP67cMLhxx38NwF4Onfu1KiurfN4vQMAGd4V4HXVe23dOw+lbksP0A1MCNuwqk92mEVaUgOQOcbIOnd4AGF+BiBDa6jevXiA3Y1laIs+EkAMzn0FwEOoN+kS6uTcaSznnI8h3kvd6TK3AzeZXKRGeoSKpQzGiTcpDihV8ZIDwLCJTyvvBUrR7KKqackB/E3DXz36dqyGI1sOgPGoZM4Ruqp+SiUgycW8BTCiAqQEYjStbdYAIBMQ7AY7Q7tYtQAwTP7QGEypFoA/rosh1gJgaN+J1Arn+nMAvzOTl6w6mSsHkPTn4yK9/csPE+cA+ktDOGHpe/edSJ6OHABe3OHCi2kSSkY2FtTM4+rFvZJcUc0BMIkEXiQEijM/kAJtLKiZk1y54qyUAFjgVo+PAeA8b7XIbN4jd8AWbQA60zRQlrbiIJcd8zMAEguCq5N10t5QmONlFj0ArQ6CQX+hrFmTl/8b1NiZBgD0CAJCu1DqfXUd5CDvZIf/AQAA//8BTt4CAAAABklEQVQDALNfokFDr0z6AAAAAElFTkSuQmCC
// ==/UserScript==
(function () {
    'use strict';
    const style = document.createElement('style');
    style.textContent = `
        ytd-moving-thumbnail-renderer,
        .ytd-moving-thumbnail-renderer,
        ytd-thumbnail-overlay-resume-playback-renderer,
        .ytd-thumbnail-overlay-resume-playback-renderer,
        .ytp-cued-thumbnail-overlay,
        .ytp-cued-thumbnail-overlay-image,
        ytd-thumbnail-overlay-loading-preview-renderer,
        .ytd-thumbnail-overlay-loading-preview-renderer,
        ytd-video-preview,
        .ytd-video-preview,
        #thumbnail-overlay-play,
        .thumbnail-overlay-play,
        #video-preview-container,
        .video-preview-container,
        ytd-channel-video-player-renderer,
        #c4-player,
        ytd-player[context*="CHANNEL_TRAILER"] {
            display: none !important;
            visibility: hidden !important;
            height: 0 !important;
            width: 0 !important;
            overflow: hidden !important;
            pointer-events: none !important;
        }
        ytd-thumbnail img,
        .ytd-thumbnail img {
            transition: none !important;
            opacity: 1 !important;
        }
        #overlays,
        .ytd-rich-item-renderer #overlays,
        ytd-thumbnail[has-inline-playback-button] #overlays,
        ytd-thumbnail-overlay-toggle-pause-renderer,
        .ytd-thumbnail-overlay-toggle-pause-renderer {
            all: unset !important;
            display: block !important;
        }
    `;
    (document.head || document.documentElement).appendChild(style);
    const blockAudio = () => {
        ['AudioContext', 'webkitAudioContext'].forEach(name => {
            if (window[name] && !window[name].prototype._blocked) {
                const AC = window[name];
                AC.prototype._blocked = true;
                const dummy = { connect: () => {}, disconnect: () => {} };
                AC.prototype.createMediaElementSource = () => dummy;
                AC.prototype.resume = () => Promise.resolve();
            }
        });
    };
    blockAudio();
    setInterval(blockAudio, 200);
    const isMainVideo = (video) => {
        return location.pathname.startsWith('/watch') &&
               (video.closest('ytd-watch-flexy') || video.closest('#ytd-player') || video.classList.contains('html5-main-video'));
    };
    const isTrailer = (el) => {
        return el.closest('ytd-channel-video-player-renderer') ||
               el.id === 'c4-player' ||
               (el.tagName === 'YTD-PLAYER' && el.getAttribute('context') && el.getAttribute('context').includes('CHANNEL_TRAILER'));
    };
    const killVideo = (video) => {
        if (!video || video._killed || isMainVideo(video)) return;
        if (video.src && video.src.startsWith('blob:')) URL.revokeObjectURL(video.src);
        video.pause();
        video.muted = true;
        video.volume = 0;
        video.currentTime = 0;
        video.src = '';
        video.removeAttribute('src');
        try { video.load(); } catch(e) {}
        video._killed = true;
    };
    const blockAll = () => {
        document.querySelectorAll('img[src*="an_webp"], video[src*="an_webp"], img[src*="video-preview"], video[src*="video-preview"]').forEach(el => {
            if (el.tagName === 'IMG') {
                el.src = el.src.replace(/an_webp\/[^&]*&/g, '').replace(/video-preview\/[^&]*&/g, '');
                el.srcset = '';
            } else if (el.tagName === 'VIDEO') {
                el.src = el.src.replace(/an_webp\/[^&]*&/g, '').replace(/video-preview\/[^&]*&/g, '');
                el.pause();
                el.currentTime = 0;
                el.removeAttribute('autoplay');
            }
        });
        if (!location.pathname.startsWith('/watch')) {
            document.querySelectorAll('video').forEach(v => {
                if (isTrailer(v)) killVideo(v);
            });
            document.querySelectorAll('ytd-channel-video-player-renderer, #c4-player, ytd-player').forEach(el => {
                if (isTrailer(el)) {
                    const vid = el.querySelector('video');
                    if (vid) killVideo(vid);
                }
            });
        }
    };
    const observer = new MutationObserver(blockAll);
    observer.observe(document.documentElement, {
        childList: true,
        subtree: true,
        attributes: true,
        attributeFilter: ['src', 'srcset', 'class', 'id', 'context']
    });
    blockAll();
    setInterval(blockAll, 500);
    let lastUrl = location.href;
    const navObs = new MutationObserver(() => {
        if (location.href !== lastUrl) {
            lastUrl = location.href;
            setTimeout(blockAll, 100);
        }
    });
    navObs.observe(document, { subtree: true, childList: true });
    ['pushState', 'replaceState'].forEach(m => {
        const orig = history[m];
        history[m] = function() {
            orig.apply(this, arguments);
            setTimeout(() => { if (location.href !== lastUrl) blockAll(); }, 80);
        };
    });
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', blockAll);
    }
})();