Twitch - Auto Best Video Quality (1440p, 1080p, 720p etc)
// ==UserScript==
// @name Twitch - Auto Best Video Quality
// @namespace http://tampermonkey.net/
// @version 1.4
// @description Twitch - Auto Best Video Quality (1440p, 1080p, 720p etc)
// @author Martin______X
// @match https://www.twitch.tv/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=twitch.tv
// @grant none
// @license MIT
// ==/UserScript==
let $url = "";
let $click_times = 0;
let $step = 1;
let $delay = 0;
const simpleClick = (async (target, step)=>{
if(target){
target.click();
}
if(step == 5){
$step = 1;
$click_times++;
}else{
$step++;
}
});
//
const twitchVideoQualityInterval = setInterval(() => {
try{
let url = document.URL;
let video = document.querySelector("video");
if(url != $url){
// multi clicks check
if($click_times == 1){
$click_times = 0;
$url = url;
$delay = 0;
}else{
if($delay<200){
$delay++;
}else{
let settings_button = document.querySelectorAll('[ARIA-LABEL="Settings"]')[0];
if(settings_button && $step==1){
simpleClick(settings_button, 1);
}
let quality_button = document.querySelectorAll('[DATA-A-TARGET="player-settings-menu-item-quality"]')[0];
if(quality_button && $step==2){
simpleClick(quality_button, 2);
}
//data-a-target="player-settings-menu"
let player_settings_menu = document.querySelectorAll('DIV[DATA-A-TARGET="player-settings-menu"]')[0];
if(player_settings_menu && $step==3){
let inputs = player_settings_menu.getElementsByTagName("INPUT");
if(inputs[1].hasAttribute("DISABLED")){
simpleClick(inputs[2], 3);
}else{
simpleClick(inputs[1], 3);
}
}
let main_menu = document.querySelectorAll('BUTTON[DATA-TEST-SELECTOR="main-menu"]')[0];
if(main_menu && $step==4){
simpleClick(main_menu, 4);
}
let menuitem = document.querySelectorAll('BUTTON[ROLE="menuitem"]')[0];
if(menuitem && $step==5){
simpleClick(menuitem, 5);
}
}
}
}
}catch{/*do nothing*/}
}, 1);
const isVideoPlaying = (video) => {
if(video.currentTime > 0 && !video.paused && !video.ended && video.readyState > 2){
return true;
}
return false;
}