change default YouTube video quality
当前为
// ==UserScript==
// @name YouTube Default Override
// @namespace http://www.youtube.com/
// @version 1.1.1
// @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('page');
var MutationObserver = window.MutationObserver;
var observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
var addedNodes = mutation.addedNodes;
for (var i = 0; i < addedNodes.length; i++) {
var element = addedNodes[i];
if (element.id === 'movie_player') {
overridePlayer(element);
}
}
});
});
observer.observe(target, { childList: true, subtree: true });
}
function overridePlayer(player) {
overrideTimeoutFunc.attempts = 0;
setTimeout(overrideTimeoutFunc, 300);
function overrideTimeoutFunc() {
overrideTimeoutFunc.attempts++;
var success = tryToOverride(player);
if (!success && overrideTimeoutFunc.attempts < 30) {
setTimeout(overrideTimeoutFunc, 1000)
}
}
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();
}
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址