您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
使YouTube界面更加动态,隐藏包含关键词的视频,添加下载按钮并在无广告页面(嵌入youtube-nocookie)中打开视频。
// ==UserScript== // @name YouTube Lite (melhor experiência) // @name:pt YouTube Lite (melhor experiência) // @name:pt-PT YouTube Lite (melhor experiência) // @name:pt-BR YouTube Lite (melhor experiência) // @name:es YouTube Lite (la mejor experiencia) // @name:en YouTube Lite (best experience) // @name:fr YouTube Lite (meilleure expérience) // @name:ru YouTube Lite (лучший опыт) // @name:ja YouTube Lite (最高のエクスペリエンス) // @name:ko YouTube Lite (최고의 경험) // @name:zh-TW YouTube Lite (更佳體驗) // @name:zh-CN YouTube Lite (更好的体验) // @name:id YouTube Lite (pengalaman terbaik) // @name:ug YouTube Lite (ئەڭ ياخشى تەجرىبە) // @name:ar YouTube Lite (أفضل تجربة) // @name:he YouTube Lite (חוויית השימוש הטובה ביותר) // @name:hi YouTube Lite (सर्वश्रेष्ठ अनुभव) // @name:th YouTube Lite (ประสบการณ์ที่ดีที่สุด) // @name:bg YouTube Lite (най-добър опит) // @name:ro YouTube Lite (cea mai bună experiență) // @name:fi YouTube Lite (paras kokemus) // @name:it YouTube Lite (migliore esperienza) // @name:el YouTube Lite (καλύτερη εμπειρία) // @name:eo YouTube Lite (plej bona sperto) // @name:hu YouTube Lite (legjobb élmény) // @name:nb YouTube Lite (beste opplevelse) // @name:sk YouTube Lite (najlepšia skúsenosť) // @name:sv YouTube Lite (bästa upplevelsen) // @name:sr YouTube Lite (најбоље искуство) // @name:pl YouTube Lite (najlepsze doświadczenie) // @name:nl YouTube Lite (beste ervaring) // @name:de YouTube Lite (beste Erfahrung) // @name:da YouTube Lite (bedste oplevelse) // @name:cs YouTube Lite (nejlepší zkušenost) // @name:uk YouTube Lite (найкращий досвід) // @name:tr YouTube Lite (en iyi deneyim) // @name:vi YouTube Lite (trải nghiệm tốt nhất) // @name:fr-CA YouTube Lite (meilleure expérience) // @namespace http://linkme.bio/jhonpergon/?userscript=youtube_lite // @version 3.5 // Updated version to reflect changes // @author Jhon Pérgon // @license MIT // @description Deixa a interface do YouTube mais leve, oculta vídeos com palavras-chaves, adiciona botão de download e abre o vídeo em uma página livre de anúncios (embed youtube-nocookie). // @description:pt Deixa a interface do YouTube mais leve, oculta vídeos com palavras-chaves, adiciona botão de download e abre o vídeo em uma página livre de anúncios (embed youtube-nocookie). // @description:pt-PT Deixa a interface do YouTube mais leve, oculta vídeos com palavras-chaves, adiciona botão de download e abre o vídeo em uma página livre de anúncios (embed youtube-nocookie). // @description:pt-BR Deixa a interface do YouTube mais leve, oculta vídeos com palavras-chaves, adiciona botão de download e abre o vídeo em uma página livre de anúncios (embed youtube-nocookie). // @description:es Hace que la interfaz de YouTube sea más dinámica, oculta videos con palabras clave, agrega un botón de descarga y abre el video en una página sin publicidad (embed youtube-nocookie). // @description:en Makes the YouTube interface lighter, hides videos with keywords, adds a download button and opens the video on an ad-free page (embed youtube-nocookie). // @description:fr Il rend l'interface YouTube plus dynamique, masque les vidéos avec des mots-clés, ajoute un bouton de téléchargement et ouvre la vidéo sur une page sans publicité (embed youtube-nocookie). // @description:ru Он делает интерфейс YouTube более динамичным, скрывает видео с ключевыми словами, добавляет кнопку загрузки и открывает видео на странице без рекламы (встроить youtube-nocookie). // @description:ja YouTube インターフェースをより動的にし、キーワードを含むビデオを非表示にし、ダウンロード ボタンを追加して、広告なしのページ (youtube-nocookie embed) でビデオを開きます。 // @description:ko YouTube 인터페이스를 더욱 동적으로 만들고, 키워드로 동영상을 숨기고, 다운로드 버튼을 추가하고, 광고 없는 페이지에서 동영상을 엽니다(youtube-nocookie embed). // @description:zh-TW 使YouTube介面更加動態,隱藏包含關鍵字的影片,新增下載按鈕,並在無廣告頁面(嵌入youtube-nocookie)中開啟影片。 // @description:zh-CN 使YouTube界面更加动态,隐藏包含关键词的视频,添加下载按钮并在无广告页面(嵌入youtube-nocookie)中打开视频。 // @description:id Membuat antarmuka YouTube lebih ringan, menyembunyikan video dengan kata kunci, menambahkan tombol unduh, dan membuka video di halaman tanpa iklan (sematkan youtube-nocookie). // @description:ug يوتۇب يېڭىلاندۇرغۇچى كىرىشتىمىنى ياقسى قىلىدۇ، ئاڭلىق سۆزلىك ۋىدېئولارنى يوپۇش قىلىدۇ، چۈشۈرمە تومبۇلى قوشىدۇ ۋە چىراق ئېكراندا (youtube-nocookie sematka qilish) ۋىدېئونى ئېچىدۇ. // @description:ar يجعل واجهة يوتيوب أخف وزنًا، يخفي مقاطع الفيديو بكلمات مفتاحية، يضيف زر تنزيل ويفتح الفيديو على صفحة خالية من الإعلانات (تضمين youtube-nocookie). // @description:he הופך את ממשק YouTube לקל יותר, מסתיר סרטונים עם מילות מפתח, מוסיף לחצן הורדה ופותח את הסרטון על דף נטול פרסומות (הטמעת youtube-nocookie). // @description:hi यूट्यूब इंटरफ़ेस को हल्का बनाता है, कीवर्ड के साथ वीडियो को छुपाता है, डाउनलोड बटन जोड़ता है और एड-मुक्त पृष्ठ पर वीडियो खोलता है (youtube-nocookie embed)। // @description:th ทำให้อินเตอร์เฟซ YouTube เบาขึ้น, ซ่อนวิดีโอด้วยคำสำคัญ, เพิ่มปุ่มดาวน์โหลด และเปิดวิดีโอบนหน้าไม่มีโฆษณา (ฝัง youtube-nocookie) ให้ดู // @description:bg Прави интерфейса на YouTube по-лек, скрива видеоклипове с ключови думи, добавя бутон за изтегляне и отваря видеоклипа на страница без реклами (вграждане на youtube-nocookie). // @description:ro Face interfața YouTube mai ușoară, ascunde videoclipurile cu cuvinte cheie, adaugă un buton de descărcare și deschide videoclipul pe o pagină fără reclame (încorporare youtube-nocookie). // @description:fi Tekee YouTube-liittymästä kevyemmän, piilottaa avainsanalla varustetut videot, lisää latauspainikkeen ja avaa videon mainoksettomalle sivulle (upottaa youtube-nocookie). // @description:it Rende l'interfaccia di YouTube più leggera, nasconde i video con parole chiave, aggiunge un pulsante di download e apre il video su una pagina senza pubblicità (embed youtube-nocookie). // @description:el Καθιστά τη διεπαφή του YouTube πιο ελαφριά, αποκρύπτει τα βίντεο με λέξεις-κλειδιά, προσθέτει ένα κουμπί λήψης και ανοίγει το βίντεο σε μια σελίδα χωρίς διαφημίσεις (ενσωμάτωση youtube-nocookie). // @description:eo Faras la interfaco de YouTube pli malpeza, kaŝas videojn kun ŝlosilvortoj, aldonas elŝut-butonon kaj malfermas la videon en senanonca paĝo (enteni youtube-nocookie). // @description:hu Könnyebbé teszi a YouTube felületét, kulcsszavakkal elrejti a videókat, hozzáad egy letöltés gombot, és az videót hirdetések nélküli oldalon nyitja meg (beágyazott youtube-nocookie). // @description:nb Gjør YouTube-grensesnittet lettere, skjuler videoer med søkeord, legger til en nedlastingsknapp og åpner videoen på en annonsefri side (innbygg youtube-nocookie). // @description:sk Robí rozhranie YouTube ľahším, skrýva videá s kľúčovými slovami, pridáva tlačidlo na stiahnutie a otvára video na stránke bez reklám (vložiť youtube-nocookie). // @description:sv Gör YouTube-gränssnittet lättare, gömmer videor med nyckelord, lägger till en nedladdningsknapp och öppnar videon på en annonsfri sida (bädda in youtube). // @description:sr Прави интерфејс YouTube-а лакшим, сакрива видее са кључним речима, додаје дугме за преузимање и отвара видео на страници без реклама (уградња youtube-nocookie). // @description:pl Uczy interfejs YouTube'a lżejszym, ukrywa filmy z słowami kluczowymi, dodaje przycisk do pobierania i otwiera film na stronie bez reklam (osadzanie youtube-nocookie). // @description:nl Maakt de YouTube-interface lichter, verbergt video's met trefwoorden, voegt een downloadknop toe en opent de video op een advertentievrije pagina (insluiten youtube-nocookie). // @description:de Macht die YouTube-Benutzeroberfläche leichter, versteckt Videos mit Schlüsselwörtern, fügt einen Download-Button hinzu und öffnet das Video auf einer werbefreien Seite (einbetten youtube-nocookie). // @description:da Gør YouTube-grænsefladen lettere, skjuler videoer med søgeord, tilføjer en downloadknap og åbner videoen på en reklamefri side (indlejre youtube-nocookie). // @description:cs Dělá YouTube rozhraní lehčí, skrývá videa s klíčovými slovy, přidává tlačítko ke stažení a otevírá video na stránce bez reklam (vložit youtube-nocookie). // @description:uk Робить інтерфейс YouTube легшим, приховує відео з ключовими словами, додає кнопку завантаження та відкриває відео на сторінці без реклами (вбудовувати youtube-nocookie). // @description:tr YouTube arayüzünü daha hafif hale getirir, anahtar kelimelerle videoları gizler, indirme düğmesi ekler ve videoyu reklamsız bir sayfada açar (yerleştirme youtube-nocookie). // @description:vi Làm cho giao diện YouTube nhẹ hơn, ẩn đi các video có từ khóa, thêm nút tải xuống và mở video trên trang không có quảng cáo (nhúng youtube-nocookie). // @description:fr-CA Rend l'interface YouTube plus légère, masque les vidéos avec des mots-clés, ajoute un bouton de téléchargement et ouvre la vidéo sur une page sans publicité (intégrer youtube-nocookie). // @match https://www.youtube.com/* // @match https://m.youtube.com/* // @match https://youtu.be/* // @match https://www.youtube-nocookie.com/* // @exclude https://music.youtube.com/* // @exclude https://www.youtube.com/embed/* // @exclude https://youtube.com/embed/* // @icon https://icons.iconarchive.com/icons/designbolts/cute-social-media/256/Youtube-icon.png // @grant GM_addStyle // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @license MIT // @run-at document-start // @compatible chrome // @compatible firefox // @compatible opera // @compatible edge // @compatible safari // @compatible berrybrowser // ==/UserScript== (function() { 'use strict'; // --- CONFIGURATION AND INITIAL SETUP --- // User-configurable settings const config = { // Automatically redirect to the ad-free youtube-nocookie domain // Set to `true` to enable, `false` to disable. redirectToNoCookie: true, // The version of the script. Used for first-run logic. scriptVersion: '3.5' }; const currentUrl = window.location.href; const isVideoPage = currentUrl.includes('v='); let videoId = null; let keywords = []; // Language-specific text for user messages. // Simplified into a single object for easier management. const i18n = { 'firstRun': { 'en': 'Note: You are accessing version {version} of Youtube Lite for the first time. To ensure its proper functioning, we will clear the cookies and restart the page.', 'pt-BR': 'Nota: Você está acessando a versão {version} do Youtube Lite pela primeira vez. Para garantir o seu correto funcionamento, iremos limpar os cookies e reiniciar a página.', 'ru': 'Примечание: Вы впервые открываете версию {version} Youtube Lite. Для обеспечения её правильной работы мы очистим куки и перезапустим страницу.', // Add other languages here. }, 'reloading': { 'en': 'Done. The page will be reloaded with your language.', 'pt-BR': 'Feito. A página será recarregada com seu idioma.', 'ru': 'Готово. Страница будет перезагружена с вашим языком.', // Add other languages here. }, 'keywordsSaved': { 'en': 'Saved! The page will be reloaded to activate the hiding of new keywords.', 'pt-BR': 'Salvo! A página será recarregada para ativar a ocultação das novas palavras-chave.', 'ru': 'Сохранено! Страница будет перезагружена для активации скрытия новых ключевых слов.', // Add other languages here. }, 'projectLink': { 'en': 'Open Youtube Lite project page', 'pt-BR': 'Abrir página do projeto Youtube Lite', 'ru': 'Открыть страницу проекта Youtube Lite', // Add other languages here. } }; function getLocalizedText(key, replacements = {}) { const userLang = (navigator.language || navigator.userLanguage).toLowerCase().substring(0, 5); let langCode = Object.keys(i18n[key]).find(lang => userLang.startsWith(lang)) || 'en'; let text = i18n[key][langCode]; for (const [placeholder, value] of Object.entries(replacements)) { text = text.replace(`{${placeholder}}`, value); } return text; } // --- UTILITY FUNCTIONS --- // Function to extract video ID from URL function getVideoIdFromUrl(url = currentUrl) { let match = url.match(/(?:v=|youtu\.be\/)([^&?]+)/); return match ? match[1] : null; } // Function to set up the keyword hiding logic function setupKeywords() { const savedKeywordsString = GM_getValue('keyWords', ''); if (savedKeywordsString) { keywords = savedKeywordsString.split(',').map(kw => kw.trim().toLowerCase()).filter(kw => kw.length > 0); } } // Check if an element's text content contains any of the keywords function containsKeywords(element) { if (!element || keywords.length === 0) return false; const text = (element.textContent || '').toLowerCase(); return keywords.some(keyword => text.includes(keyword)); } // --- CORE LOGIC --- // Initial setup and cleanup on document start function init() { checkFirstRun(); applyGlobalStyles(); setupKeywords(); handlePageRedirection(); } function checkFirstRun() { const savedVersion = GM_getValue('version', '0.0'); if (savedVersion !== config.scriptVersion) { alert(getLocalizedText('firstRun', { version: config.scriptVersion })); clearAllCookies(); GM_setValue('version', config.scriptVersion); window.location.reload(); } } function clearAllCookies() { document.cookie.split(';').forEach(cookie => { const eqPos = cookie.indexOf('='); const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie; document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT'; }); } // Apply necessary styles function applyGlobalStyles() { // Add font-awesome for icons and other custom styles GM_addStyle(` @import url("https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css"); .yt-lite-download-button { display: flex; align-items: center; justify-content: center; cursor: pointer; } .yt-lite-hidden { display: none !important; } `); } // This function will handle redirects and other early-stage logic function handlePageRedirection() { if (config.redirectToNoCookie && isVideoPage) { const videoId = getVideoIdFromUrl(); if (videoId && !currentUrl.includes('youtube-nocookie.com')) { // Redirect to the ad-free version window.location.replace(`https://www.youtube-nocookie.com/watch?v=${videoId}`); } } } // --- DOM MANIPULATION AND OBSERVER LOGIC --- // The main function to observe and modify the page function observeDOM() { const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { mutation.addedNodes.forEach(node => { if (node.nodeType === 1) { // It's an element if (isVideoPage) { // Add download button on video pages addDownloadButton(node); // Skip ads if they appear skipAd(node); } // Hide videos based on keywords hideVideosWithKeywords(node); // Clean up unnecessary elements cleanupLiteInterface(node); } }); } }); }); // Start observing the body for changes observer.observe(document.body, { childList: true, subtree: true }); } function hideVideosWithKeywords(container) { const videoItems = container.querySelectorAll('ytd-rich-item-renderer, ytd-video-renderer'); videoItems.forEach(item => { if (containsKeywords(item)) { item.classList.add('yt-lite-hidden'); } }); } function cleanupLiteInterface(container) { // Use a more generic approach to remove elements that are not part of the main content const elementsToRemove = container.querySelectorAll( 'ytd-playlist-thumbnail, ytd-moving-thumbnail-renderer, ' + 'ytd-thumbnail-overlay-toggle-button-renderer, ytd-thumbnail-overlay-inline-unplayable-renderer, ' + 'ytd-thumbnail-overlay-resume-playback-renderer, iron-iconset-svg, ytd-watch-next-secondary-results-renderer' ); elementsToRemove.forEach(el => el.classList.add('yt-lite-hidden')); } function skipAd(container) { const skipButton = container.querySelector('.ytp-ad-skip-button'); if (skipButton) { skipButton.click(); } } function addDownloadButton(container) { if (!isVideoPage) return; const infoBar = container.querySelector('#info-contents'); if (infoBar && !infoBar.querySelector('.yt-lite-download-button')) { const downloadUrl = `https://ssyoutube.com/watch?v=${videoId}`; // Example download service URL const downloadButton = document.createElement('a'); downloadButton.href = downloadUrl; downloadButton.target = '_blank'; downloadButton.className = 'yt-lite-download-button'; downloadButton.innerHTML = ` <span class="bi bi-download"></span> <span>Download</span> `; infoBar.appendChild(downloadButton); } } // --- EXECUTION START --- // Run the initial setup init(); // Start the DOM observer after the page is fully loaded to ensure all scripts have run window.addEventListener('load', observeDOM); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址