您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
change default YouTube video quality
当前为
// ==UserScript== // @name YouTube Default Override // @namespace http://www.youtube.com/ // @version 1.1.2 // @description change default YouTube video quality // @include http://youtube.com/* // @include https://youtube.com/* // @include http://www.youtube.com/* // @include https://www.youtube.com/* // @grant none // @run-at document-end // ==/UserScript== youtubeOverride = {}; youtubeOverride.enabled = true; // qualities = ["auto", "hd1080", "hd720", "large", "medium", "small", "tiny"]; youtubeOverride.preferredQuality = "hd720"; youtubeOverride.run = function () { console.log("override script starting") var player = unsafeWindow.document.getElementById('movie_player'); if (player != null) { overridePlayer(player); } else { console.log("cannot get player api"); var target = document.getElementById('player'); var MutationObserver = window.MutationObserver; var observer = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { if (mutation.target.id === 'player-unavailable') { console.log('player mutation detected'); player = unsafeWindow.document.getElementById('movie_player'); if (player != null) { overridePlayer(player); } else { console.log("cannot get player api2"); } } }); }); observer.observe(target, { childList: true, subtree: true }); } function overridePlayer(player) { if (overridePlayer.running) { return; } overridePlayer.running = true; overrideTimeoutFunc.attempts = 0; setTimeout(overrideTimeoutFunc, 300); function overrideTimeoutFunc() { overrideTimeoutFunc.attempts++; var success = tryToOverride(player); if (!success && overrideTimeoutFunc.attempts < 30) { setTimeout(overrideTimeoutFunc, 1000) } else { overridePlayer.running = false; } } function tryToOverride(player) { console.log("quality override starting"); if (!('setPlaybackQuality' in player)) { console.log("error: setPlaybackQuality not available"); return false; } var qualityLevels = player.getAvailableQualityLevels(); var qualityToSet = null; for (var i = 0; i < qualityLevels.length; i++) { if (qualityLevels[i].trim().toLowerCase() === youtubeOverride.preferredQuality) { qualityToSet = qualityLevels[i]; break; } } if (qualityToSet == null) { qualityToSet = qualityLevels[0]; } if (qualityToSet == null) { console.log("error: no quality levels available"); return false; } player.setPlaybackQuality(qualityToSet); console.log("set quality to " + qualityToSet); return qualityToSet == player.getPlaybackQuality(); } } } if (youtubeOverride.enabled) { youtubeOverride.run(); }