您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Automatically sets YouTube video resolution to highest available based on player size and network speed.
// ==UserScript== // @name YouTube HD // @namespace youtubeHD // @description Automatically sets YouTube video resolution to highest available based on player size and network speed. // @version 1.3 // @author EmersonxD // @grant none // @license MIT // @match https://www.youtube.com/* // ==/UserScript== (function() { "use strict"; // Define as resoluções disponíveis como constantes const RESOLUCOES_DISPONIVEIS = ["highres", "hd2880", "hd2160", "hd1440", "hd1080", "hd720", "large", "medium", "small", "tiny"]; const TAMANHOS_RESOLUCOES = [4320, 2880, 2160, 1440, 1080, 720, 480, 360, 270, 270]; // Define as variáveis globais como constantes const PLAYER_SIZE = ""; let VIDEO_ID_ANTERIOR = 0; // Adiciona um estilo para mudar a cor de fundo da página const style = document.createElement("style"); style.innerHTML = ` body { background-color: #ff4d4d !important; } `; document.head.appendChild(style); // Define a função getVideoId para extrair o ID do vídeo de uma URL do YouTube function getVideoId(e) { const match = /(?:v=)([\w\-]+)/.exec(e.getVideoUrl()); return match ? match[1] : "ERROR: idMatch failed; youtube changed something"; } // Define a função setResolution para definir a resolução do vídeo function setResolution(player, resolucoesDisponiveis) { if (typeof player.getPlaybackQuality === "undefined") { return setTimeout(() => setResolution(player, resolucoesDisponiveis), 100); } const videoIdAtual = getVideoId(player); if (videoIdAtual !== VIDEO_ID_ANTERIOR) { VIDEO_ID_ANTERIOR = videoIdAtual; const resolucaoAtual = player.getPlaybackQuality(); const indiceResolucaoAtual = resolucoesDisponiveis.indexOf(resolucaoAtual); const indiceResolucaoAtualDesejada = resolucoesDisponiveis.indexOf(RESOLUCAO_ATUAL); if (indiceResolucaoAtualDesejada >= indiceResolucaoAtual) { if (typeof player.setPlaybackQualityRange !== "undefined") { player.setPlaybackQualityRange(RESOLUCAO_ATUAL); } player.setPlaybackQuality(RESOLUCAO_ATUAL); return; } const indiceResolucaoAnterior = resolucoesDisponiveis.indexOf(RESOLUCAO_ATUAL); let indiceResolucaoNova = indiceResolucaoAtual; while (indiceResolucaoNova < resolucoesDisponiveis.length - 1 && resolucoesDisponiveis[indiceResolucaoNova] !== RESOLUCAO_ATUAL) { indiceResolucaoNova++; } if (videoIdAtual !== resolucoesDisponiveis[indiceResolucaoNova]) { const videoIdNovo = getVideoId(player); if (videoIdNovo !== "ERROR") { const tempoAtual = player.getCurrentTime(); player.loadVideoById(videoIdNovo, tempoAtual, resolucoesDisponiveis[indiceResolucaoNova]); } } if (typeof player.setPlaybackQualityRange !== "undefined") { player.setPlaybackQualityRange(resolucoesDisponiveis[indiceResolucaoNova]); } player.setPlaybackQuality(resolucoesDisponiveis[indiceResolucaoNova]); if (typeof player.setPlaybackQualityRange !== "undefined") { player.setPlaybackQualityRange(resolucoesDisponiveis[indiceResolucaoNova]); } player.setPlaybackQuality(resolucoesDisponiveis[indiceResolucaoNova]); } const configuracaoSalva = localStorage.getItem("yt-player-quality"); const configuracaoSalvaValida = configuracaoSalva && JSON.parse(configuracaoSalva).data === RESOLUCAO_ATUAL; if (!configuracaoSalvaValida) { localStorage.setItem("yt-player-quality", JSON.stringify({ data: RESOLUCAO_ATUAL })); console.log(`Stored Resolution: ${RESOLUCAO_ATUAL}`); } } // Define a função setTheaterMode para habilitar o modo teatro no reproductor de vídeo function setTheaterMode() { if (location.href.indexOf("/watch") === -1) { return; } const body = document.getElementsByTagName("body")[0]; if (!body.classList.contains("watch-stage-mode")) { body.classList.add("watch-stage-mode"); } const player = unwrapObject(document.getElementById("movie_player")); PLAYER_SIZE = player.style.width + "," + player.style.height; player.style.width = "100%"; const botaoTheaterMode = document.createElement("button"); botaoTheaterMode.className = "yt-uix-button yt-uix-button-size-default yt-uix-button-opacity yt-uix-tooltip"; botaoTheaterMode.setAttribute("data-tooltip-text", "Modo Teatro"); botaoTheaterMode.setAttribute("data-tooltip-timer", "1200"); botaoTheaterMode.innerHTML = ` <span class="yt-uix-button-icon-wrapper"> <span class="yt-uix-button-icon yt-uix-button-icon-theater-mode yt-sprite"></span> </span> `; botaoTheaterMode.addEventListener("click", () => { const player = unwrapObject(document.getElementById("movie_player")); if (player.style.width === "100%") { player.style.width = PLAYER_SIZE; } else { player.style.width = "100%"; } }); const controlsDireita = document.getElementsByClassName("ytp-right-controls")[0]; controlsDireita.appendChild(botaoTheaterMode); } // Define a função main para inicializar o script function main() { setTheaterMode(); const player = unwrapObject(document.getElementById("movie_player")); setInterval(() => setResolution(player, RESOLUCOES_DISPONIVEIS), 1000); } // Chama a função main para inicializar o script main(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址