Reddit - Auto Best Video Quality

Reddit - Auto Best Video Quality. Reddit - 视频自动最佳画质

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Reddit - Auto Best Video Quality
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Reddit - Auto Best Video Quality. Reddit - 视频自动最佳画质
// @author       Martin______X
// @match        https://www.reddit.com/*
// @match        https://www.redgifs.com/ifr/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=reddit.com
// @grant        none
// @license      MIT
// ==/UserScript==

const simpleClick = (async (button) => {
    button.click();
    button.setAttribute("tred","");
});
const autoQualityInterval = setInterval(() => {
    try {
        let hlsjss = document.querySelectorAll('shreddit-player-static-hlsjs');
        for(let i=0; i<hlsjss.length;i++){
            //
            let hlsjs = hlsjss[i];
            if(hlsjs.shadowRoot){
                //
                let video = hlsjs.shadowRoot.querySelector('video');
                video.setAttribute("loop","");
                //
                let media_ui = hlsjs.shadowRoot.querySelector('shreddit-media-ui');
                //
                if(media_ui.shadowRoot){
                    let video_settings = media_ui.shadowRoot.querySelector('shreddit-video-settings');
                    //
                    if(video_settings.shadowRoot){
                        let autoplay_toggle = video_settings.shadowRoot.querySelector('button[data-testid="autoplay-toggle"]');
                        //
                        if(autoplay_toggle){
                            let best_quality = autoplay_toggle.parentElement.querySelector('button[data-testid="quality-option"]');
                            //
                            if(best_quality && !best_quality.hasAttribute("tred")){
                                simpleClick(best_quality);
                            }
                        }
                    }
                }
            }
        }
        //
        let qualityButton = document.querySelector('button.gifQualityButton');
        if(qualityButton && !qualityButton.hasAttribute("tred")){
            simpleClick(qualityButton);
        }
    } catch (error) {
        console.error(error)
    }
}, 1);