Greasy Fork

Greasy Fork is available in English.

YouTube Lite (Mó Paz)

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

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

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         YouTube Lite (Mó Paz)
// @namespace    http://linkme.bio/jhonpergon/?userscript=youtube_lite
// @version      0.2
// @description  Deixa a interface do YouTube mais leve, some com a aba de shots e a abre o vídeo em uma página livre de anúncios e distrações.
// @author       Jhon Pérgon
// @match        https://www.youtube.com/*
// @match        https://youtu.be/*
// @match        https://m.youtube.com/*
// @match        https://abrirsemfrescuras.web.app/*
// @icon         https://icons.iconarchive.com/icons/designbolts/cute-social-media/256/Youtube-icon.png
// @grant        GM_addStyle
// @license      MIT
// ==/UserScript==


(function() {
    'use strict';

    // Array de palavras-chave que você não deseja ver
  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", "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"];

  // 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 players = document.querySelectorAll('video');
          players.forEach(function(playerx) {
              playerx.parentNode.removeChild(playerx);
          });

           /* console.log("Verificando...")
            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);
              });
            }*/

          // Obtém todos os elementos com o ID "video-preview"
          const elementsToRemove = document.querySelectorAll('#video-preview');
          // Itera sobre os elementos e os remove
          for (const element of elementsToRemove) {
              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) {
      // Remove todo o conteúdo da <body>
      document.body.style.backgroundColor = "#06070b";
      //document.body.innerHTML = '';
      document.body.style.backgroundColor = "#06070b";

      setTimeout(function(){

        //Remover eventos pré-estabelecidos
        const cinematicsContainer = document.getElementById('cinematics-container');
        if (cinematicsContainer) {
          const clonedElement = cinematicsContainer.cloneNode(true);
          cinematicsContainer.parentNode.replaceChild(clonedElement, cinematicsContainer);
        }
        const playerContainer = document.getElementById('player');
        if (playerContainer) {
          const clonedElement = playerContainer.cloneNode(true);
          playerContainer.parentNode.replaceChild(clonedElement, playerContainer);
        }


        let mainplayer = document.getElementById('cinematics-container');
        let interfacex = document.getElementById('primary');
        let menus = document.getElementById('menu');
        let columns = document.getElementById('chat-container');

        if (mainplayer) {
          columns.innerHTML = ``;
          //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';

              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 = '1000';
              customIframe.style.backgroundImage = "url(https://i.pinimg.com/originals/cf/ce/2f/cfce2fa4cc0ccdc49cf1482c355a50b8.gif)";
              menus.innerHTML = `<div style="width: 70px; height: 18px; padding: 10px 30px; overflow: hidden; margin: 5px; background-color: #2a292b; border: 1px solid #afc2ff; border-radius: 2em;"><a style="text-decoration: none; padding: 10px 30px; margin-left: -30px; color: rgb(246, 241, 255); font-size: 1.6rem;" href="https://www.y2mate.com/pt/youtube/${videoId}" target="_blank">Download</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 = '1000';
              customIframe.style.backgroundImage = "url(https://i.pinimg.com/originals/cf/ce/2f/cfce2fa4cc0ccdc49cf1482c355a50b8.gif)";
              menus.innerHTML = `<div style="width: 70px; height: 18px; padding: 10px 30px; overflow: hidden; margin: 5px; background-color: #2a292b; border: 1px solid #afc2ff; border-radius: 2em;"><a style="text-decoration: none; padding: 10px 30px; margin-left: -30px; color: rgb(246, 241, 255); font-size: 1.6rem;" href="https://www.y2mate.com/pt/youtube/${videoId}" target="_blank">Download</a><div>`;
            }, 500);
          }
        }else{
          alert("O Youtube Lite Falhou, vamos atualizar a página. (Se está vendo isso com frequênicia, verifique se há uma nova versão desse userscript)")
        }

        //document.body.appendChild(customIframe);
        //document.body.appendChild(buttonIframe);

        // Altera o título da página para "Youtube Lite"
        document.title = "Youtube (Lite)";
      }, 2200);
    }



      // Impedir a abertura do vídeo normal
    function impedirReproducaoAutomatica() {
      if(trocardeNovo == true){
        HTMLMediaElement.prototype.play = function() {
          console.log("A chamada ao método play() foi bloqueada.");
          // Você pode escolher não fazer nada aqui ou adicionar um comportamento personalizado
        }
      }
    }



 // Função para verificar a URL a cada 2 segundos
    function checkURL() {
        //impedirReproducaoAutomatica();
        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, 1000);

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