您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
change default YouTube video quality
当前为
// ==UserScript== // @name YouTube 720p // @namespace http://www.youtube.com/ // @version 1.2.2 // @description change default YouTube video quality // @match http://youtube.com/* // @match https://youtube.com/* // @match http://www.youtube.com/* // @match https://www.youtube.com/* // @grant none // @run-at document-end // ==/UserScript== youtubeOverride = function (unsafeWindow) { enabled = true; // qualities = ['auto', 'hd1080', 'hd720', 'large', 'medium', 'small', 'tiny']; // set the quality desired here: preferredQuality = 'hd720'; if (enabled) { 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() === 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 (window.top === window.self) { if (this.unsafeWindow != null) { youtubeOverride(unsafeWindow); } else { var scriptElem = document.createElement('script'); scriptElem.setAttribute('type', 'text/javascript'); scriptElem.text = '(' + youtubeOverride.toString() + ')(window);'; document.documentElement.appendChild(scriptElem); document.documentElement.removeChild(scriptElem); } }