// ==UserScript== // @name 9anime Auto Best Resolution // @namespace http://tampermonkey.net/ // @version 1.3 // @description Automatcially select the highest resolution on vidstream/mycloud streams // @author Discord: int3nse#0854 // @match https://vidstream.pro/* // @match https://vidstreamz.online/* // @match https://mcloud.to/* // @match https://vizcloud.co/* // @icon https://www.google.com/s2/favicons?sz=64&domain=9anime.to // @grant none // @license MIT // @downloadURL none // ==/UserScript== (async () => { 'use strict'; function waitForElement(selector, baseElement = document.body) { return new Promise(resolve => { if (baseElement.querySelector(selector)) { return resolve(baseElement.querySelector(selector)); } const observer = new MutationObserver(mutations => { if (baseElement.querySelector(selector)) { resolve(baseElement.querySelector(selector)); observer.disconnect(); } }); observer.observe(baseElement, { childList: true, subtree: true }); }); } // Once the settings button is loaded, we know the player is loaded const settingsButtonSelector = 'div.jw-icon.jw-icon-inline.jw-button-color.jw-reset.jw-icon-settings.jw-settings-submenu-button'; await waitForElement(settingsButtonSelector); // Set the quality to the highest with the jwplayer api const player = jwplayer(); // 0 = auto, 1 = highest player.on('firstFrame', () => player.setCurrentQuality(1)); })();