// ==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 au Canada) // @namespace http://linkme.bio/jhonpergon/?userscript=youtube_lite // @version 2.7 // @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 au Canada). // @match https://www.youtube.com/* // @match https://m.youtube.com/* // @match https://music.youtube.com/* // @match https://youtu.be/* // @match https://www.youtube-nocookie.com/* // @icon https://icons.iconarchive.com/icons/designbolts/cute-social-media/256/Youtube-icon.png // @grant GM_addStyle // @grant GM_getValue // @grant GM_setValue // @license MIT // @run-at document-start // @compatible chrome // @compatible firefox // @compatible opera // @compatible edge // @compatible safari // @compatible berrybrowser // @downloadURL none // ==/UserScript== (function() { 'use strict'; let sessao = 1; let atualx = false; let videoId = getVideoIdFromUrl(); let idiomaPadrao = ""; // Define o valor inicial do select com base no idioma salvo if(GM_getValue('xidiomaSelecionado') == undefined){ GM_setValue('xidiomaSelecionado', "en"); idiomaPadrao = GM_getValue('xidiomaSelecionado'); } // Lista de URLs de API conhecidas para capturar o IP const blockedApiUrls = [ 'https://api.ipify.org', 'https://api.ipify.org?format=json', 'https://ipinfo.io', 'https://ipinfo.io/ip', 'https://ipinfo.io/api', 'https://api.ipapi.com', 'https://www.iplocation.net', 'https://api.iplocation.net', 'https://website-cdn.ipinfo.io', 'https://p.typekit.net', 'https://use.typekit.net', 'https://pagead2.googlesyndication.com', 'https://www.gstatic.com', '/ip', '/ajax', '/ads', '/static', '/js', '/script', '/scripts', '/event', '/events', 'https://accounts.youtube.com', 'https://www.google.com', 'https://www.google.com.br', '/api/session', 'https://youtube.com', 'https://www.youtube.com', 'https://m.youtube.com', 'https://play.google.com', '//googleads.g.doubleclick.net', 'https://rr', '/youtubei', 'https://yt3.ggpht.com', 'https://i.ytimg.com', 'https://rr5---sn-o097znze.googlevideo.com', 'https://rr4---sn-5ufvuxaxxpgxap-hj1e.googlevideo.com', 'https://rr2---sn-voxuxaxjvh-gxj6.googlevideo.com', 'https://jnn-pa.googleapis.com', 'https://suggestqueries-clients6.youtube.com', '/player', '/a', '/b', '/c', '/d', '/e', '/f', '/g', '/i', '/j', '/k', '/l', '/m', '/n', '/o', '/p', '/q', '/r', '/s', '/t', '/u', '/v', '/w', '/x', '/y', '/z', // Adicione mais URLs de API que deseja bloquear, se necessário ]; // Intercepta as solicitações AJAX feitas pelo website var verifyc1 = false; if(window.location.href.includes("youtube.com")){ const open = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function(method, url) { if (blockedApiUrls.some(apiUrl => url.startsWith(apiUrl))) { verifyc1 = true; limparCookies(); addLinks(); return; // Interrompe a execução da solicitação } open.apply(this, arguments); }; } let bloquearFetch = true; var verifyc2 = false; function interceptarFetch(url, options) { //console.log('---->>', url); if (bloquearFetch && correspondeAUrlBloqueada(url)) { //console.log('Solicitação fetch bloqueada:', url); limparCookies(); addLinks(); verifyc2 = true; return Promise.resolve({ status: 200, body: 'A solicitação foi bloqueada.' }); } else { return window.originalFetch.call(this, url, options); } } function correspondeAUrlBloqueada(url) { for (const urlBloqueada of blockedApiUrls) { if (url.startsWith(urlBloqueada)) { return true; } } return false; } // Substituir a função fetch globalmente if(window.location.href.includes("youtube.com")){ window.originalFetch = window.fetch; window.fetch = interceptarFetch; } // Aguarde o evento de carregamento total da página window.addEventListener('load', function() { // Após o carregamento total da página, permitir todas as solicitações fetch bloquearFetch = false; }); function getUrl(xxx) { try { if (typeof xxx !== 'string') { throw new Error('Input is not a string'); } const url = new URL(xxx); const vParam = url.searchParams.get('v'); if (vParam) { return vParam; } } catch (error) { console.error('ERROR "v":', error); } return null; } GM_addStyle('@import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@1.8.3/font/bootstrap-icons.css");'); // Função para extrair o ID do vídeo da URL function getVideoIdFromUrl() { const url = window.location.href; const match = url.match(/[?&]v=([^&]+)/); if (match && match[1]) { return match[1]; } return null; } // Recupere o texto salvo no armazenamento local var palavrasSalvas = GM_getValue('keyWords', '') function stringParaArray(xpalavrasChave) { const arrayDePalavras = xpalavrasChave.split(','); const palavrasLimparEspacos = arrayDePalavras .map(palavra => palavra.trim()) .filter(palavra => palavra !== ''); return palavrasLimparEspacos; } const palavrasChaveString = palavrasSalvas; const palavrasChave = stringParaArray(palavrasChaveString);; console.log(palavrasChave); function converterParaArray() { // Obtém o valor da textarea const listaTexto = document.getElementById('listaDeTermos').value; // Divide o texto em termos separados por vírgulas const termosArray = listaTexto.split(','); // Remove espaços em branco em excesso em cada termo const termosLimpos = termosArray.map(termo => termo.trim()); // Exibe o resultado na página const resultado = document.getElementById('resultado'); resultado.textContent = JSON.stringify(termosLimpos); } // Função para verificar se uma palavra-chave está presente em um elemento function verificaPalavrasChave(elemento) { var texto = elemento.textContent.toLowerCase(); for (var i = 0; i < palavrasChave.length; i++) { var palavra = palavrasChave[i].toLowerCase(); if (texto.includes(palavra)) { return true; } } return false; } function getUrl(xxx) { try { if (typeof xxx !== 'string') { throw new Error('Input is not a string'); } const url = new URL(xxx); const vParam = url.searchParams.get('v'); if (vParam) { return vParam; } } catch (error) { console.error('ERROR "v":', error); } return null; } // Função para remover tags "ytd-rich-item-renderer" com base nas palavras-chave function removeTagsComPalavrasChave() { var elementos = document.querySelectorAll("ytd-rich-item-renderer"); elementos.forEach(function (elemento) { if (verificaPalavrasChave(elemento)) { elemento.remove(); } }); } // CÓDIGO IMPORTADO const equalText1 = "Skip Ads"; const equalText2 = "Skip Ad"; function addNewStyle(newStyle) { var styleElement = document.getElementById('styles_js'); if (!styleElement) { styleElement = document.createElement('style'); styleElement.type = 'text/css'; styleElement.id = 'styles_js'; document.getElementsByTagName('head')[0].appendChild(styleElement); } styleElement.appendChild(document.createTextNode(newStyle)); } function skipAd(){ if(document.getElementsByClassName("ytp-ad-skip-button").length > 0){ if(document.getElementsByClassName("ytp-ad-skip-button")[0].childNodes[0].textContent === equalText1 || document.getElementsByClassName("ytp-ad-skip-button")[0].childNodes[0].textContent === equalText2){ document.getElementsByClassName("ytp-ad-skip-button")[0].click(); } else { setTimeout(skipAd(), 1000); } } } // Função para remover todos os elementos desnecessários function removerTagsScript() { if(sessao == 1 && window.location.href.includes("v=") !== true){ addButtons(); sessao = 2; } if(sessao == 2 && window.location.href.includes("v=") == true){ window.location.reload(); } setTimeout(function(){ const scripts = document.querySelectorAll('script'); scripts.forEach(function(script) { script.parentNode.removeChild(script); }); const tagthumbnails = document.querySelectorAll('ytd-playlist-thumbnail'); tagthumbnails.forEach(function(thumbnail) { thumbnail.parentNode.removeChild(thumbnail); }); const tagthumbnail2s = document.querySelectorAll('ytd-moving-thumbnail-renderer'); tagthumbnail2s.forEach(function(thumbnail2) { thumbnail2.parentNode.removeChild(thumbnail2); }); const tagthumbnail3s = document.querySelectorAll('ytd-thumbnail-overlay-toggle-button-renderer'); tagthumbnail3s.forEach(function(thumbnail3) { thumbnail3.parentNode.removeChild(thumbnail3); }); const tagthumbnail4s = document.querySelectorAll('ytd-thumbnail-overlay-inline-unplayable-renderer'); tagthumbnail4s.forEach(function(thumbnail4) { thumbnail4.parentNode.removeChild(thumbnail4); }); const tagthumbnail5s = document.querySelectorAll('ytd-thumbnail-overlay-resume-playback-renderer'); tagthumbnail5s.forEach(function(thumbnail5) { thumbnail5.parentNode.removeChild(thumbnail5); }); const iconsets = document.querySelectorAll('iron-iconset-svg'); iconsets.forEach(function(iconset) { iconset.parentNode.removeChild(iconset); }); const recomendados = document.querySelectorAll('ytd-watch-next-secondary-results-renderer'); recomendados.forEach(function(recomendado) { recomendado.parentNode.removeChild(recomendado); }); const recomendado2s = document.querySelectorAll('ytd-statement-banner-renderer'); recomendado2s.forEach(function(recomendado2) { recomendado2.parentNode.removeChild(recomendado2); }); const ychats = document.querySelectorAll('ytd-live-chat-frame'); ychats.forEach(function(ychat) { ychat.parentNode.removeChild(ychat); }); const ycanvas = document.querySelectorAll('canvas'); ycanvas.forEach(function(ycanva) { ycanva.parentNode.removeChild(ycanva); }); const yminiplayers = document.querySelectorAll('ytd-miniplayer'); yminiplayers.forEach(function(yminiplayer) { yminiplayer.parentNode.removeChild(yminiplayer); }); const ythirds = document.querySelectorAll('ytd-third-party-manager'); ythirds.forEach(function(ythird) { ythird.parentNode.removeChild(ythird); }); const yannouncers = document.querySelectorAll('iron-a11y-announcer'); yannouncers.forEach(function(yannouncer) { yannouncer.parentNode.removeChild(yannouncer); }); const ymediaQuerys = document.querySelectorAll('iron-media-query'); ymediaQuerys.forEach(function(ymediaQuery) { ymediaQuery.parentNode.removeChild(ymediaQuery); }); const ytdAds = document.querySelectorAll('ytd-ad-slot-renderer'); ytdAds.forEach(function(ytdAd) { ytdAd.parentNode.removeChild(ytdAd); }); const ytdAd3s = document.querySelectorAll('ytd-merch-shelf-renderer'); ytdAd3s.forEach(function(ytdAd3) { ytdAd3.parentNode.removeChild(ytdAd3); }); const ytdAd4s = document.querySelectorAll('tp-yt-paper-dialog'); ytdAd4s.forEach(function(ytdAd4) { ytdAd4.parentNode.removeChild(ytdAd4); }); const ytdAd5s = document.querySelectorAll('ytd-action-companion-ad-renderer'); ytdAd5s.forEach(function(ytdAd5) { ytdAd5.parentNode.removeChild(ytdAd5); }); const ytdAd6s = document.querySelectorAll('ytm-video-with-context-renderer'); ytdAd6s.forEach(function(ytdAd6) { ytdAd6.parentNode.removeChild(ytdAd6); }); const ytdAd7s = document.querySelectorAll('ytm-continuation-item-renderer'); ytdAd7s.forEach(function(ytdAd7) { ytdAd7.parentNode.removeChild(ytdAd7); }); const videosAds = document.querySelectorAll('.video-ads'); if(videosAds){ if (videosAds.length > 0) { videosAds.forEach(function(videosAd) { videosAd.parentNode.removeChild(videosAd); }); } } if(GM_getValue('imgShow') !== undefined && GM_getValue('imgShow') == "no"){ const thumbnails = document.querySelectorAll('#thumbnail'); if (thumbnails) { thumbnails.forEach(function(xthumbnail) { if(xthumbnail.href == undefined){ xthumbnail.parentNode.removeChild(xthumbnail); }else if(xthumbnail.href.includes("/shorts/") == true){ console.log(xthumbnail.href) }else{ xthumbnail.parentNode.removeChild(xthumbnail); } }); } } if(GM_getValue('shortsShow') == undefined || GM_getValue('shortsShow') == "no"){ const shortsOpt = document.querySelectorAll('#endpoint'); if(shortsOpt){ if (shortsOpt.length > 0) { shortsOpt.forEach(function(shots) { if(shots.title == "Shorts"){ shots.parentNode.removeChild(shots); } }); } } let mediaElements = document.querySelectorAll('video, audio'); if(mediaElements){ mediaElements.forEach(function (media) { if (typeof media.play === 'function') { media.play = function () {}; } }); } const xplayers = document.querySelectorAll('ytd-player'); xplayers.forEach(function(player) { player.parentNode.removeChild(player); }); const interactions = document.querySelectorAll('yt-interaction'); interactions.forEach(function(interaction) { interaction.parentNode.removeChild(interaction); }); const renderers = document.querySelectorAll('ytd-rich-shelf-renderer'); renderers.forEach(function(renderer) { renderer.parentNode.removeChild(renderer); }); const ytdAd2s = document.querySelectorAll('ytd-rich-section-renderer'); ytdAd2s.forEach(function(ytdAd2) { ytdAd2.parentNode.removeChild(ytdAd2); }); const recomendado3s = document.querySelectorAll('ytd-reel-shelf-renderer'); recomendado3s.forEach(function(recomendado3) { recomendado3.parentNode.removeChild(recomendado3); }); const ytshots = document.querySelectorAll('ytd-shorts'); ytshots.forEach(function(shotsPage) { shotsPage.parentNode.removeChild(shotsPage); }); } const previews = document.querySelectorAll('.ytp-gradient-top'); if(previews){ if (previews.length > 0) { previews.forEach(function(preview) { preview.style.display = 'none'; preview.parentNode.removeChild(preview); }); } } const previews2 = document.querySelectorAll('#hover-overlays'); if(previews2){ if (previews2.length > 0) { previews2.forEach(function(preview) { preview.style.display = 'none'; preview.parentNode.removeChild(preview); }); } } const previews3 = document.querySelectorAll('#mouseover-overlay'); if(previews3){ if (previews3.length > 0) { previews3.forEach(function(preview) { preview.style.display = 'none'; preview.parentNode.removeChild(preview); }); } } if(window.location.href.includes("youtube.com")){ skipAd(); } // Selecione todos os elementos do DOM var allElements = document.querySelectorAll('*'); // Itere por todos os elementos e remova os manipuladores de eventos de clique allElements.forEach(function(element) { element.click = ""; element.keydown = ""; element.mousedown = ""; element.down = ""; element.attached = ""; //element.onclick = ""; element.auxclick = ""; element.dblclick = ""; element.copy = ""; element.change = ""; element.keypress = ""; element.mouseover = ""; }); // Obtém todos os elementos pelo ID e os remove let currentURL = window.location.href; if (currentURL.includes("v=")) { const playerPrincipal = document.querySelectorAll('#player-container-outer'); for (const element of playerPrincipal) { element.remove(); }; const allSecundary = document.querySelectorAll('#secondary'); for (const element of allSecundary) { element.remove(); }; const primaryx = document.querySelector('#primary'); if (primaryx) { primaryx.style.maxWidth = "720px"; primaryx.style.margin = "auto"; primaryx.style.padding = "2px 10px"; } }; const playerAds = document.querySelectorAll('#player-ads'); for (const element of playerAds) { element.remove(); }; const alertRemoves = document.querySelectorAll('#clarify-box'); for (const element of alertRemoves) { element.remove(); }; const elementsToRemove = document.querySelectorAll('#video-preview'); for (const element of elementsToRemove) { element.remove(); }; const adsInfo = document.querySelectorAll('#ads-info-button'); for (const element of adsInfo) { element.remove(); }; }, 500); } let errorPlay = false; function tagsNonePlay(){ const vernoYt = document.querySelector('.ytp-impression-link'); if (vernoYt) { vernoYt.style.display = "none"; } const pausenokoo = document.querySelector('.ytp-pause-overlay'); if (pausenokoo) { pausenokoo.style.display = "none"; } const notificKoo1 = document.querySelector('.ytp-info-panel-preview'); if (notificKoo1) { notificKoo1.style.display = "none"; } const notificKoo2 = document.querySelector('.html5-endscreen.ytp-player-content.videowall-endscreen.ytp-endscreen-paginate.ytp-show-tiles'); if (notificKoo2) { notificKoo2.style.display = "none"; } const errorx1 = document.querySelector('.ytp-error-content'); if (errorx1 && errorPlay == false) { errorPlay = true; let notError= document.querySelector('.ytp-error-content-wrap'); let videoId = ""; let currentURL = window.location.href; var urlxx = currentURL; var videoCode = urlxx.match(/embed\/([A-Za-z0-9_-]+)/); if (videoCode && videoCode.length > 1) { var codigoDoVideo = videoCode[1]; videoId = codigoDoVideo; } idiomaPadrao = GM_getValue('xidiomaSelecionado'); notError.innerHTML = `
Youtube Lite (error). Options:
→ Open with Player 2
→ Open with Player 3
→ Open in Invidious
`; let baixeError = document.querySelector('.ytp-small-redirect'); baixeError.innerHTML = ``; baixeError.href = `https://www.y2mate.com/pt/youtube/${videoId}`; baixeError.title = "Download"; baixeError.style.fontSize = "2.1rem"; baixeError.setAttribute('target', '_blank'); } } function addLinks(){ // Troca links function removaTudo(event) { event = ``; } const richItemRenderers = document.querySelectorAll('ytd-rich-item-renderer'); const brocken = document.querySelectorAll('body'); for (const xbrocken of brocken) { const childElements = xbrocken.querySelectorAll('*'); // Seleciona todos os elementos filhos do elemento childElements.forEach((retiraEvento) => { retiraEvento.removeEventListener('click', removaTudo(this)); retiraEvento.removeEventListener('mousedown', removaTudo(this)); retiraEvento.removeEventListener('down', removaTudo(this)); retiraEvento.removeEventListener('pointerdown', removaTudo(this)); retiraEvento.removeEventListener('mouseover', removaTudo(this)); retiraEvento.removeEventListener('keypress', removaTudo(this)); retiraEvento.removeEventListener('keydown', removaTudo(this)); retiraEvento.removeEventListener('load', removaTudo(this)); retiraEvento.removeEventListener('yt-action', removaTudo(this)); retiraEvento.removeEventListener('mouseenter', removaTudo(this)); retiraEvento.removeEventListener('mouseleave', removaTudo(this)); retiraEvento.removeEventListener('wheel', removaTudo(this)); }); }; //alert(richItemRenderers) for (const renderer of richItemRenderers) { idiomaPadrao = GM_getValue('xidiomaSelecionado'); const links = renderer.querySelectorAll('a'); for (const link of links) { if (link.href.indexOf('v=') !== -1) { let linkID = getUrl(link.href); link.setAttribute('href', `https://www.youtube-nocookie.com/embed/${linkID}?rel=0&controls=2&color=red&iv_load_policy=3&showinfo=0&modestbranding=1&hl=${idiomaPadrao}&autoplay=1`); link.setAttribute('target', '_blank') //link.setAttribute('onclick', `event.preventDefault(); window.location.href='https://www.youtube-nocookie.com/embed/${linkID}?rel=0&controls=2&color=red&iv_load_policy=3&showinfo=0&modestbranding=1&hl=${idiomaPadrao}&autoplay=1', '_blank';`); } } } } // Função para criar o iframe personalizado function createCustomIframe(videoId) { document.body.innerHTML = ``; } // Função para limpar todos os cookies do site na primeira vez function limparCookies() { if(localStorage.getItem('verificarCookies') == null){ localStorage.setItem('verificarCookies', "primeiraVez"); } if (localStorage.getItem('verificarCookies') == "primeiraVez" || localStorage.getItem('verificarVersao') !== "2.7"){ localStorage.setItem('verificarVersao', "2.7"); alert("Note: You are accessing this version 2.7 of Youtube Lite for the first time. To ensure its correct functioning, we will clear the cookies and restart the page.") localStorage.setItem('verificarCookies', "tudoSuave"); var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; var igualPos = cookie.indexOf('='); var nome = igualPos > -1 ? cookie.substr(0, igualPos) : cookie; document.cookie = nome + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/'; } window.location.reload(); } } function addButtons(){ if(window.location.href.includes("v=") !== true && window.location.href.includes("youtube-nocookie.com") !== true){ let imgX = "yes"; let shortX = "no"; if(GM_getValue('imgShow') == undefined){ //imagem hidden GM_setValue('imgShow', "yes"); } if(GM_getValue('imgShow') !== undefined){ imgX = GM_getValue('imgShow'); } if(GM_getValue('shortsShow') == undefined){ //shorts hidden GM_setValue('shortsShow', "no"); } if(GM_getValue('shortsShow') !== undefined){ shortX = GM_getValue('shortsShow'); } var xmyMenus = document.createElement('div'); xmyMenus.style.position = 'absolute'; xmyMenus.id = 'xmenus'; xmyMenus.style.width = '80%'; xmyMenus.style.height = '40px'; xmyMenus.style.top = '52px'; xmyMenus.style.right = '2%'; xmyMenus.style.textAlign = 'center'; xmyMenus.style.zIndex = '999'; xmyMenus.style.marginTop = '1px'; xmyMenus.style.borderBottom = '1px solid #332a73'; xmyMenus.style.backgroundColor = 'rgba(3, 3, 4, 0.12)'; xmyMenus.style.borderRadius = '5px'; // Cria o botão "Editar Palavras" var editarPalavrasButton = document.createElement('button'); editarPalavrasButton.className = 'buttonsLite'; editarPalavrasButton.title = 'List of keywords to hide videos'; editarPalavrasButton.style.fontSize = '17px'; editarPalavrasButton.style.marginTop = '9px'; editarPalavrasButton.style.backgroundColor = '#000'; editarPalavrasButton.style.color = '#fff'; editarPalavrasButton.style.height = '27px'; editarPalavrasButton.style.padding = '2px 1.5%'; editarPalavrasButton.innerHTML = ""; var gaveta = document.createElement('div'); gaveta.style.position = 'fixed'; gaveta.id = 'gavetax'; gaveta.style.top = '40px'; gaveta.style.zIndex = '9999'; gaveta.style.width = '320px'; gaveta.style.height = '170px'; gaveta.style.right = '50%'; gaveta.style.left = '50%'; gaveta.style.textAlign = 'center'; gaveta.style.transform = 'translate(-50%, 12%)'; gaveta.style.border = '1px solid #fff'; gaveta.style.borderRadius = '5px'; gaveta.style.backgroundColor = 'rgba(14, 10, 28, 0.94)'; gaveta.style.overflow = 'hidden'; gaveta.style.display = 'none'; var textarea = document.createElement('textarea'); textarea.style.width = '200px'; textarea.style.width = '93%'; textarea.style.height = '130px'; textarea.style.backgroundColor = '#0d0d0f'; textarea.style.color = '#fff'; textarea.style.padding = '5px 9px'; textarea.style.lineHeight = '1.5'; textarea.style.border = 'none'; textarea.style.borderBottom = 'solid 1px gray'; textarea.placeholder = 'Exemples: futebol, Big Brother, etc'; textarea.value = palavrasSalvas; var salvarButton = document.createElement('button'); salvarButton.className = 'buttonsLite'; salvarButton.style.marginTop = '2px'; salvarButton.style.width = '85%'; salvarButton.style.padding = '2px 10px'; salvarButton.style.backgroundColor = '#000'; salvarButton.style.color = '#fff'; salvarButton.innerHTML = 'Save and hide all'; var cancelarTag = document.createElement('button'); cancelarTag.className = 'buttonsLite'; cancelarTag.style.marginTop = '2px'; cancelarTag.style.marginLeft = '5px'; cancelarTag.style.width = '10%'; cancelarTag.style.padding = '2px 10px'; cancelarTag.style.backgroundColor = '#000'; cancelarTag.style.color = '#fff'; cancelarTag.innerHTML = 'X'; //cancelarTag.setAttribute("onclick", "document.getElementById('gavetax').style.display = 'none';") var toggleImg = document.createElement('button'); toggleImg.className = 'buttonsLite'; toggleImg.title = 'Toggle'; toggleImg.style.fontSize = '17px'; toggleImg.style.marginTop = '9px'; toggleImg.style.backgroundColor = '#000'; toggleImg.style.color = '#fff'; toggleImg.style.height = '27px'; toggleImg.style.marginLeft = '10px'; toggleImg.style.padding = '2px 1.5%'; toggleImg.innerHTML = ` → ${imgX}`; var toggleShorts = document.createElement('button'); toggleShorts.className = 'buttonsLite'; toggleShorts.title = 'Toggle'; toggleShorts.style.fontSize = '17px'; toggleShorts.style.marginTop = '9px'; toggleShorts.style.backgroundColor = '#000'; toggleShorts.style.color = '#fff'; toggleShorts.style.height = '27px'; toggleShorts.style.marginLeft = '10px'; toggleShorts.style.padding = '2px 1.5%'; toggleShorts.innerHTML = ` → ${shortX}`; // Array de idiomas disponíveis const idiomas = [ "Português", "pt-BR", "Español", "es", "English", "en", "Français", "fr", "Русский", "ru", "日本語", "ja", "한국어", "ko", "繁體中文", "zh-tw", "简体中文", "zh-cn", "Bahasa Indonesia", "id", "Uyghur", "ug", "العربية", "ar", "עברית", "he", "हिन्दी", "hi", "ไทย", "th", "Български", "bg", "Română", "ro", "Suomi", "fi", "Italiano", "it", "Ελληνικά", "el", "Esperanto", "eo", "Magyar", "hu", "Norsk Bokmål", "nb", "Slovenčina", "sk", "Svenska", "sv", "Српски", "sr", "Polski", "pl", "Nederlands", "nl", "Deutsch", "de", "Dansk", "da", "Čeština", "cs", "Українська", "uk", "Türkçe", "tr", "Tiếng Việt", "vi", "Français canadien", "fr-CA" ]; // Recupera o idioma salvo const idiomaSalvo = GM_getValue('xidiomaSelecionado', idiomas[0]); // Cria o elemento select const selectIdioma = document.createElement('select'); selectIdioma.id = 'selectIdioma'; selectIdioma.className = 'buttonsLite'; selectIdioma.title = 'Select your language'; selectIdioma.style.width = '120px'; selectIdioma.style.fontSize = '17px'; selectIdioma.style.marginTop = '9px'; selectIdioma.style.backgroundColor = '#000'; selectIdioma.style.color = '#fff'; selectIdioma.style.height = '27px'; selectIdioma.style.marginLeft = '10px'; selectIdioma.style.padding = '2px 1.5%'; // Adiciona as opções de idiomas ao select for (let i = 0; i < idiomas.length; i += 2) { const option = document.createElement('option'); option.value = idiomas[i + 1]; option.text = idiomas[i]; selectIdioma.appendChild(option); } selectIdioma.value = idiomaSalvo; // Adiciona um evento de mudança ao select selectIdioma.addEventListener('change', function() { // Salva o novo idioma selecionado GM_setValue('xidiomaSelecionado', this.value); idiomaPadrao = GM_getValue('xidiomaSelecionado'); alert('Done. The page will reload with your language.'); window.location.reload(); }); console.log(GM_getValue('xidiomaSelecionado')); console.log(idiomaPadrao); // Adiciona os elementos criados como filhos de xmyMenus xmyMenus.appendChild(editarPalavrasButton); gaveta.appendChild(textarea); gaveta.appendChild(salvarButton); gaveta.appendChild(cancelarTag); xmyMenus.appendChild(toggleImg); xmyMenus.appendChild(toggleShorts); xmyMenus.appendChild(selectIdioma); document.body.appendChild(xmyMenus); document.body.appendChild(gaveta); // Adicione um evento de clique ao botão de abrir a gaveta editarPalavrasButton.addEventListener('click', function() { gaveta.style.display = 'block'; }); // Adicione um evento de clique ao botão de salvar salvarButton.addEventListener('click', function() { var palavrasSalvas = textarea.value; GM_setValue('keyWords', palavrasSalvas); alert('Saved! The page will reload to activate hiding the new keywords.'); gaveta.style.display = 'none'; window.location.reload(); }); cancelarTag.addEventListener('click', function() { gaveta.style.display = "none"; }); toggleImg.addEventListener('click', function() { if(GM_getValue('imgShow') == "yes"){ GM_setValue('imgShow', "no"); toggleImg.innerHTML = " → no"; }else{ GM_setValue('imgShow', "yes"); toggleImg.innerHTML = " → yes"; } }); toggleShorts.addEventListener('click', function() { if(GM_getValue('shortsShow') == "no"){ GM_setValue('shortsShow', "yes"); toggleShorts.innerHTML = ` → yes`; }else{ GM_setValue('shortsShow', "no"); toggleShorts.innerHTML = ` → no`; } }); const youtubeTag = document.querySelector('ytd-app'); if (youtubeTag) { youtubeTag.setAttribute('id', 'ytdLite'); youtubeTag.style.marginTop = '40px'; //document.getElementById("guide").innerHTML += myMenus; } } // Estilização const estiloHover = document.createElement('style'); // Defina o conteúdo CSS para o efeito de hover estiloHover.innerHTML = ` .buttonsLite{ border: solid 1px aliceblue; border-radius: 5px; width: 100px; } .buttonsLite:hover{ border: solid 1px #2f6797; background-color: rgb(6, 7, 15) } ytd-rich-item-renderer{ border: solid 1px #0a0913ad; background-color: rgba(0, 0, 0, 0.44); border-radius: 1.1rem; } ytd-rich-item-renderer:hover { border: solid 1px #3f3c93; border-radius: 1.1rem; text-shadow: .5px 1px 6px #2e2451; background-color: rgba(0, 0, 0, 0.65); } ytd-video-renderer{ border: solid 1px #0a0913ad; background-color: rgba(0, 0, 0, 0.44); border-radius: 1.1rem; } ytd-video-renderer:hover{ border: solid 1px #3f3c93; border-radius: 1.1rem; text-shadow: .5px 1px 6px #2e2451; background-color: rgba(0, 0, 0, 0.65); } `; document.body.appendChild(estiloHover); } // Função para verificar a URL a cada 2 segundos function checkURL() { const currentURL = window.location.href; removeTagsComPalavrasChave(); if (currentURL !== localStorage.getItem('lastCheckedURL') && currentURL.includes("v=")) { localStorage.setItem('trocou', "false"); localStorage.setItem('trocardeNovo', "true"); localStorage.setItem('atualReload', "false"); if(currentURL !== localStorage.getItem('lastCheckedURL')){ localStorage.setItem('lastCheckedURL', currentURL); window.location.reload(); } } if(currentURL.includes("v=") && atualx == false){ atualx = true; idiomaPadrao = GM_getValue('xidiomaSelecionado'); setTimeout(function(){ setTimeout(function(){ const addPlayer1 = document.querySelector('#full-bleed-container'); const addPlayer2 = document.querySelector('#player-container-id'); if(addPlayer1){ addPlayer1.style.textAlign = "center"; addPlayer1.innerHTML = ``; addPlayer1.innerHTML += ``; }else if(addPlayer2){ let removeIt = document.querySelector('.player-size.player-placeholder'); addPlayer2.style.position = "relative"; removeIt.style.display = "none"; addPlayer2.style.textAlign = "center"; addPlayer2.innerHTML = ``; addPlayer2.innerHTML += ``; }else{ window.location.reload(); } }, 500); }, 1500); } if (currentURL.includes("youtube.com")) { removerTagsScript(); } if (currentURL.includes("youtube-nocookie.com/embed")) { tagsNonePlay(); } } // Objeto que mapeia classes ou IDs de elementos para estilos de substituição const estilosParaSubstituir = { // INTERFACE 'ytp-cued-thumbnail-overlay-image': 'background-position: center;background-repeat: no-repeat;background-attachment: fixed;background-size: 99% auto;', //campo inicial 'ytp-gradient-top': 'height: 20px;', // Adicione mais pares de classes ou IDs aqui }; // Função para substituir estilos CSS em elementos function substituirEstilos() { for (const seletor in estilosParaSubstituir) { const elementos = document.querySelectorAll(`.${seletor}, #${seletor}`); //alert(elementos); elementos.forEach(elemento => { elemento.style.cssText += estilosParaSubstituir[seletor]; }); } } function notificaAlert() { document.title = "Youtube (Lite)"; let currentURL = window.location.href; if (currentURL.includes("youtube-nocookie.com/embed")) { setTimeout(function(){ substituirEstilos(); let videoId = ""; var urlxx = currentURL; var videoCode = urlxx.match(/embed\/([A-Za-z0-9_-]+)/); if (videoCode && videoCode.length > 1) { var codigoDoVideo = videoCode[1]; videoId = codigoDoVideo; } var pageProject = document.querySelector(".ytp-title-link.yt-uix-sessionlink"); if (pageProject) { var novaTagp = document.createElement("a"); novaTagp.style.fontSize = "1.2rem"; novaTagp.style.display = "inline-block"; novaTagp.style.height = "35px"; novaTagp.style.width = "100%"; novaTagp.style.padding = "0px 5%"; novaTagp.style.textAlign = "center"; novaTagp.style.textShadow = "1px 2px 4px #3b3bf4"; novaTagp.setAttribute('target', '_blank') idiomaPadrao = GM_getValue('xidiomaSelecionado'); novaTagp.href = `https://greasyfork.org/${idiomaPadrao}/scripts/476133-youtube-lite-melhor-experi%C3%AAncia`; //novaTagp.setAttribute('onclick', `event.preventDefault(); window.location.href='https://greasyfork.org/${idiomaPadrao}/scripts/476133-youtube-lite-melhor-experi%C3%AAncia', '_blank';`); novaTagp.innerHTML = ` open Youtube Lite project page`; // Substitui o elemento original pelo novo elemento pageProject.parentNode.replaceChild(novaTagp, pageProject); } var invidiousPage = document.querySelector(".ytp-youtube-button.ytp-button.yt-uix-sessionlink"); if (invidiousPage) { var novaTagV = document.createElement("a"); novaTagV.style.fontSize = "1.3rem"; novaTagV.style.display = "inline-block"; novaTagV.style.float = "left"; novaTagV.style.height = "40px"; novaTagV.style.padding = "0px 10px"; novaTagV.title = "Open video in Invidious"; idiomaPadrao = GM_getValue('xidiomaSelecionado'); novaTagV.href = `https://invidious.slipfox.xyz/watch?v=${videoId}&dark_mode=true&hl=${idiomaPadrao}&iv_load_policy=3&quality=medium&related_videos=false®ion=3166&controls=1&player_style=youtube`; novaTagV.setAttribute('target', '_blank') novaTagV.innerHTML = ``; invidiousPage.parentNode.replaceChild(novaTagV, invidiousPage); } var filmSimple = document.querySelector(".ytp-right-controls"); if (filmSimple) { var novaTagC = document.createElement("a"); novaTagC.style.fontSize = "1.3rem"; novaTagC.style.display = "inline-block"; novaTagC.style.float = "left"; novaTagC.style.height = "40px"; novaTagC.style.padding = "0px 10px"; novaTagC.title = "Simple video"; novaTagC.href = `https://invidious.slipfox.xyz/latest_version?id=${videoId}`; novaTagC.innerHTML = ``; filmSimple.appendChild(novaTagC); } var downloadRun = document.querySelector(".ytp-right-controls"); if (downloadRun) { var novaTagD = document.createElement("a"); novaTagD.style.fontSize = "1.3rem"; novaTagD.style.display = "inline-block"; novaTagD.style.float = "left"; novaTagD.style.height = "40px"; novaTagD.style.padding = "0px 10px"; novaTagD.title = "Download"; novaTagD.setAttribute('target', '_blank') novaTagD.href = `https://www.y2mate.com/pt/youtube/${videoId}`; novaTagD.innerHTML = ``; downloadRun.appendChild(novaTagD); } }, 1000); } setInterval(checkURL, 550); addButtons() // Verifica a URL quando o script é carregado pela primeira vez let videoId = getVideoIdFromUrl(); setTimeout(function(){ if(verifyc1 == true){ console.log("IPBLOCK: IP capture attempt blocked."); } if(verifyc2 == true){ console.log("IPBLOCK: Fetch request attempt blocked."); } },1000); } window.addEventListener('load', notificaAlert); })();