// ==UserScript== // @name Twitch - Auto Best Video Quality // @namespace http://tampermonkey.net/ // @version 1.6 // @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 // @downloadURL none // ==/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; }