max / YouTube - حظر معاينة التشغيل التلقائي للصور المصغرة وتريلر القناة

// ==UserScript==
// @name         YouTube - Block Autoplay Preview Thumbnail and Channel Trailer
// @name:af      YouTube - Blokkeer Outomatiese Voorskou van Duimnaels en Kanaalvoorskou
// @name:am      YouTube - የራስ-ፕሌይ ቅድመ-እይታ ታምብኔይል እና ቻናል ትሬይለር አግድ
// @name:ar      YouTube - حظر معاينة التشغيل التلقائي للصور المصغرة وتريلر القناة
// @name:as      YouTube - অটোপ্লে থাম্বনেইল পূৰ্বদৰ্শন আৰু চেনেল ট্ৰেইলাৰ ব্লক কৰক
// @name:az      YouTube - Kiçik Şəkillərin Avtomatik Önizləməsini və Kanal Treylerini Blokla
// @name:bg      YouTube - Блокиране на Автоматичен Преглед на Миниатюри и Трейлър на Канал
// @name:bn      YouTube - অটোপ্লে থাম্বনেল প্রিভিউ এবং চ্যানেল ট্রেলার ব্লক করুন
// @name:bs      YouTube - Blokiraj Automatski Pregled Sličica i Trejler Kanala
// @name:ca      YouTube - Bloqueja Previsualització de Reproducció Automàtica de Miniatures i Tràiler del Canal
// @name:cs      YouTube - Blokování Automatického Náhledu Miniatur a Traileru Kanálu
// @name:cy      YouTube - Blocio Rhagolwg Chwarae Awtomatig Thumbnail a Threilar Sianel
// @name:da      YouTube - Blokér Autoplay-Forhåndsvisning af Miniaturer og Kanaltrailer
// @name:de      YouTube - Autoplay-Vorschau von Vorschaubildern und Kanaltrailer blockieren
// @name:el      YouTube - Μπλοκάρισμα Προεπισκόπησης Αυτόματης Αναπαραγωγής Μικρογραφιών και Τρέιλερ Καναλιού
// @name:eo      YouTube - Bloki Aŭtomatan Antaŭrigardon de Miniaturoj kaj Kanalan Antaŭfilmon
// @name:es      YouTube - Bloquear Vista Previa de Reproducción Automática de Miniaturas y Tráiler del Canal
// @name:et      YouTube - Blokeeri Autoplay Eelvaade Miniatuuride ja Kanali Treileri
// @name:eu      YouTube - Blokeatu Autoplay Aurrebista Thumbnail eta Kanaleko Trailerra
// @name:fa      YouTube - مسدود کردن پیش‌نمایش خودکار تصویر بندانگشتی و تریلر کانال
// @name:fi      YouTube - Estä Autotoiston Esikatselu Miniatuureista ja Kanavan Traileria
// @name:fr      YouTube - Bloquer Aperçu Lecture Automatique des Miniatures et Bande-annonce de Chaîne
// @name:fr-CA   YouTube - Bloquer Aperçu Lecture Automatique des Miniatures et Bande-annonce de Chaîne
// @name:gl      YouTube - Bloquear Vista Previa de Reprodución Automática de Miniaturas e Tráiler do Canal
// @name:gu      YouTube - ઓટોપ્લે પ્રિવ્યૂ થમ્બનેલ અને ચેનલ ટ્રેલર બ્લોક કરો
// @name:he      YouTube - חסימת תצוגה מקדימה אוטומטית של תמונות ממוזערות וטריילר ערוץ
// @name:hi      YouTube - ऑटोप्ले थंबनेल पूर्वावलोकन और चैनल ट्रेलर ब्लॉक करें
// @name:hr      YouTube - Blokiraj Automatski Pregled Miniatura i Trailer Kanala
// @name:hu      YouTube - Autoplay Előnézet Miniatűrök és Csatorna Előzetes Blokkolása
// @name:id      YouTube - Blokir Pratinjau Putar Otomatis Thumbnail dan Trailer Saluran
// @name:is      YouTube - Blokkar Sjálfvirka Forskoðun Smámynda og Rásarstiklu
// @name:it      YouTube - Blocca Anteprima Riproduzione Automatica di Miniature e Trailer del Canale
// @name:ja      YouTube - 自動再生プレビューサムネイルとチャンネルトレーラーをブロック
// @name:ka      YouTube - ავტომატური წინასწარი ჩვენების მინიატურებისა და არხის ტრეილერის ბლოკირება
// @name:kk      YouTube - Миниатюралардың Автокөрініс Алдын-ала Қарауын және Арна Тизерін Блоктау
// @name:km      YouTube - ទប់ស្កាត់ការបង្ហាញជាមុនផ្ទាំងរូបភាពតូច និងវីដេអូផ្សព្វផ្សាយឆានែល
// @name:kn      YouTube - ಆಟೋಪ್ಲೇ ಥಂಬ್‌ನೈಲ್ ಪೂರ್ವವೀಕ್ಷಣೆ ಮತ್ತು ಚಾನಲ್ ಟ್ರೈಲರ್ ಅನ್ನು ಬ್ಲಾಕ್ ಮಾಡಿ
// @name:ko      YouTube - 자동 재생 미리보기 썸네일 및 채널 예고편 차단
// @name:lo      YouTube - ບລັອກການສະແດງຕົວຢ່າງອັດຕະໂນມັດຂອງຮູບຍໍ້ ແລະຕົວຢ່າງຊ່ອງ
// @name:lt      YouTube - Blokuoja Autoplay Peržiūrą Miniatiūrų ir Kanalo Anonsą
// @name:lv      YouTube - Bloķēt Autoplay Priekšskatījumu Miniatūrām un Kanāla Treileri
// @name:ml      YouTube - ഓട്ടോപ്ലേ തമ്പ്നെയിൽ പ്രിവ്യൂവും ചാനൽ ട്രെയിലറും ബ്ലോക്ക് ചെയ്യുക
// @name:mr      YouTube - ऑटोप्ले थंबनेल पूर्वावलोकन आणि चॅनेल ट्रेलर ब्लॉक करा
// @name:ms      YouTube - Blok Pratinjau Putar Automatik Thumbnail dan Treler Saluran
// @name:nb      YouTube - Blokker Forhåndsvisning av Autoplay Miniatyrbilder og Kanaltrailer
// @name:ne      YouTube - अटोप्ले थम्बनेल पूर्वावलोकन र च्यानल ट्रेलर ब्लक गर्नुहोस्
// @name:nl      YouTube - Blokkeer Automatische Afspeelvoorbeeld van Thumbnails en Kanaaltrailer
// @name:no      YouTube - Blokker Autoplay-Forhåndsvisning av Miniatyrer og Kanaltrailer
// @name:or      YouTube - ଅଟୋପ୍ଲେ ପ୍ରିଭ୍ୟୂ ଥମ୍ନେଲ ଏବଂ ଚ୍ୟାନଲ ଟ୍ରେଲରକୁ ବ୍ଲକ୍ କରନ୍ତୁ
// @name:pa      YouTube - ਆਟੋਪਲੇਅ ਪੂਰਵਦਰਸ਼ਨ ਥੰਬਨੇਲ ਅਤੇ ਚੈਨਲ ਟ੍ਰੇਲਰ ਨੂੰ ਬਲਾਕ ਕਰੋ
// @name:pl      YouTube - Blokuj Podgląd Automatycznego Odtwarzania Miniaturek i Zwiastun Kanału
// @name:pt      YouTube - Bloquear Pré-visualização de Reprodução Automática de Miniaturas e Trailer do Canal
// @name:pt-BR   YouTube - Bloquear Prévia de Reprodução Automática de Miniaturas e Trailer do Canal
// @name:ro      YouTube - Blochează Previzualizare Redare Automată a Miniaturilor și Trailer de Canal
// @name:ru      YouTube - Блокировать Автовоспроизведение Превью Миниатюр и Трейлер Канала
// @name:sk      YouTube - Blokovať Autoplay Náhľad Miniatúr a Ukážku Kanálu
// @name:sl      YouTube - Blokiraj Samodejni Predogled Miniaturnih Slik in Napovednik Kanala
// @name:sq      YouTube - Bllokoni Parapamjen e Riprodhimit Automatik të Thumbnail dhe Trailerin e Kanalit
// @name:sr      YouTube - Blokiraj Automatski Pregled Minijatura i Trejler Kanala
// @name:sv      YouTube - Blockera Autoplay-Förhandsgranskning av Miniatyr och Kanaltrailer
// @name:ta      YouTube - ஆட்டோப்ளே தம்ப்னெயில் முன்னோட்டம் மற்றும் சேனல் டிரெய்லரை தடைசெய்
// @name:te      YouTube - ఆటోప్లే థంబ్‌నెయిల్ ప్రివ్యూ మరియు ఛానెల్ ట్రైలర్‌ను బ్లాక్ చేయండి
// @name:th      YouTube - บล็อกตัวอย่างเล่นอัตโนมัติของรูปย่อและตัวอย่างช่อง
// @name:tl      YouTube - Harangin ang Autoplay Preview Thumbnail at Channel Trailer
// @name:tr      YouTube - Otomatik Oynatma Önizlemesi Thumbnail ve Kanal Fragmanını Engelle
// @name:ug      YouTube - ئاپتوماتىك كۆرۈش ئالدىن كۆرۈش كىچىك رەسىم ۋە قانال تىزىرلىقىنى چەكلەش
// @name:uk      YouTube - Блокувати Автовідтворення Попереднього Перегляду Мініатюр та Трейлер Каналу
// @name:ur      YouTube - آٹوپلے تھمب نیل پیش نظارہ اور چینل ٹریلر بلاک کریں
// @name:vi      YouTube - Chặn Xem Trước Tự Động Thumbnail và Trailer Kênh
// @name:zh-CN   YouTube - 阻止自动播放缩略图预览和频道预告片
// @name:zh-HK   YouTube - 阻止自動播放縮圖預覽同頻道預告片
// @name:zh-TW   YouTube - 阻止自動播放縮圖預覽和頻道預告片
// @description         Blocks YouTube thumbnail hover previews (WebP & video) and stops channel trailers (video + audio). Keeps progress bars, play buttons, and static images. Works on all pages, no login or permissions needed, runs at document-start.
// @description:af      Blokkeer YouTube-duimnael-hover-voorskoue (WebP & video) en stop kanaalvoorskoue (video + klank). Behou vorderingstawe, speelknoppies en statiese beelde. Werk op alle bladsye, geen aantekening of toestemming nodig nie.
// @description:am      የYouTube ታምብኔይል ሆቨር ቅድመ-እይታዎችን (WebP እና ቪዲዮ) ያግዳል እና የቻናል ትሬይለሮችን (ቪዲዮ + ኦዲዮ) ያቆማል። የእድገት አሞሌዎችን፣ የፕሌይ ቁልፎችን እና የማይንቀሳቀሰ ምስሎችን ያቆያል። በሁሉም ገፆች ላይ ይሰራል፣ ምንም መግባት ወይም ፍቃድ አያስፈልግም።
// @description:ar      يحظر معاينات الصور المصغرة عند التمرير على YouTube (WebP وفيديو) ويوقف تريلرات القناة (فيديو + صوت). يحافظ على أشرطة التقدم وأزرار التشغيل والصور الثابتة. يعمل على جميع الصفحات بدون تسجيل دخول أو أذونات.
// @description:as      YouTube-তে অটোপ্লে থাম্বনেইল হোভার পূর্বদর্শন (WebP ও ভিডিও) এবং চ্যানেল ট্রেলার (ভিডিও + অডিও) ব্লক করে। প্রগ্রেস বার, প্লে বাটন এবং স্থির ছবি রাখে। সব পৃষ্ঠায় কাজ করে, লগইন বা অনুমতি লাগে না, পেজ লোড হওয়ার সাথে সাথে চলে।
// @description:az      YouTube-da kiçik şəkillərin hover önizləməsini (WebP & video) və kanal treylerlərini (video + səs) bloklayır. Proqress çubuqlarını, oynatma düymələrini və statik şəkilləri saxlayır. Bütün səhifələrdə işləyir, giriş və ya icazə tələb etmir, səhifə yüklənərkən işə düşür.
// @description:bg      Блокира hover прегледи на YouTube миниатюри (WebP и видео) и спира трейлъри на канали (видео + звук). Запазва ленти за напредък, бутони за възпроизвеждане и статични изображения. Работи на всички страници, без вход или разрешения, стартира при зареждане на страницата.
// @description:bn      YouTube থাম্বনেল হোভার প্রিভিউ (WebP এবং ভিডিও) ব্লক করে এবং চ্যানেল ট্রেলার (ভিডিও + অডিও) বন্ধ করে। প্রোগ্রেস বার, প্লে বোতাম এবং স্থির ছবি রাখে। সব পৃষ্ঠায় কাজ করে, লগইন বা অনুমতি ছাড়াই, পেজ লোড হওয়ার সাথে সাথে চলে।
// @description:bs      Blokira hover pregled minijatura YouTube (WebP i video) i zaustavlja trejlere kanala (video + zvuk). Čuva trake napretka, dugmad za reprodukciju i statične slike. Radi na svim stranicama, bez prijave ili dozvola, pokreće se pri učitavanju stranice.
// @description:ca      Bloqueja previsualitzacions hover de miniatures YouTube (WebP i vídeo) i atura tràilers de canal (vídeo + àudio). Manté barres de progrés, botons de reproducció i imatges estàtiques. Funciona a totes les pàgines, sense inici de sessió ni permisos, s'executa al carregar la pàgina.
// @description:cs      Blokuje náhledy miniatur YouTube při najetí myší (WebP a video) a zastavuje trailery kanálů (video + zvuk). Zachovává ukazatele postupu, tlačítka přehrávání a statické obrázky. Funguje na všech stránkách, bez přihlášení nebo oprávnění, spouští se při načtení stránky.
// @description:cy      Yn blocio rhagolygon hover thumbnail YouTube (WebP a fideo) ac yn stopio treileri sianel (fideo + sain). Cadw barrau cynnydd, botymau chwarae a delweddau statig. Gweithio ar bob tudalen, dim mewngofnodi na chaniatâd, rhedeg wrth lwytho tudalen.
// @description:da      Blokerer hover-forhåndsvisning af YouTube miniaturer (WebP & video) og stopper kanaltrailere (video + lyd). Bevarer fremskridtsbjælker, afspilningsknapper og statiske billeder. Virker på alle sider, ingen login eller tilladelser nødvendige, kører ved sideindlæsning.
// @description:de      Blockiert Hover-Vorschauen von YouTube Thumbnails (WebP & Video) und stoppt Kanaltrailer (Video + Ton). Behält Fortschrittsbalken, Play-Buttons und statische Bilder bei. Funktioniert auf allen Seiten, kein Login oder Berechtigungen erforderlich, startet beim Laden der Seite.
// @description:el      Μπλοκάρει προεπισκοπήσεις hover μικρογραφιών YouTube (WebP και βίντεο) και σταματά τρέιλερ καναλιών (βίντεο + ήχος). Διατηρεί μπάρες προόδου, κουμπιά αναπαραγωγής και στατικές εικόνες. Λειτουργεί σε όλες τις σελίδες, χωρίς σύνδεση ή άδειες, εκτελείται κατά τη φόρτωση σελίδας.
// @description:eo      Blokas hover antaŭrigardojn de miniaturoj YouTube (WebP & video) kaj haltigas kanalajn antaŭfilmojn (video + sono). Konservas progresstangojn, ludbutonojn kaj statikajn bildojn. Funkcias sur ĉiuj paĝoj, sen ensaluto aŭ permesoj, lanĉiĝas ĉe paĝŝargo.
// @description:es      Bloquea vistas previas hover de miniaturas YouTube (WebP y video) y detiene tráilers de canal (video + audio). Mantiene barras de progreso, botones de reproducción e imágenes estáticas. Funciona en todas las páginas, sin inicio de sesión ni permisos, se ejecuta al cargar la página.
// @description:et      Blokeerib YouTube pisipiltide hover eelvaated (WebP ja video) ning peatab kanalite treilerid (video + heli). Säilitab edenemisribad, esitusnupud ja staatilised pildid. Töötab kõigil lehtedel, sisselogimist ega lubasid pole vaja, käivitub lehe laadimisel.
// @description:eu      Blokeatzen ditu YouTube thumbnail hover aurrebistak (WebP eta bideoa) eta geldiarazten ditu kanalaren trailerak (bideoa + audioa). Mantentzen ditu aurrerapen barrak, play botoiak eta irudi estatikoak. Orri guztietan funtzionatzen du, saio hasierarik edo baimenik gabe, orria kargatzean exekutatzen da.
// @description:fa      مسدود کردن پیش‌نمایش‌های hover تصاویر کوچک YouTube (WebP و ویدیو) و توقف تریلرهای کانال (ویدیو + صدا). حفظ نوارهای پیشرفت، دکمه‌های پخش و تصاویر ثابت. کار روی تمام صفحات، بدون نیاز به ورود یا مجوز، هنگام بارگذاری صفحه اجرا می‌شود.
// @description:fi      Estää YouTube-pikkukuvien hover-esikatselut (WebP & video) ja pysäyttää kanavan trailerit (video + ääni). Säilyttää edistymispalkit, toistonapit ja staattiset kuvat. Toimii kaikilla sivuilla, ei kirjautumista tai lupia tarvita, käynnistyy sivun latautuessa.
// @description:fr      Bloque les aperçus au survol des miniatures YouTube (WebP et vidéo) et arrête les bandes-annonces de chaîne (vidéo + son). Conserve les barres de progression, boutons de lecture et images statiques. Sans connexion ni permission, s’exécute au chargement de la page.
// @description:fr-CA   Bloque les aperçus au survol des miniatures YouTube (WebP et vidéo) et arrête les bandes-annonces de chaîne (vidéo + son). Conserve les barres de progression, boutons de lecture et images statiques. Sans connexion ni permission, s’exécute au chargement de la page.
// @description:gl      Bloquea vistas previas hover de miniaturas YouTube (WebP e vídeo) e detén tráilers de canal (vídeo + son). Mantén barras de progreso, botóns de reprodución e imaxes estàtiques. Funciona en todas as páxinas, sen inicio de sesión nin permisos, execútase ao cargar a páxina.
// @description:gu      YouTube થમ્બનેલ હોવર પ્રિવ્યૂ (WebP અને વીડિયો) અને ચેનલ ટ્રેલર (વીડિયો + ઑડિયો) બ્લોક કરે છે. પ્રોગ્રેસ બાર, પ્લે બટન અને સ્ટેટિક ઇમેજીસ જાળવે છે. તમામ પેજ પર કામ કરે છે, લોગિન કે પરવાનગીની જરૂર નથી, પેજ લોડ થતાં જ ચાલે છે.
// @description:he      חוסם תצוגות מקדימות hover של תמונות ממוזערות YouTube (WebP ווידאו) ועוצר טריילרים של ערוצים (וידאו + קול). שומר על סרגלי התקדמות, כפתורי ניגון ותמונות סטטיות. פועל בכל הדפים, ללא כניסה או הרשאות, מופעל בטעינת הדף.
// @description:hi      YouTube थंबनेल होवर पूर्वावलोकन (WebP और वीडियो) को ब्लॉक करता है और चैनल ट्रेलर (वीडियो + ऑडियो) को रोकता है। प्रोग्रेस बार, प्ले बटन और स्थिर छवियां रखता है। सभी पेजों पर काम करता है, लॉगिन या अनुमति की जरूरत नहीं, पेज लोड होते ही चलता है।
// @description:hr      Blokira hover pregled minijatura YouTube (WebP i video) i zaustavlja trailere kanala (video + zvuk). Zadržava trake napretka, tipke za reprodukciju i statične slike. Radi na svim stranicama, bez prijave ili dozvola, pokreće se pri učitavanju stranice.
// @description:hu      Blokkolja a YouTube miniatűr hover előnézeteket (WebP és videó) és leállítja a csatorna előzeteseket (videó + hang). Megtartja a folyamatjelzőket, lejátszási gombokat és statikus képeket. Minden oldalon működik, bejelentkezés vagy engedély nélkül, oldal betöltésekor indul.
// @description:id      Memblokir pratinjau hover thumbnail YouTube (WebP & video) dan menghentikan trailer saluran (video + audio). Menjaga bilah kemajuan, tombol putar dan gambar statis. Berjalan di semua halaman, tanpa login atau izin, berjalan saat halaman dimuat.
// @description:is      Blokkar sjálfvirka forskoðun smámynda YouTube við hover (WebP og myndskeið) og stöðvar rásarstikur (myndskeið + hljóð). Heldur áfram framvindustikum, spilahnöppum og kyrrstæðum myndum. Virkar á öllum síðum, engin innskráning eða leyfi þörf, keyrir við hleðslu síðu.
// @description:it      Blocca anteprime hover miniature YouTube (WebP e video) e ferma trailer canali (video + audio). Mantiene barre avanzamento, pulsanti play e immagini statiche. Funziona su tutte le pagine, senza login o permessi, si avvia al caricamento della pagina.
// @description:ja      YouTubeのすべてのページでサムネイルのホバー時プレビュー(WebPおよびビデオ)とチャンネルトレーラー(ビデオ+音声)をブロックします。進捗バー、再生ボタン、静止画像を保持。ログインや権限不要、ページ読み込み時に実行。
// @description:ka      ბლოკავს YouTube მინიატურების hover წინასწარ ჩვენებას (WebP & ვიდეო) და აჩერებს არხის ტრეილერებს (ვიდეო + ხმა). ინახავს პროგრესის ზოლებს, დაკვრის ღილაკებს და სტატიკურ სურათებს. მუშაობს ყველა გვერდზე, შესვლა ან ნებართვა არაა საჭირო, გვერდის ჩატვირთვისას იწყება.
// @description:kk      YouTube миниатюралары hover алдын ала қарауды (WebP және видео) блоктайды және арна трейлерлерін (видео + дыбыс) тоқтатады. Прогресс жолақтарын, ойнату батырмаларын және статикалық суреттерді сақтайды. Барлық беттерде жұмыс істейді, кіру немесе рұсқат қажет емес, бет жүктелгенде іске қосылады.
// @description:km      ទប់ស្កាត់ការបង្ហាញជាមុន hover រូបភាពតូច YouTube (WebP និងវីដេអូ) និងបញ្ឈប់ trailer ឆានែល (វីដេអូ + សំឡេង)។ រក្សាទុករបារវឌ្ឍនភាព ប៊ូតុងលេង និងរូបភាពឋិតិវន្ត។ ដំណើរការលើគ្រប់ទំព័រ មិនត្រូវការចូលគណនី ឬសិទ្ធិ ចាប់ផ្តើមនៅពេលផ្ទុកទំព័រ។
// @description:kn      YouTube ಥಂಬ್‌ನೈಲ್ ಹೋವರ್ ಪೂರ್ವವೀಕ್ಷಣೆಗಳನ್ನು (WebP ಮತ್ತು ವೀಡಿಯೊ) ಬ್ಲಾಕ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಚಾನಲ್ ಟ್ರೈಲರ್‌ಗಳನ್ನು (ವೀಡಿಯೊ + ಆಡಿಯೊ) ನಿಲ್ಲಿಸುತ್ತದೆ. ಪ್ರಗತಿ ಬಾರ್‌ಗಳು, ಪ್ಲೇ ಬಟನ್‌ಗಳು ಮತ್ತು ಸ್ಥಿರ ಚಿತ್ರಗಳನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತದೆ. ಎಲ್ಲಾ ಪುಟಗಳಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಲಾಗಿನ್ ಅಥವಾ ಅನುಮತಿಗಳ ಅಗತ್ಯವಿಲ್ಲ, ಪುಟ ಲೋಡ್ ಆಗುವಾಗ ರನ್ ಆಗುತ್ತದೆ.
// @description:ko      YouTube 모든 페이지에서 썸네일 호버 미리보기(WebP 및 비디오)와 채널 예고편(비디오 + 오디오)을 차단합니다. 진행 막대, 재생 버튼 및 정적 이미지를 유지합니다. 로그인이나 권한 불필요, 페이지 로드 시 실행.
// @description:lo      ບລັອກການສະແດງຕົວຢ່າງ hover ຮູບຍໍ້ YouTube (WebP ແລະ ວິດີໂອ) ແລະ ຢຸດ trailer ຊ່ອງ (ວິດີໂອ + ສຽງ). ຮັກສາແຖບຄວາມຄືບໜ້າ, ປຸ່ມຫຼິ້ນ ແລະ ຮູບພາບຄົງທີ່. ເຮັດວຽກໃນທຸກໜ້າ, ບໍ່ຕ້ອງເຂົ້າສູ່ລະບົບ ຫຼື ອະນຸຍາດ, ເລີ່ມເຮັດວຽກຕອນທີ່ໂຫຼດໜ້າ.
// @description:lt      Blokuoja YouTube miniatiūrų hover peržiūras (WebP ir vaizdo įrašus) ir sustabdo kanalų anonsus (vaizdo įrašas + garsas). Išlaiko pažangos juostas, grojimo mygtukus ir statinius vaizdus. Veikia visuose puslapiuose, be prisijungimo ar leidimų, paleidžiama įkeliant puslapį.
// @description:lv      Bloķē YouTube sīktēlu hover priekšskatījumus (WebP un video) un aptur kanālu treilerus (video + audio). Saglabā progresa joslas, atskaņošanas pogas un statiskus attēlus. Darbojas visās lapās, bez pieteikšanās vai atļaujām, palaižas lapas ielādes laikā.
// @description:ml      YouTube തമ്പ്നെയിൽ ഹോവർ പ്രിവ്യൂകൾ (WebP & വീഡിയോ) ബ്ലോക്ക് ചെയ്യുകയും ചാനൽ ട്രെയിലറുകൾ (വീഡിയോ + ഓഡിയോ) നിർത്തുകയും ചെയ്യുന്നു. പ്രോഗ്രസ് ബാറുകൾ, പ്ലേ ബട്ടണുകൾ, സ്റ്റാറ്റിക് ഇമേജുകൾ സൂക്ഷിക്കുന്നു. എല്ലാ പേജുകളിലും പ്രവർത്തിക്കുന്നു, ലോഗിൻ അല്ലെങ്കിൽ പെർമിഷനുകൾ ആവശ്യമില്ല, പേജ് ലോഡ് ചെയ്യുമ്പോൾ റൺ ചെയ്യുന്നു.
// @description:mr      YouTube थंबनेल होवर पूर्वावलोकन (WebP आणि व्हिडिओ) ब्लॉक करते आणि चॅनेल ट्रेलर (व्हिडिओ + ऑडिओ) थांबवते. प्रोग्रेस बार, प्ले बटणे आणि स्थिर इमेजेस ठेवते. सर्व पेजेसवर काम करते, लॉगिन किंवा परवानगी नाही, पेज लोड होताच चालते.
// @description:ms      Menghalang pratinjau hover thumbnail YouTube (WebP & video) dan menghentikan treler saluran (video + audio). Menyimpan bar kemajuan, butang main dan imej statik. Berfungsi di semua halaman, tiada log masuk atau kebenaran, dijalankan semasa halaman dimuat.
// @description:nb      Blokkerer hover-forhåndsvisning av YouTube-miniatyrbilder (WebP & video) og stopper kanaltrailere (video + lyd). Beholder fremdriftslinjer, avspillingsknapper og statiske bilder. Fungerer på alle sider, ingen innlogging eller tillatelser, kjører ved sidelasting.
// @description:ne      YouTube थम्बनेल होभर पूर्वावलोकन (WebP र भिडियो) ब्लक गर्छ र च्यानल ट्रेलर (भिडियो + अडियो) रोक्छ। प्रोग्रेस बार, प्ले बटन र स्थिर तस्बिरहरू राख्छ। सबै पेजमा काम गर्छ, लगइन वा अनुमति चाहिँदैन, पेज लोड हुँदा नै चल्छ।
// @description:nl      Blokkeert hover-voorbeelden van YouTube thumbnails (WebP en video) en stopt kanaaltrailers (video + audio). Behoudt voortgangsbalken, afspeelknoppen en statische afbeeldingen. Geen login or toestemming, start bij paginalading.
// @description:no      Blokkerer forhåndsvisninger av YouTube miniatyrer ved svev (WebP og video) og stopper kanaltrailere (video + lyd). Beholder fremdriftslinjer, avspillingsknapper og statiske bilder. Ingen innlogging eller tillatelser, kjører ved sidelasting.
// @description:or      YouTube ଥମ୍ନେଲ ହୋଭର ପ୍ରିଭ୍ୟୂ (WebP ଏବଂ ଭିଡିଓ) ବ୍ଲକ୍ କରେ ଏବଂ ଚ୍ୟାନଲ ଟ୍ରେଲର (ଭିଡିଓ + ଅଡିଓ) ବନ୍ଦ କରେ। ପ୍ରୋଗ୍ରେସ୍ ବାର, ପ୍ଲେ ବଟନ୍ ଏବଂ ସ୍ଟାଟିକ୍ ଇମେଜ୍ ରଖେ। ସମସ୍ତ ପୃଷ୍ଠାରେ କାମ କରେ, ଲଗଇନ୍ କିମ୍ବା ଅନୁମତି ଦରକାର ନାହିଁ, ପୃଷ୍ଠା ଲୋଡ୍ ହେବା ସହିତ ଚାଲେ।
// @description:pa      ਥੰਬਨੇਲ ਹੋਵਰ ਪੂਰਵਦਰਸ਼ਨ YouTube (WebP ਅਤੇ ਵੀਡੀਓ) ਨੂੰ ਬਲਾਕ ਕਰਦਾ ਹੈ ਅਤੇ ਚੈਨਲ ਟ੍ਰੇਲਰ (ਵੀਡੀਓ + ਆਡੀਓ) ਨੂੰ ਰੋਕਦਾ ਹੈ। ਪ੍ਰੋਗ੍ਰੈਸ ਬਾਰ, ਪਲੇਅ ਬਟਨ ਅਤੇ ਸਥਿਰ ਚਿੱਤਰਾਂ ਨੂੰ ਰੱਖਦਾ ਹੈ। ਸਾਰੇ ਪੰਨਿਆਂ ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ, ਲਾਗਇਨ ਜਾਂ ਅਨੁਮਤੀ ਦੀ ਲੋੜ ਨਹੀਂ, ਪੰਨਾ ਲੋਡ ਹੁੰਦੇ ਹੀ ਚੱਲਦਾ ਹੈ।
// @description:pl      Blokuje podglądy miniaturek YouTube przy najechaniu myszą (WebP i wideo) oraz zatrzymuje zwiastuny kanałów (wideo + dźwięk). Zachowuje paski postępu, przyciski odtwarzania i statyczne obrazy. Bez logowania i uprawnień, uruchamia się przy ładowaniu strony.
// @description:pt      Bloqueia pré-visualizações hover de miniaturas YouTube (WebP e vídeo) e interrompe trailers de canal (vídeo + áudio). Mantém barras de progresso, botões de reprodução e imagens estáticas. Sem início de sessão ou permissões, executa ao carregar a página.
// @description:pt-BR   Bloqueia prévias hover de miniaturas YouTube (WebP e vídeo) e interrompe trailers de canal (vídeo + áudio). Mantém barras de progresso, botões de play e imagens estáticas. Sem login ou permissão, executa ao carregar a página.
// @description:ro      Blochează previzualizări hover pe miniaturi YouTube (WebP și video) și oprește trailerele de canal (video + audio). Păstrează barele de progres, butoanele de redare și imaginile statice. Fără login sau permisiuni, rulează la încărcarea paginii.
// @description:ru      Блокирует превью при наведении на миниатюры YouTube (WebP и видео) и останавливает трейлеры каналов (видео + звук). Сохраняет индикаторы прогресса, кнопки воспроизведения и статические изображения. Без входа или разрешений, запускается при загрузке страницы.
// @description:sk      Blokuje náhľady miniatúr YouTube pri prechode myšou (WebP a video) a zastavuje ukážky kanálov (video + zvuk). Zachováva ukazovatele postupu, tlačidlá prehrávania a statické obrázky. Bez prihlásenia alebo povolenia, spúšťa sa pri načítaní stránky.
// @description:sl      Blokira predoglede sličic YouTube ob preletu (WebP in video) in ustavi napovednike kanalov (video + zvok). Ohrani vrstice napredka, gumbe za predvajanje in statične slike. Brez prijave ali dovoljenj, zažene ob nalaganju strani.
// @description:sq      Bllokon parapamjen hover të thumbnail YouTube (WebP dhe video) dhe ndalon trailerat e kanalit (video + audio). Mban shirita përparimi, butona luajtjeje dhe imazhe statike. Pa hyrje ose leje, ekzekutohet gjatë ngarkimit të faqes.
// @description:sr      Блокира аутоматски преглед минијатура YouTube при лебдењу показивача (WebP и видео) и зауставља трејлере канала (видео + звук). Чува траке напретка, дугмиће за репродукцију и статичне слике. Без пријаве или дозволе, покреће се при учитавању странице.
// @description:sv      Blockerar förhandsgranskningar vid hovring på YouTube-miniatyrer (WebP och video) och stoppar kanaltrailers (video + ljud). Behåller förloppsindikatorer, uppspelningsknappar och statiska bilder. Ingen inloggning eller behörighet krävs, körs vid sidladdning.
// @description:ta      யூடியூப் தம்ப்னெயில் ஹோவர் முன்னோட்டங்களை (WebP & வீடியோ) தடைசெய்து, சேனல் டிரெய்லர்களை (வீடியோ + ஆடியோ) நிறுத்துகிறது. முன்னேற்றப் பட்டைகள், பிளே பட்டன்கள் மற்றும் நிலையான படங்களை வைத்திருக்கும். அனைத்து பக்கங்களிலும் வேலை செய்யும், உள்நுழைவு அல்லது அனுமதி தேவையில்லை, பக்கம் ஏற்றும்போது இயங்கும்.
// @description:te      YouTube థంబ్‌నెయిల్ హోవర్ ప్రివ్యూలను (WebP & వీడియో) బ్లాక్ చేస్తుంది మరియు ఛానెల్ ట్రైలర్‌లను (వీడియో + ఆడియో) ఆపేస్తుంది. ప్రోగ్రెస్ బార్‌లు, ప్లే బటన్‌లు మరియు స్టాటిక్ ఇమేజ్‌లను ఉంచుతుంది. అన్ని పేజీలలో పని చేస్తుంది, లాగిన్ లేదా అనుమతులు అవసరం లేదు, పేజీ లోడ్ అయినప్పుడు రన్ అవుతుంది.
// @description:th      บล็อกการแสดงตัวอย่างเล่นอัตโนมัติของ YouTube เมื่อเลื่อนเมาส์บนรูปย่อ (WebP และวิดีโอ) และหยุดตัวอย่างช่อง (วีดีโอ + เสียง) รักษาแถบความคืบหน้า ปุ่มเล่น และภาพนิ่ง ไม่ต้องล็อกอินหรืออนุญาต ทำงานเมื่อโหลดหน้าเว็บ.
// @description:tl      Hinaharang ang hover preview ng thumbnail sa YouTube (WebP at video) at pinipigilan ang channel trailer (video + audio). Pinapanatili ang progress bar, play button, at static na imahe. Gumagana sa lahat ng page, walang login o permission na kailangan.
// @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ı, oynat düğmelerini ve statik resimleri korur. Giriş veya izin gerekmez, sayfa yüklenirken çalışır.
// @description:ug      بارلىق YouTube بەتلىرىدە كىچىك رەسىم hover ئالدىن كۆرۈشلىرىنى (WebP & ۋىدىيو) ۋە قانال تىزىرلىقلىرىنى (ۋىدىيو + ئاۋاز) چەكلەيدۇ. ئىلگىرىلەش تارىمىقى، ئويناش كۇنۇپكىلىرى ۋە سىتاتىك رەسىملەرنى ساقلايدۇ. كىرىش ياكى ئىجازەت تەلەپ قىلمايدۇ، بەت يۈكلەنگەندە ئىجرا بولىدۇ.
// @description:uk      Блокує попередній перегляд при наведенні на мініатюри YouTube (WebP та відео) та зупиняє трейлеры каналів (відео + звук). Зберігає смуги прогресу, кнопки відтворення та статичні зображення. Без входу чи дозволів, запускається при завантаженні сторінки.
// @description:ur      تھمب نیل ہوور پیش نظارہ YouTube (WebP اور ویڈیو) کو بلاک کرتا ہے اور چینل ٹریلر (ویڈیو + آڈیو) کو روکتا ہے۔ پروگریس بار، پلے بٹن اور سٹیٹک تصاویر کو برقرار رکھتا ہے۔ تمام صفحات پر کام کرتا ہے، لاگ ان یا اجازت کی ضرورت نہیں، صفحہ لوڈ ہوتے ہی چلتا ہے۔
// @description:vi      Chặn xem trước tự động thumbnail YouTube khi di chuột qua (WebP & video) và dừng trailer kênh (video + âm thanh). Giữ nguyên thanh tiến độ, nút play và ảnh tĩnh. Hoạt động trên mọi trang, không cần đăng nhập hay quyền, chạy ngay khi tải trang.
// @description:zh-CN   在所有YouTube页面上阻止缩略图悬停预览(WebP和视频)并停止频道预告片(视频+音频)。保留进度条、播放按钮和静态图像。无需登录或权限,页面加载时运行。
// @description:zh-HK   在所有 YouTube 頁面上阻止縮圖懸停預覽(WebP 同視頻)並停止頻道預告片(視頻+音頻)。保留進度條、播放按鈕同靜態圖像。無需登錄或權限,頁面載入時即執行。
// @description:zh-TW   在所有 YouTube 頁面上阻止縮圖懸停預覽(WebP 與視頻)並停止頻道預告片(視頻+音頻)。保留進度條、播放按鈕和靜態圖像。無需登錄或權限,頁面載入時即執行。
// @namespace    https://openuserjs.org/users/miebie.1412
// @author       miebie.1412
// @version      1.8.2
// @match        https://*.youtube.com/*
// @grant        none
// @run-at       document-start
// @license      MIT
// @homepageURL  https://openuserjs.org/users/miebie.1412
// @supportURL   https://openuserjs.org/scripts/miebie.1412/YouTube_-_Block_Autoplay_Preview_Thumbnail_and_Channel_Trailer/issues
// @icon         https://www.google.com/s2/favicons?sz=64&domain=youtube.com
// ==/UserScript==
(function () {
    'use strict';
    const processed = new WeakSet();
    let lastScrollY = 0;

    const style = document.createElement('style');
    style.textContent = `
    body:not([page-type="watch"]) ytd-moving-thumbnail-renderer,
        body:not([page-type="watch"]) .ytd-moving-thumbnail-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:not(#player-container ytd-video-preview),
        .ytd-video-preview:not(#player-container .ytd-video-preview),
        #thumbnail-overlay-play:not(#player-container #thumbnail-overlay-play),
        .thumbnail-overlay-play:not(#player-container .thumbnail-overlay-play),
        #video-preview-container:not(#player-container #video-preview-container),
        .video-preview-container:not(#player-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;
        }
        #movie-player #player img,
        .html5-main-video-container img,
        ytd-watch-flexy #thumbnail img {
            display: block !important;
            visibility: visible !important;
            opacity: 1 !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 = () => {
    if (document.querySelector('ytd-recorder, [data-recorder-active], [id*="recorder"], .recorder-active')) {
        return;
    }

    ['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*="avif"], video[src*="avif"], img[src*="video-preview"], video[src*="video-preview"]').forEach(el => {
            if (el.tagName === 'IMG') {
                el.src = el.src.replace(/an_webp\/[^&]*&/g, '').replace(/avif\/[^&]*&/g, '').replace(/video-preview\/[^&]*&/g, '');
                el.srcset = '';
            } else if (el.tagName === 'VIDEO') {
                el.src = el.src.replace(/an_webp\/[^&]*&/g, '').replace(/avif\/[^&]*&/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);
                }
            });
        }
    };
    window.blockAll = blockAll;

    const blockObserver = new MutationObserver(blockAll);
    blockObserver.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);
    }

    function isPostImage(img) {
        if (!img || !img.src) return false;
        if (!img.src.includes('ggpht.com') && !img.src.includes('googleusercontent.com')) return false;

        const post = img.closest('ytd-backstage-post-renderer');
        if (!post) return false;

        const container = img.closest('#image-container, [id*="image"]');
        if (!container) return false;

        const rect = img.getBoundingClientRect();
        if (rect.width <= 50 && rect.height <= 50) return false;
        if (rect.width >= 1000) return false;
        if (img.closest('ytd-rich-grid-media, ytd-video-renderer')) return false;

        return true;
    }

    function freezeImage(img) {
        if (processed.has(img) || !isPostImage(img)) return;

        if (!img.complete || img.naturalWidth === 0) {
            img.addEventListener('load', () => createCanvas(img), { once: true });
            return;
        }
        createCanvas(img);
    }

    function createCanvas(img) {
        if (processed.has(img)) return;

        const canvas = document.createElement('canvas');
        const ctx = canvas.getContext('2d');
        const w = img.naturalWidth || 640;
        const h = img.naturalHeight || 480;
        if (w === 0 || h === 0) return;

        canvas.width = w;
        canvas.height = h;
        ctx.drawImage(img, 0, 0, w, h);

        const style = getComputedStyle(img);
        canvas.style.cssText = img.style.cssText;
        canvas.style.width = style.width;
        canvas.style.height = style.height;
        canvas.style.objectFit = 'cover';
        canvas.style.display = 'block';
        canvas.style.borderRadius = style.borderRadius;
        canvas.className = img.className;
        canvas.alt = img.alt;

        if (img.parentNode) {
            img.parentNode.replaceChild(canvas, img);
            processed.add(img);
            console.log('%cGIF blocked', 'color:#fff;background:#000;padding:4px 12px;border-radius:6px;font-weight:bold;font-family:monospace;box-shadow:0 0 8px rgba(255,255,255,0.3)', img.src.split('/').pop().split('?')[0]);
        }
    }

    function scan(force = false) {
        document.querySelectorAll('ytd-backstage-post-renderer img').forEach(img => {
            if (force || !processed.has(img)) {
                freezeImage(img);
            }
        });
    }

    const observer = new MutationObserver(mutations => {
        let needsScan = false;

        for (const m of mutations) {
            if (m.type === 'childList' && m.addedNodes.length) needsScan = true;
            if (m.type === 'attributes' && (m.attributeName === 'src' || m.attributeName === 'srcset')) needsScan = true;
        }

        if (needsScan) scan(true);
    });

    const startObserver = () =>
        observer.observe(document.body, {
            childList: true,
            subtree: true,
            attributes: true,
            attributeFilter: ['src', 'srcset']
        });

    if (document.body) startObserver();
    else document.addEventListener('DOMContentLoaded', startObserver);

    const poll = setInterval(scan, 300);
    setTimeout(() => clearInterval(poll), 90000);

    document.addEventListener('click', (e) => {
        const arrow = e.target.closest('button[aria-label*="next"], button[aria-label*="previous"], [role="button"][aria-label*="slide"]');
        if (arrow && arrow.closest('ytd-backstage-post-renderer')) {
            setTimeout(() => scan(true), 150);
        }
    }, { capture: true });

    document.addEventListener('wheel', (e) => {
        const scrollingUp = e.deltaY < 0;
        if (scrollingUp && window.scrollY < lastScrollY) {
            setTimeout(() => scan(true), 100);
        }
        lastScrollY = window.scrollY;
    }, { passive: true });

    const OrigImage = window.Image;
    window.Image = function () {
        const img = new OrigImage(...arguments);

        if (img.src && (img.src.includes('ggpht.com') || img.src.includes('googleusercontent.com'))) {
            img.addEventListener('load', () => {
                if (isPostImage(img)) setTimeout(() => freezeImage(img), 20);
            }, { once: true });
        }
        return img;
    };

    setTimeout(scan, 400);
})();

(function () {
    function hardKill(video) {
        if (!video || video._hardKilled) return;
        video.pause();
        video.muted = true;
        video.volume = 0;
        try { video.currentTime = 0; } catch(e){}
        try { video.srcObject = null; } catch(e){}
        try { video.removeAttribute("src"); } catch(e){}
        try { video.load(); } catch(e){}
        video._hardKilled = true;
    }

    function isMainPlayer(v) {
        return !!(
            v.closest("ytd-watch-flexy") ||
            v.classList.contains("html5-main-video")
        );
    }

    function scanAllVideos() {
        if (window.fsPause) return;
        const vids = document.querySelectorAll("video");
        vids.forEach(v => {
            const r = v.getBoundingClientRect();
            const hidden = r.width === 0 || r.height === 0 || v.offsetParent === null;
            if (hidden || !isMainPlayer(v)) hardKill(v);
        });
        document.querySelectorAll("ytd-player").forEach(p => {
            const sr = p.shadowRoot;
            if (!sr) return;
            sr.querySelectorAll("video").forEach(v => {
                const r = v.getBoundingClientRect();
                const hidden = r.width === 0 || r.height === 0 || v.offsetParent === null;
                if (hidden || !isMainPlayer(v)) hardKill(v);
            });
        });
    }
    window.scanAllVideos = scanAllVideos;

    ["AudioContext","webkitAudioContext"].forEach(name => {
        if (!window[name]) return;
        const AC = window[name];
        if (AC.prototype._patched) return;
        AC.prototype._patched = true;
        AC.prototype.createMediaElementSource = function() {
            return { connect(){}, disconnect(){} };
        };
        AC.prototype.resume = () => Promise.resolve();
    });

    new MutationObserver(scanAllVideos)
        .observe(document.documentElement, { childList: true, subtree: true });

    setInterval(scanAllVideos, 300);
})();

(function () {
    let fsPause = false;
    let fsTimer = null;

    function pauseBlocking() {
        fsPause = true;
        if (fsTimer) clearTimeout(fsTimer);
        fsTimer = setTimeout(() => fsPause = false, 700);
    }

    document.addEventListener("fullscreenchange", pauseBlocking, true);
    document.addEventListener("transitionstart", pauseBlocking, true);
    document.addEventListener("transitionrun", pauseBlocking, true);

    const origBlockAll = window.blockAll;
    const origScanAllVideos = window.scanAllVideos;

    window.blockAll = function () {
        if (fsPause) return;
        return origBlockAll.apply(this, arguments);
    };

    window.scanAllVideos = function () {
        if (fsPause) return;
        return origScanAllVideos.apply(this, arguments);
    };
})();