change default YouTube video quality
目前為
// ==UserScript==
// @name YouTube Default Override
// @namespace http://www.youtube.com/
// @version 1.0
// @description change default YouTube video quality
// @include http://youtube.com/*
// @include https://youtube.com/*
// @include http://www.youtube.com/*
// @include https://www.youtube.com/*
// @run-at document-end
// ==/UserScript==
//qualities = ["auto", "hd1080", "hd720", "large", "medium", "small", "tiny"];
youtubeOverride = {
enabled: true,
maxAttempts: 50,
tryTimeout: 333,
quality: "hd720",
overrideQuality: function () {
console.log("quality override starting");
var player = document.getElementById("movie_player");
var qualityToSet = null;
if (player && player.setPlaybackQuality) {
var qualityLevels = player.getAvailableQualityLevels();
for (var i = 0; i < qualityLevels.length; i++) {
if (qualityLevels[i].trim().toLowerCase() === youtubeOverride.quality) {
qualityToSet = qualityLevels[i];
break;
}
}
if (qualityToSet == null) {
qualityToSet = qualityLevels[0];
}
if (qualityToSet != null) {
player.setPlaybackQuality(qualityToSet);
console.log("set quality to " + qualityToSet);
} else {
console.log("error: no quality levels available");
}
} else {
console.log("cannot get player api");
console.log(player);
}
return qualityToSet != null;
},
override: function () {
if (youtubeOverride.enabled) {
console.log("override script starting")
var maxAttempts = youtubeOverride.maxAttempts;
var tryTimeout = youtubeOverride.tryTimeout;
function callUntilTrue(f, maxAttempts, timeout) {
var timeoutTryFunc = function () {
if (!f()) {
if (timeoutTryFunc.attempts < maxAttempts) {
timeoutTryFunc.attempts++;
setTimeout(timeoutTryFunc, timeout);
} else {
console.error("ERROR: timeout try failed");
}
} else {
console.log("timeout try succeeded on #" + timeoutTryFunc.attempts);
}
};
timeoutTryFunc.attempts = 1;
setTimeout(timeoutTryFunc, 0);
}
callUntilTrue(youtubeOverride.overrideQuality, maxAttempts, tryTimeout);
}
},
getPlayer: function () {
return document.getElementById("movie_player");
},
};
youtubeOverride.override()