Holodex - Auto Click Sort Dropdown and Select Most Viewers (With Load Detection)

Automatically clicks the sort dropdown and selects "Most Viewers" on Holodex.net with load detection

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         Holodex - Auto Click Sort Dropdown and Select Most Viewers (With Load Detection)
// @namespace    http://tampermonkey.net/
// @version      1.3
// @description  Automatically clicks the sort dropdown and selects "Most Viewers" on Holodex.net with load detection
// @author       ChatGPT
// @match        https://holodex.net/*
// @grant        none
// @run-at       document-idle
// ==/UserScript==

(function () {
    'use strict';

    // 정렬 아이콘 클릭을 위한 함수
    function findSortButton() {
        return [...document.querySelectorAll('svg.v-icon__svg')].find(svg => {
            const path = svg.querySelector('path');
            return path?.getAttribute('d') === 'M6,13H18V11H6M3,6V8H21V6M10,18H14V16H10V18Z';
        })?.closest('button');
    }

    // "Sort" 탭 클릭
    function clickSortTab() {
        const sortTab = document.querySelector('.v-select__selection--comma');
        if (sortTab && sortTab.textContent.includes('Latest')) {
            console.log('[Tampermonkey] "Sort" tab found, clicking...');
            sortTab.click();
        } else {
            console.log('[Tampermonkey] "Sort" tab not found!');
        }
    }

    // "Most Viewers" 항목 선택
    function selectMostViewers() {
        const listItems = document.querySelectorAll('.v-list-item');
        for (const item of listItems) {
            if (item.textContent.includes('Most Viewers')) {
                console.log('[Tampermonkey] "Most Viewers" found, selecting...');
                item.click();
                return true;
            }
        }
        return false;
    }

    // 첫 번째 정렬 버튼 클릭 및 이후 단계 처리
    function trySortClickAndSelect() {
        const sortButton = findSortButton();
        if (sortButton) {
            console.log('[Tampermonkey] Sort button found, clicking...');
            sortButton.click();

            // 바로 "Sort" 탭 클릭
            clickSortTab();

            // "Most Viewers" 항목을 바로 선택 시도
            if (!selectMostViewers()) {
                console.log('[Tampermonkey] "Most Viewers" not found yet, retrying...');
                // 만약 아직 항목이 준비되지 않았다면 다시 시도
                setTimeout(() => {
                    console.log('[Tampermonkey] Retry select "Most Viewers"...');
                    selectMostViewers();
                }, 300);
            }
        } else {
            console.log('[Tampermonkey] Sort button not found!');
        }
    }

    // 로딩 완료 감지 함수
    function detectPageLoad() {
        // 페이지 로딩이 완료되고 나면 클릭 작업 시작
        if (document.readyState === 'complete') {
            console.log('[Tampermonkey] Page loaded, starting sort click...');
            trySortClickAndSelect();
        }
    }

    // 페이지 로딩 상태 감지
    window.addEventListener('load', detectPageLoad);

    // DOM 변화 감지
    const observer = new MutationObserver(() => {
        const sortButton = findSortButton();
        if (sortButton) {
            sortButton.click();
            console.log('[Tampermonkey] Sort dropdown button clicked');
            observer.disconnect(); // 버튼 클릭 후 감지 종료

            // 버튼 클릭 후 나머지 작업 수행
            trySortClickAndSelect();
        }
    });

    // 페이지 로드 후 감지 시작
    window.addEventListener('load', () => {
        console.log('[Tampermonkey] Script loaded, starting observer...');
        observer.observe(document.body, { childList: true, subtree: true });
    });
})();