🎉 欢迎访问GreasyFork.Org 镜像站!本镜像站由公众号【爱吃馍】搭建,用于分享脚本。联系邮箱📮

Greasy fork 爱吃馍镜像

YouTube - Bloquear Vista Previa de Reproducción Automática de Miniaturas y Tráiler del Canal

Bloquea vistas previas de miniaturas al pasar el mouse (WebP y video) y detiene tráilers de canal (video + audio). Mantiene barras de progreso, botones de reproducción y imágenes estáticas. Sin inicio de sesión ni permisos, se ejecuta al cargar la página.

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

You will need to install an extension such as Tampermonkey to install this script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

🚀 安装遇到问题?关注公众号获取帮助

公众号二维码

扫码关注【爱吃馍】

回复【脚本】获取最新教程和防失联地址

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

🚀 安装遇到问题?关注公众号获取帮助

公众号二维码

扫码关注【爱吃馍】

回复【脚本】获取最新教程和防失联地址

// ==UserScript==
// @name         YouTube - Block Autoplay Preview Thumbnail & Channel Trailer
// @name:af      YouTube - Blokkeer Outomatiese Voorskou van Duimnaels en Kanaalvoorskou
// @name:am      YouTube - የራስ-ፕሌይ ቅድመ-እይታ ታምብኔይል እና ቻናል ትሬይለር አግድ
// @name:ar      يوتيوب - حظر معاينة التشغيل التلقائي للصور المصغرة وتريلر القناة
// @name:as      YouTube - অটোপ্লে থাম্বনেইল পূৰ্বদৰ্শন আৰু চেনেল ট্ৰেইলাৰ ব্লক কৰক
// @name:az      YouTube - Kiçik Şəkillərin Avtomatik Önizləməsini və Kanal Treylerini Blokla
// @name:bn      YouTube - অটোপ্লে থাম্বনেল প্রিভিউ এবং চ্যানেল ট্রেলার ব্লক করুন
// @name:bg      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 - Autoplay Aurrebista Thumbnail eta Kanaleko Trailerra Blokeatu
// @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: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: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: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:pl      YouTube - Blokuj Podgląd Automatycznego Odtwarzania Miniaturek i Zwiastun Kanału
// @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:th      YouTube - บล็อกตัวอย่างเล่นอัตโนมัติของรูปย่อและตัวอย่างช่อง
// @name:tr      YouTube - Otomatik Oynatma Önizlemesi Thumbnail ve Kanal Fragmanını Engelle
// @name:ug      YouTube - ئاپتوماتىك كۆرۈش ئالدىن كۆرۈش كىچىك رەسىم ۋە قانال تىزىرلىقىنى چەكلەش
// @name:uk      YouTube - Блокувати Автовідтворення Попереднього Перегляду Мініатюр та Трейлер Каналу
// @name:vi      YouTube - Chặn Xem Trước Tự Động Thumbnail và 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, 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, begin by dokument-begin.
// @description:am      የYouTube ታምብኔይል ሆቨር ቅድመ-እይታዎችን (WebP እና ቪዲዮ) ያግዳል እና የቻናል ትሬይለሮችን (ቪዲዮ + ኦዲዮ) ያቆማል። የእድገት አሞሌዎችን፣ የፕሌይ ቁልፎችን እና የማይንቀሳቀሱ ምስሎችን ያቆያል። በሁሉም ገፆች ላይ ይሰራል፣ ምንም መግባት ወይም ፍቃድ አያስፈልግም፣ በሰነድ-ጅምር ይሰራል።
// @description:ar      يحظر معاينات الصور المصغرة عند التمرير (WebP وفيديو) ويوقف تريلرات القناة (فيديو + صوت). يحافظ على أشرطة التقدم، أزرار التشغيل، والصور الثابتة. يعمل على جميع الصفحات، بدون تسجيل دخول أو أذونات، يبدأ فور تحميل الصفحة.
// @description:as      YouTube-ত অটোপ্লে থাম্বনেইল হোভাৰ পূৰ্বদৰ্শন (WebP আৰু ভিডিঅ') আৰু চেনেল ট্ৰেইলাৰ (ভিডিঅ' + অডিঅ') ব্লক কৰে। প্ৰগ্ৰেছ বাৰ, প্লে বুটাম আৰু স্থিৰ ছবি ৰাখে। সকলো পৃষ্ঠাত কাম কৰে, লগইন বা অনুমতিৰ প্ৰয়োজন নাই, পৃষ্ঠা লোড হোৱাৰ লগে লগে চলে।
// @description:az      YouTube-da kiçik şəkillərin üzərinə gəldikdə avtomatik önizləməni (WebP və video) və kanal treylerini (video + səs) bloklayır. İzləmə çubuqlarını, oxut 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ən kimi işə düşür.
// @description:bn      ইউটিউব থাম্বনেল হোভার প্রিভিউ (WebP এবং ভিডিও) ব্লক করে এবং চ্যানেল ট্রেলার (ভিডিও + অডিও) বন্ধ করে। প্রোগ্রেস বার, প্লে বোতাম এবং স্থির ছবি রাখে। সব পৃষ্ঠায় কাজ করে, লগইন বা অনুমতি ছাড়া, পৃষ্ঠা লোড হওয়ার সাথে সাথে চলে।
// @description:bg      Блокира предварителни прегледи при навеждане на миниатюри (WebP и видео) и спира трейлърите на канали (видео + звук). Запазва лентите за напредък, бутоните за възпроизвеждане и статичните изображения. Работи на всички страници, без вход или разрешения, стартира при зареждане на страницата.
// @description:bs      Blokira pregled sličica pri lebdenju kursora (WebP i video) i zaustavlja trejlere kanala (video + zvuk). Čuva trake napretka, dugmiće za reprodukciju i statične slike. Radi na svim stranicama, bez prijave ili dozvole, pokreće se pri učitavanju stranice.
// @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, botons de reproducció i imatges estàtiques. 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, tlačítka přehrávání a statické obrázky. Bez přihlášení nebo oprávnění, spouští se při načtení stránky.
// @description:cy      Yn blocio rhagolwg chwarae awtomatig ar smotynnau (WebP a fideo) ac yn stopio treilar sianel (fideo + sain). Yn cadw barrau cynnydd, botymau chwarae a delweddau statig. Yn gweithio ar bob tudalen, dim mewngofnodi na chaniatâd, yn rhedeg ar document-start.
// @description:da      Blokerer miniature-hover-forhåndsvisninger (WebP og video) og stopper kanaltrailere (video + lyd). Bevarer fremskridtsmærker, afspilningsknapper og statiske billeder. 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, Play-Buttons und statische Bilder bei. Kein Login oder Berechtigungen erforderlich, startet beim Seitenladen.
// @description:el      Μπλοκάρει προεπισκοπήσεις εικόνων μικρογραφιών κατά το hover (WebP και βίντεο) και σταματά τρέιλερ καναλιών (βίντεο + ήχος). Διατηρεί γραμμές προόδου, κουμπιά αναπαραγωγής και στατικές εικόνες. Χωρίς σύνδεση ή άδειες, εκτελείται κατά τη φόρτωση σελίδας.
// @description:eo      Blokas miniaturojn hover antaŭrigardojn (WebP & video) kaj haltigas kanalajn antaŭfilmojn (video + sono). Konservas progresajn stangojn, ludbutonojn kaj statikajn bildojn. 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, botones de reproducción y imágenes estáticas. 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, esitusnupud ja staatilised pildid. 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, erreproduzitzeko botoiak eta irudi estatikoak. 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, toistonapit ja staattiset kuvat. 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, 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 (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 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, botóns de reprodución e imaxes estáticas. 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, tipke za reprodukciju i statične slike. Bez prijave ili dozvole, 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, lejátszási gombokat és statikus képeket. 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, tombol putar dan gambar statis. Tanpa login atau izin, berjalan saat halaman dimuat.
// @description:is      Blokkar sjálfvirka forskoðun á smámyndum (WebP og myndskeið) og stöðvar rásarstiklur (myndskeið + hljóð). Heldur áfram framfara stöng, spila hnöppum og kyrrstæðum myndum. 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, pulsanti play e immagini statiche. Nessun login o permessi, si avvia al caricamento della pagina.
// @description:ja      YouTubeのすべてのページでサムネイルのホバー時プレビュー(WebPおよびビデオ)とチャンネルトレーラー(ビデオ+音声)をブロックします。進捗バー、再生ボタン、静止画像を保持。ログインや権限不要、ページ読み込み時に実行。
// @description:ka      ბლოკავს მინიატურების ჰოვერ წინასწარ ჩვენებას (WebP & ვიდეო) და აჩერებს არხის ტრეილერებს (ვიდეო + ხმა). ინახავს პროგრესის ზოლებს, დაკვრის ღილაკებს და სტატიკურ სურათებს. შესვლა ან ნებართვა არაა საჭირო, გვერდის ჩატვირთვისას მუშაობს.
// @description:kk      YouTube-те миниатюраларға курсорды апарғанда автокөрініс алдын-ала қарауды (WebP және видео) және арна тизерлерін (видео + дыбыс) блоктайды. Прогресс жолақтарын, ойнату батырмаларын және статикалық суреттерді сақтайды. Кірусіз және рұқсатсыз жұмыс істейді, бет жүктелгенде іске қосылады.
// @description:km      ទប់ស្កាត់ការបង្ហាញជាមុនផ្ទាំងរូបភាពតូច (WebP និងវីដេអូ) នៅពេលរំកិលកណ្តុរ និងបញ្ឈប់វីដេអូផ្សព្វផ្សាយឆានែល (វីដេអូ + សំឡេង)។ រក្សាទុករបារវឌ្ឍនភាព ប៊ូតុងចាក់ និងរូបភាពឋិតិវន្ត។ ដំណើរការលើគ្រប់ទំព័រ មិនតម្រូវឱ្យចូលគណនី ឬសិទ្ធិ ចាប់ផ្តើមនៅពេលផ្ទុកទំព័រ។
// @description:ko      모든 YouTube 페이지에서 썸네일 호버 미리보기(WebP 및 비디오)와 채널 예고편(비디오 + 오디오)을 차단합니다. 진행 막대, 재생 버튼 및 정적 이미지를 유지합니다. 로그인이나 권한 불필요, 페이지 로드 시 실행.
// @description:lo      ບລັອກການສະແດງຕົວຢ່າງທີ່ເປີດອັດຕະໂນມັດເມື່ອວາງເມົາສ໌ (WebP ແລະ ວິດີໂອ) ແລະ ຢຸດຕົວຢ່າງຊ່ອງ (ວິດີໂອ + ສຽງ). ຮັກສາແຖບຄວາມຄືບໍາ, ປຸ່ມຫຼິ້ນ ແລະ ຮູບພາບຄົງທີ່. ເຮັດວຽກໃນທຸກໜ້າ, ບໍ່ຕ້ອງເຂົ້າສູ່ລະບົບ ຫຼື ອະນຸຍາດ, ເລີ່ມເຮັດວຽກຕອນທີ່ໂຫຼດໜ້າ.
// @description:lt      Blokuoja miniatiūrų užvedimo 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. 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, atskaņošanas pogas un statiskus attēlus. 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, butang main dan imej statik. 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, avspillingsknapper og statiske bilder. Ingen innlogging eller tillatelser, kjører ved sidelasting.
// @description:ne      YouTube मा थम्बनेल होभर गर्दा आउने अटोप्ले पूर्वावलोकन (WebP र भिडियो) र च्यानल ट्रेलर (भिडियो + अडियो) लाई ब्लक गर्छ। प्रोग्रेस बार, प्ले बटन र स्थिर तस्बिरहरू कायम राख्छ। सबै पेजमा काम गर्छ, लगइन वा अनुमति चाहिँदैन, पेज लोड हुने बित्तिकै चल्छ।
// @description:nl      Blokkeert hover-voorbeelden van thumbnails (WebP en video) en stopt kanaaltrailers (video + audio). Behoudt voortgangsbalken, afspeelknoppen en statische afbeeldingen. 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, avspillingsknapper og statiske bilder. Ingen innlogging eller tillatelser, 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, przyciski odtwarzania i statyczne obrazy. 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, botões de play e imagens estáticas. 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, butoanele de redare și imaginile statice. 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, 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 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 e hover thumbnail (WebP dhe video) dhe ndalon trailerat e kanalit (video + audio). Mbaj shirita përparimi, butona luajtjeje dhe imazhe statike. Pa hyrje ose leje, ekzekutohet gjatë ngarkimit të faqes.
// @description:sr      Блокира аутоматски преглед минијатура при лебдећу показивачу (WebP и видео) и зауставља трејлере канала (видео + звук). Чува траке напретка, дугмиће за репродукцију и статичне слике. Без пријаве или дозволе, покреће се при учитавању странице.
// @description:sv      Blockerar förhandsgranskningar vid hovring på 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: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ı, oynat düğmelerini ve statik resimleri korur. Giriş veya izin gerekmez, sayfa yüklenirken çalışır.
// @description:ug      بارلىق YouTube بەتلىرىدە كىچىك رەسىم hover ئالدىن كۆرۈشلىرىنى (WebP & ۋىدىيو) ۋە قانال تىزىرلىقلىرىنى (ۋىدىيو + ئاۋاز) چەكلەيدۇ. ئىلگىرىلەش تارىمىقى، ئويناش كۇنۇپكىلىرى ۋە سىتاتىك رەسىملەرنى ساقلايدۇ. كىرىش ياكى ئىجازەت تەلەپ قىلمايدۇ، بەت يۈكلەنگەندە ئىجرا بولىدۇ.
// @description:uk      Блокує попередній перегляд при наведенні на мініатюри (WebP та відео) та зупиняє трейлери каналів (відео + звук). Зберігає смуги прогресу, кнопки відтворення та статичні зображення. Без входу чи дозволів, запускається при завантаженні сторінки.
// @description:vi      Chặn xem trước tự động khi di chuột qua thumbnail (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-TW   在所有 YouTube 頁面上阻止縮圖懸停預覽(WebP 與視頻)並停止頻道預告片(視頻+音頻)。保留進度條、播放按鈕和靜態圖像。無需登錄或權限,頁面載入時即執行。
// @namespace    https://greasyfork.org/users/979364-miebie-1412
// @author       miebie.1412
// @version      1.6.2
// @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/users/979364-miebie-1412
// @supportURL   https://greasyfork.org/users/979364-miebie-1412
// @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;
        }
        /* Bảo vệ main thumbnail */
        #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, 1000);
    }
 
    document.addEventListener("fullscreenchange", pauseBlocking, true);
    window.fsPause = fsPause;
 
    const origBlockAll = window.blockAll;
    const origScanAllVideos = window.scanAllVideos;
 
    if (origBlockAll) {
        window.blockAll = function () {
            if (fsPause) return;
            return origBlockAll.apply(this, arguments);
        };
    }
 
    if (origScanAllVideos) {
        window.scanAllVideos = function () {
            if (fsPause) return;
            return origScanAllVideos.apply(this, arguments);
        };
    }
})();