Pick.io 24/7 video-in-description (ON)

This script claims all Pick.io faucets one by one (IconCaptcha)

// ==UserScript==
// @name         Pick.io 24/7 video-in-description (ON)
// @namespace    http://tampermonkey.net/
// @version      2.2
// @description  This script claims all Pick.io faucets one by one (IconCaptcha)
// @author       👽
// @match        https://www.google.com/*
// @match        https://tronpick.io/*
// @match        https://litepick.io/*
// @match        https://dogepick.io/*
// @match        https://bnbpick.io/*
// @match        https://solpick.io/*
// @match        https://tonpick.game/*
// @match        https://polpick.io/*
// @match        https://suipick.io/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    let lastActionTime = Date.now();  // Track the last time an action was performed
    const RETRY_INTERVAL = 5000; // Retry interval in milliseconds (5 seconds)
    const WAIT_TIME = 5000; // Time to wait before redirecting

    // Function to update last action time
    function updateLastActionTime() {
        lastActionTime = Date.now();
    }

    // Function to refresh the page if no action happens for 70 seconds
    function checkForInactivity() {
        const currentTime = Date.now();
        const elapsedTime = currentTime - lastActionTime;

        if (elapsedTime > 70000) {  // 70 seconds
            console.log("⏳ No action for 70 seconds, refreshing the page...");
            location.reload();  // Refresh the page
        }
    }

    // Check for inactivity every 10 seconds
    setInterval(checkForInactivity, 10000);

    // Retry mechanism for internet connection
    function isOnline() {
        return navigator.onLine;  // Check if the user is online
    }

    function retryIfOffline() {
        if (!isOnline()) {
            console.log('🌐 No internet connection, retrying in 5 seconds...');
            setTimeout(retryIfOffline, RETRY_INTERVAL);
        }
    }

    // Start checking the internet connection
    retryIfOffline();

    // Function to handle CAPTCHA and claim button
    function handleCaptchaAndClaim(nextSiteUrl) {
        updateLastActionTime();  // Update the action time

        // Wait 5 seconds after page load
        setTimeout(() => {
            // Check for CAPTCHA on different sites
            const captchaSelect = document.querySelector('#select_captcha');
            if (captchaSelect) {
                captchaSelect.value = '0'; // Select IconCaptcha
                const event = new Event('change', { bubbles: true, cancelable: true });
                captchaSelect.dispatchEvent(event);
                console.log('✅ Selected IconCaptcha');
            } else {
                console.warn('⚠️ CAPTCHA select element not found on this page.');
            }

            // Observe for "Verification complete."
            const observer = new MutationObserver((mutations, obs) => {
                const verificationMessage = document.querySelector('.iconcaptcha-modal__body-title');
                if (verificationMessage && verificationMessage.textContent.includes('Verification complete')) {
                    console.log('✅ IconCaptcha solved: Verification complete.');

                    // Wait 5 seconds, then click claim button
                    setTimeout(() => {
                        const claimBtn = document.querySelector('#process_claim_hourly_faucet');
                        if (claimBtn) {
                            claimBtn.click();
                            console.log('🟢 Claim button clicked.');

                            // After clicking the claim button, move to the next site
                            setTimeout(() => {
                                window.location.href = nextSiteUrl;
                                console.log(`🔄 Redirecting to next site: ${nextSiteUrl}`);
                            }, 5000);  // 5 seconds delay before moving to next site
                        } else {
                            console.warn('⚠️ Claim button not found.');
                        }
                    }, 5000);  // 5 seconds delay before clicking claim
                    obs.disconnect();  // Stop observing after completion
                }
            });

            // Start observing for changes
            observer.observe(document.body, { childList: true, subtree: true });

        }, 5000);  // 5 seconds delay after page load
    }

    // Function to check "Please wait until the clock stops" (for 1 minute) and redirect
    function checkWaitTextAndRedirect(nextSiteUrl) {
        updateLastActionTime();  // Update the action time

        // Check if the text is present in the body
        const checkForWaitText = () => {
            return document.body.innerText.includes("Please wait until the clock stops");
        };

        if (checkForWaitText()) {
            const startTime = Date.now();
            const checkInterval = setInterval(() => {
                if (checkForWaitText()) {
                    const elapsedTime = Date.now() - startTime;
                    if (elapsedTime > 60000) {  // 1 minute (60,000 milliseconds)
                        console.log('⚠️ "Please wait until the clock stops" displayed for 1 minute, redirecting to next site...');
                        clearInterval(checkInterval);
                        window.location.href = nextSiteUrl;
                    }
                }
            }, 1000);  // Check every 1 second
        }
    }

    // Modified logic to stop CAPTCHA verification when "Please wait until the clock stops" is shown
    function handleWaitMessageAndCaptcha(nextSiteUrl) {
        updateLastActionTime();  // Update the action time

        const waitText = "Please wait until the clock stops";
        const checkForWaitText = document.body.innerText.includes(waitText);

        if (checkForWaitText) {
            console.log(`⚠️ "${waitText}" detected. Skipping CAPTCHA and verification...`);
            setTimeout(() => {
                console.log('⏳ Waiting for 1 minute...');
                setTimeout(() => {
                    console.log(`🔄 Redirecting to next site: ${nextSiteUrl}`);
                    window.location.href = nextSiteUrl;
                }, 60000);  // 1 minute wait before redirection
            }, 1000);  // Ensure there's a small delay before waiting
        } else {
            // If the wait text is not detected, continue with CAPTCHA handling
            handleCaptchaAndClaim(nextSiteUrl);
        }
    }

    // Check if we're on any of the faucet sites and handle CAPTCHA if necessary
    if (window.location.href.includes('tronpick.io')) {
        handleWaitMessageAndCaptcha('https://litepick.io/faucet.php');  // After TronPick, go to LitePick
    }
    else if (window.location.href.includes('litepick.io')) {
        // Wait 10 seconds before proceeding on LitePick page
        setTimeout(() => {
            handleWaitMessageAndCaptcha('https://dogepick.io');  // After LitePick, go to DogePick
        }, 10000);  // 10 seconds delay before starting the next actions
    }
    else if (window.location.href.includes('dogepick.io')) {
        handleWaitMessageAndCaptcha('https://bnbpick.io');  // After DogePick, go to BNBPick
    }
    else if (window.location.href.includes('bnbpick.io')) {
        handleWaitMessageAndCaptcha('https://solpick.io');  // After BNBPick, go to SolPick
    }
    else if (window.location.href.includes('solpick.io')) {
        handleWaitMessageAndCaptcha('https://tonpick.game');  // After SolPick, go to TonPick
    }
    else if (window.location.href.includes('tonpick.game')) {
        handleWaitMessageAndCaptcha('https://polpick.io');  // After TonPick, go to PolPick
    }
    else if (window.location.href.includes('polpick.io')) {
        handleWaitMessageAndCaptcha('https://suipick.io');  // After PolPick, go to SuiPick
    }
    else if (window.location.href.includes('suipick.io')) {
        handleWaitMessageAndCaptcha('https://www.google.com');  // After SuiPick, go to Google
    }

    // If we're on Google, start the redirection sequence (wait 5 seconds)
    if (window.location.href.includes('google.com')) {
        setTimeout(() => {
            console.log('🔄 Redirecting from Google to faucet...');
            window.location.href = 'https://tronpick.io/faucet.php';  // Redirect to TronPick
        }, WAIT_TIME);  // Wait 5 seconds before redirection
    }
})();