Mirror Creator Link Checker (Enhanced)

Automatically clicks all "Check" links on mirrored.to/files/ pages, revealing link statuses without manual clicks! Enhanced version based on MeGaNeKo's script.

// ==UserScript==
// @name          Mirror Creator Link Checker (Enhanced)
// @namespace     https://github.com/MeGaNeKoS/Mirror-Creator-Link-Checker
// @version       1.5
// @description   Automatically clicks all "Check" links on mirrored.to/files/ pages, revealing link statuses without manual clicks! Enhanced version based on MeGaNeKo's script.
// @author        sharmanhall (Based on MeGaNeKo(めがねこ)'s script)
// @license       MIT
// @match         *://www.mirrored.to/files/*
// @grant         none
// @require       https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js
// ==/UserScript==

// Ensure jQuery is loaded and the DOM is ready before executing your code
$(document).ready(function() {
    console.log("Mirror Creator Link Checker (Enhanced): Script started. jQuery loaded:", typeof $);

    // Function to click on all "Check" buttons
    function clickAllCheckButtons() {
        // Select all 'a' tags whose 'onclick' attribute starts with 'showStatus'
        const unclickedLinks = $('a[onclick^="showStatus"]');

        if (unclickedLinks.length > 0) {
            console.log(`Mirror Creator Link Checker (Enhanced): Found ${unclickedLinks.length} 'Check' links.`);
            unclickedLinks.each(function(index) {
                // Add a small, increasing delay between clicks to mimic human behavior
                // and avoid triggering potential anti-bot measures for rapid-fire clicks.
                // This also gives the site's JS time to process each click.
                setTimeout(() => {
                    $(this).click();
                    // Optional: Add a class to clicked links to prevent re-processing in subsequent checks
                    // $(this).addClass('clicked-by-userscript');
                    console.log(`Mirror Creator Link Checker (Enhanced): Clicking link ${index + 1}.`);
                }, 100 * index); // 100ms delay between each link click
            });
        } else {
            console.log("Mirror Creator Link Checker (Enhanced): No 'Check' links found yet or all visible ones processed.");
        }
    }

    // --- Initial Run and Periodic Check for Dynamically Loaded Content ---

    // Give the page a brief moment to fully settle and dynamic content to load.
    // This is often more reliable than just $(document).ready() for heavily dynamic pages.
    setTimeout(() => {
        console.log("Mirror Creator Link Checker (Enhanced): Running initial check after 1 second delay.");
        clickAllCheckButtons();

        // Set up a periodic check for any new links that might appear
        // after initial AJAX requests complete or content streams in.
        // We'll stop this interval once no new links are found over several checks.
        let consecutiveNoLinksCount = 0;
        const maxConsecutiveNoLinks = 5; // Number of times to find no new links before stopping

        const checkIntervalId = setInterval(() => {
            const currentLinks = $('a[onclick^="showStatus"]'); // Re-select to catch newly added elements
            if (currentLinks.length > 0) {
                console.log(`Mirror Creator Link Checker (Enhanced): Found ${currentLinks.length} links in interval check.`);
                currentLinks.each(function(index) {
                     // Only click if it hasn't been clicked already (optional, if you add class logic above)
                     // if (!$(this).hasClass('clicked-by-userscript')) {
                         setTimeout(() => {
                            $(this).click();
                            // $(this).addClass('clicked-by-userscript'); // Add this if you uncomment the if condition above
                         }, 100 * index);
                     // }
                });
                consecutiveNoLinksCount = 0; // Reset count if links are found
            } else {
                consecutiveNoLinksCount++;
                console.log(`Mirror Creator Link Checker (Enhanced): No new links found in this interval. Consecutive 'no links' count: ${consecutiveNoLinksCount}`);
                if (consecutiveNoLinksCount >= maxConsecutiveNoLinks) {
                    clearInterval(checkIntervalId);
                    console.log("Mirror Creator Link Checker (Enhanced): Stopping periodic checks (no new links found for a while).");
                }
            }
        }, 2000); // Check every 2 seconds for new links
    }, 1000); // Initial delay of 1 second before starting the process
});

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址