Auto select the lowest available quality of videos (more eco-friendly, and you can still manually select a higher resolution when needed)
当前为
// ==UserScript==
// @name Dumb Youtube lowest quality chooser
// @name:fr Vidéos Youtube en basse minimale par défaut
// @version 1
// @description Auto select the lowest available quality of videos (more eco-friendly, and you can still manually select a higher resolution when needed)
// @description:fr Choisir automatiquement la qualité minimum pour la lecture des vidéos (plus eco-friendly, avec toujours la possibilité de choisir manuellement une meilleure qualité quand nécessaire)
// @author Les noix de coco
// @include http://youtube.com/*
// @include https://youtube.com/*
// @include http://www.youtube.com/*
// @include https://www.youtube.com/*
// @include http://gaming.youtube.com/*
// @include https://gaming.youtube.com/*
// @noframes
// @grant none
// @namespace https://greasyfork.org/users/456082
// ==/UserScript==
(function() {
"use strict"
function sortNumber(a, b) {
return a - b;
}
const DELAY = 1
function setLowestQuality()
{
if (!window.location.href.match(/\?.*v=/)) {
// Not a video
return
}
console.log('Will try to set video quality...')
setTimeout(() => {
const videoSettingsButtonEl = document.querySelector('.ytp-settings-button')
if (!videoSettingsButtonEl) {
return
}
videoSettingsButtonEl.dispatchEvent(new Event('click'))
setTimeout(() => {
let found = false
for (const el of document.querySelectorAll('.ytp-menuitem')) {
if (el.textContent.match(/Qual|Calidad/)) {
found = true
el.dispatchEvent(new Event('click'))
break
}
}
if (!found) {
return
}
setTimeout(() => {
const qualities = {}
for (const el of document.querySelectorAll('.ytp-menuitem')) {
const match = el.textContent.match(/(\d+)p/)
if (match) {
const qualityNum = match[1]
qualities[qualityNum] = el
}
}
//let qualitiesList = Object.keys(qualities).map(x => { return parseInt(x) })
let qualitiesList = Object.keys(qualities).sort(sortNumber)
console.log('Qualities (sorted):', qualitiesList)
const quality = qualitiesList[0]
console.log(`Setting lowest quality: ${quality}p`)
qualities[quality].dispatchEvent(new Event('click'))
}, DELAY)
}, DELAY)
}, DELAY)
}
window.addEventListener("yt-navigate-finish", setLowestQuality, true)
})();