Greasy Fork

Greasy Fork is available in English.

YouTube Lite (melhor experiência)

Deixa a interface do YouTube mais leve, some com a aba de shots e abre o vídeo em uma página livre de anúncios e distrações.

当前为 2023-09-29 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         YouTube Lite (melhor experiência)
// @name:es      YouTube Lite (la mejor experiencia)
// @name:en      YouTube Lite (best experience)
// @namespace    http://linkme.bio/jhonpergon/?userscript=youtube_lite
// @version      0.7
// @description  Deixa a interface do YouTube mais leve, some com a aba de shots e abre o vídeo em uma página livre de anúncios e distrações.
// @description:es      Hace que la interfaz de YouTube sea más ligera, desaparece con la pestaña de tomas y abre el vídeo en una página libre de anuncios y distracciones.
// @description:en      It makes the YouTube interface lighter, disappears with the shots tab and opens the video on a page free of ads and distractions.
// @author       Jhon Pérgon
// @match           https://www.youtube.com/*
// @match           https://m.youtube.com/*
// @match           https://music.youtube.com/*
// @icon         https://icons.iconarchive.com/icons/designbolts/cute-social-media/256/Youtube-icon.png
// @grant        GM_addStyle
// @license      MIT
// @compatible      chrome
// @compatible      firefox
// @compatible      opera
// @compatible      edge
// @compatible      safari
// @compatible      berry browser
// ==/UserScript==


(function() {
    'use strict';

  GM_addStyle('@import url("https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css");');

    // Array de palavras-chave que você não deseja ver dismissible ytd-rich-section-renderer
  var palavrasChave = ["funk", "MC", "Alok", "Champions", "Certanejo", "Mendonça", "Comédia","American","muambros", "Globinho","Podpah", "Golpista","MrBeast",
                       "Felipe Neto","Pica Pau", "Pica-Pau", "Rir", "Bob Esponja","Funny", "Naruto","Ronaldinho", "Neymar", "Gols", "Esgotinho Clips","Gospel",
                       "Goal","Galaxy","Iphone","TRAILERS", "Trailers", "Shelby", "Comprar", "Vender", "Restored", "Restaurando", "Pago", "Minecraft", "Kpop",
                       "Army","Opala","Ei Nerd","GOKU","Goku", "SAMSUNG","Samsung","Caio Teixeira","DRAGON","Ball","Pobre","Alanzoka","GAMEPLY","alanzoka","60FPS","FPS",
                       "HERÓI","Elite", "Jogos", "RTX","ULTRON","Anime","Cristiano Ronaldo","Life Media","Bonito","Jogar", "Jogo","Dragões","Kombat","KOMBAT",
                       "Kratos", "War", "Rusty","BEN 10", "Alpha","Redpill","Maquiagem","Gatos","Bolo","Casimito","Casemiro","DJ",
                       "Grupo Menos é Mais", "Você Sabia?", "Futbol","Futebol","Oração", "Esportes", "Placar", "BBB", "Pepsi", "Coca Cola", "Talent","Pipoca","Garage", "Desenho Animado","COD",
                       "Produtos", "Produto", "Food", "Copa", "Faroeste", "Rodada", "Eliminatórias", "Favela", "Poesia Arcústica", "Renato Cariani", "4K"];


  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('Erro ao obter o valor do parâmetro "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();
      }
    });
  }

    // Função para remover todas as tags
    function removerTagsScript() {
        document.title = "Youtube (Lite)";

        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 iconsets = document.querySelectorAll('iron-iconset-svg');
          iconsets.forEach(function(iconset) {
              iconset.parentNode.removeChild(iconset);
          });
          const renderers = document.querySelectorAll('ytd-rich-shelf-renderer');
          renderers.forEach(function(renderer) {
              renderer.parentNode.removeChild(renderer);
          });
          const recomendados = document.querySelectorAll('ytd-watch-next-secondary-results-renderer');
          recomendados.forEach(function(recomendado) {
              recomendado.parentNode.removeChild(recomendado);
          });
          const xplayers = document.querySelectorAll('ytd-player');
          xplayers.forEach(function(player) {
              player.parentNode.removeChild(player);
              //console.log("ok")
          });
          const interactions = document.querySelectorAll('yt-interaction');
          interactions.forEach(function(interaction) {
              interaction.parentNode.removeChild(interaction);
              //console.log("ok")
          });
          const ychats = document.querySelectorAll('ytd-live-chat-frame');
          ychats.forEach(function(ychat) {
              ychat.parentNode.removeChild(ychat);
              //console.log("ok")
          });
          const players = document.querySelectorAll('video');
          players.forEach(function(playerx) {
              playerx.parentNode.removeChild(playerx);
          });
          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);
              //console.log("ok")
          });
          const ytdAds = document.querySelectorAll('ytd-ad-slot-renderer');
          ytdAds.forEach(function(ytdAd) {
              ytdAd.parentNode.removeChild(ytdAd);
          });
          const ytdAd2s = document.querySelectorAll('ytd-rich-section-renderer');
          ytdAd2s.forEach(function(ytdAd2) {
              ytdAd2.parentNode.removeChild(ytdAd2);
          });
          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 videosAds = document.querySelectorAll('.video-ads');
          if (videosAds.length > 0) {
          videosAds.forEach(function(videosAd) {
              videosAd.parentNode.removeChild(videosAd);
            });
          }


            ////Remover eventos pré-estabelecidos
            let cinematicsContainer = document.getElementById('cinematics-container');
            if (cinematicsContainer) {
              const clonedElement = cinematicsContainer.cloneNode(true);
              cinematicsContainer.parentNode.replaceChild(clonedElement, cinematicsContainer);
            }
            /*const playerRemove = document.querySelectorAll('#player');
            for (const element of playerRemove) {
                element.remove();
              };*/

            /*const xoverlays = document.querySelectorAll('.ytp-pause-overlay');
            if (xoverlays.length > 0) {
              xoverlays.forEach(function(xoverlay) {
                xoverlay.style.display = "none";
                xoverlay.parentNode.removeChild(xoverlay);
              });
            }
            const thumbnails = document.querySelectorAll('.ytd-thumbnail');
            if (thumbnails.length > 0) {
              thumbnails.forEach(function(xthumbnail) {
                xthumbnail.style.display = "none";
                xthumbnail.parentNode.removeChild(xthumbnail);
              });
            }*/
          let mediaElements = document.querySelectorAll('video, audio');
          if(mediaElements){
            mediaElements.forEach(function (media) {
              if (typeof media.play === 'function') {
                  media.play = function () {};
                }
              });
          }




          // Obtém todos os elementos pelo ID e os 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();
            };

           const links = document.querySelectorAll('a');
            for (const link of links) {
                link.style.border = '1px solid transparent';
                link.addEventListener('mouseover', function() {
                    link.style.border = '1px solid #9ba2ff';
                    link.style.boxShadow = '2px 3px 4px #5c3299';
                });
                link.addEventListener('mouseout', function() {
                    link.style.border = '1px solid transparent';
                    link.style.boxShadow = '';
                });

              if (link.href.indexOf('/watch?v=') !== -1) {
                  console.log(link.href)
                  let linkID = getUrl(link.href);
                  console.log(linkID)
                  link.setAttribute('href', `https://www.youtube-nocookie.com/embed/${linkID}?rel=0&controls=2&color=white&iv_load_policy=3&showinfo=0&modestbranding=1&hl=pt-BR&autoplay=1`);
              }
              //const clonedLink = link.cloneNode(true);
              //link.parentNode.replaceChild(clonedLink, link);
            }
      }, 500);
    }

    // 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;
    }

    // Função para criar o iframe personalizado
    function createCustomIframe(videoId) {
      document.body.style.backgroundColor = "#06070b";
      document.body.style.backgroundColor = "#06070b";

      setTimeout(function(){
        let mainplayer = document.getElementById('miniplayer-bar');
        let outroBudega = document.getElementById('player-wrap');
        if(outroBudega){
          outroBudega.innerHTML = ``;
        }

        const yframes = document.querySelectorAll('iframe');
        yframes.forEach(function(yframe) {
            yframe.parentNode.removeChild(yframe);
        });
        const ytApps = document.querySelectorAll('ytd-player-microformat-renderer');
        ytApps.forEach(function(ytApp) {
            ytApp.parentNode.removeChild(ytApp);
        });
        let interfacex = document.getElementById('primary');
        let menus = document.getElementById('upload-info');

        if (mainplayer) {

          const hums = document.querySelectorAll('h1');
          hums.forEach(function(hum) {
              hum.parentNode.removeChild(hum);
          });
          //alert("trocou: "+localStorage.getItem('trocou')+" trocardeNovo: "+localStorage.getItem('trocardeNovo'))
          if(localStorage.getItem('atualReload') == "false" && localStorage.getItem('trocou') == "false" && localStorage.getItem('trocardeNovo') == "true"){
              mainplayer.innerHTML = ``;
              localStorage.setItem('trocou', "true");
              //alert("LIMPOU")
          }
          if(localStorage.getItem('atualReload') == "false" && localStorage.getItem('trocou') == "true" && localStorage.getItem('trocardeNovo') == "true"){
              localStorage.setItem('trocardeNovo', "false");
              //alert("ADD IFRAME")
              mainplayer.style.width = '98%';
              mainplayer.style.maxWidth = '720px';
              mainplayer.style.height = '85%';
              mainplayer.style.maxHeight = '450px';
              mainplayer.style.zIndex = '99999';

              interfacex.style.maxWidth = '720px';
              interfacex.style.height = 'auto';
              interfacex.style.maxHeight = '450px';
              interfacex.style.position = 'absolute';
              interfacex.style.marginLeft = '0px';
              interfacex.style.marginRight = '0px';
              interfacex.style.right = '50%';
              interfacex.style.left = '50%';
              interfacex.style.bottom = '0';
              interfacex.style.top = '10px';
              interfacex.style.transform = 'translate(-50%, 0%)';

            setTimeout(function(){
              //alert("Pronto")
              mainplayer.innerHTML = `<iframe id="xplayer" src="https://www.youtube-nocookie.com/embed/${videoId}?rel=0&controls=2&color=white&iv_load_policy=3&showinfo=0&modestbranding=1&hl=pt-BR" allow="accelerometer; autoplay; gyroscope; picture-in-picture" frameborder="0" frameborder="autoplay" scrolling="no" sandbox="allow-scripts allow-same-origin" referrerpolicy="no-referrer" allowfullscreen=""></iframe>`;
              let customIframe = document.getElementById('xplayer');
              customIframe.style.width = '720px';
              customIframe.style.maxWidth = '95%';
              customIframe.style.height = '98%';
              customIframe.style.maxHeight = '420px';
              customIframe.style.border = 'solid 1px #413746';
              customIframe.style.borderRadius = '.6rem';
              customIframe.style.position = 'absolute';
              customIframe.style.right = '50%';
              customIframe.style.left = '50%';
              customIframe.style.transform = 'translate(-50%, 30px)';
              customIframe.style.zIndex = '999999';
              customIframe.style.backgroundImage = "url(https://i.pinimg.com/originals/cf/ce/2f/cfce2fa4cc0ccdc49cf1482c355a50b8.gif)";
              menus.innerHTML += `<div style="width: 10px; height: 18px; padding: 8px 25px; overflow: hidden; margin: 5px; background-color: #2a292b; border: 1px solid #afc2ff; border-radius: 2em;"><a style="text-decoration: none; padding: 8px 20px; margin-left: -25px; color: rgb(246, 241, 255); font-size: 1.6rem;" href="https://www.y2mate.com/pt/youtube/${videoId}" target="_blank"><i class="bi bi-download"></i></a><div>`;
            }, 500);
            localStorage.setItem('atualReload', "true");
          }else if(localStorage.getItem('atualReload') == "true"){
              mainplayer.innerHTML = ``;
              mainplayer.style.width = '98%';
              mainplayer.style.maxWidth = '720px';
              mainplayer.style.height = '85%';
              mainplayer.style.maxHeight = '450px';
              interfacex.style.maxWidth = '720px';
              interfacex.style.height = 'auto';
              interfacex.style.maxHeight = '450px';
              interfacex.style.position = 'absolute';
              interfacex.style.marginLeft = '0px';
              interfacex.style.marginRight = '0px';
              interfacex.style.right = '50%';
              interfacex.style.left = '50%';
              interfacex.style.bottom = '0';
              interfacex.style.top = '10px';
              interfacex.style.transform = 'translate(-50%, 0%)';
            setTimeout(function(){
              mainplayer.innerHTML = `<iframe id="xplayer" src="https://www.youtube-nocookie.com/embed/${videoId}?rel=0&controls=2&color=white&iv_load_policy=3&showinfo=0&modestbranding=1&hl=pt-BR&autoplay=1" allow="accelerometer; autoplay; gyroscope; picture-in-picture" frameborder="0" frameborder="autoplay" scrolling="no" autoplay="autoplay" sandbox="allow-scripts allow-same-origin" referrerpolicy="no-referrer" allowfullscreen=""></iframe>`;
              let customIframe = document.getElementById('xplayer');
              customIframe.style.width = '720px';
              customIframe.style.maxWidth = '95%';
              customIframe.style.height = '98%';
              customIframe.style.maxHeight = '420px';
              customIframe.style.border = 'solid 1px #413746';
              customIframe.style.borderRadius = '.6rem';
              customIframe.style.position = 'absolute';
              customIframe.style.right = '50%';
              customIframe.style.left = '50%';
              customIframe.style.transform = 'translate(-50%, 30px)';
              customIframe.style.zIndex = '999999';
              customIframe.style.backgroundImage = "url(https://i.pinimg.com/originals/cf/ce/2f/cfce2fa4cc0ccdc49cf1482c355a50b8.gif)";
              menus.innerHTML += `<div style="width: 10px; height: 18px; padding: 8px 25px; overflow: hidden; margin: 5px; background-color: #2a292b; border: 1px solid #afc2ff; border-radius: 2em;"><a style="text-decoration: none; padding: 8px 20px; margin-left: -25px; color: rgb(246, 241, 255); font-size: 1.6rem;" href="https://www.y2mate.com/pt/youtube/${videoId}" target="_blank"><i class="bi bi-download"></i></a><div>`;
            }, 500);
            localStorage.setItem('atualReload', "true");
          }
        }else{
          alert("NOTA: Os elementos da interface padrão falharam, então você será diretamente encaminhando para o player do youtube-nocookie.")
          localStorage.setItem('atualReload', "true");
          // Remove todo o conteúdo da <body>
            window.location.href = `https://www.youtube-nocookie.com/embed/${videoId}?rel=0&controls=2&color=white&iv_load_policy=3&showinfo=0&modestbranding=1&hl=pt-BR&autoplay=1`;
        }
        // Altera o título da página para "Youtube Lite"
        document.title = "Youtube (Lite)";
      }, 2100);
    }



    // 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"){
          alert("NOTA: Você está acessando com o Youtube Lite pela primeira vez, para garantir seu correto funcionamento vamos limpar os cookies e reiniciar a página.")
          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();
        }
    }


    // Função para verificar a URL a cada 2 segundos
    function checkURL() {
        limparCookies();
        removerTagsScript();
        removeTagsComPalavrasChave();

        const currentURL = window.location.href;
        if (currentURL !== localStorage.getItem('lastCheckedURL') && currentURL.includes("/watch?v=")) {
            window.location.reload();
            localStorage.setItem('lastCheckedURL', currentURL);
            localStorage.setItem('trocou', "false");
            localStorage.setItem('trocardeNovo', "true");
            localStorage.setItem('atualReload', "false");
            const videoId = getVideoIdFromUrl();
            if (videoId) {
                createCustomIframe(videoId);
            }
        }
    }

    // Inicia o loop para verificar a URL a cada 1 segundos
    setInterval(checkURL, 550);

    // Verifica a URL quando o script é carregado pela primeira vez
    const videoId = getVideoIdFromUrl();
    if (videoId) {
        createCustomIframe(videoId);
    }






  // CÓDIDIGO 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(){
      console.log("Tried to skip a ad");
      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);
          }
      }
  }

    addNewStyle('.ytp-ad-overlay-slot {display:none !important;}');
    setInterval(function (){
        if(window.location.href.substring(0,30) == "https://www.youtube.com/watch?"){
            skipAd();
        }
    }, 2500);


})();