IMVU Peer Review Timer & Semi-Automater

Adds a 25-second countdown, disables the "Vote" button, auto-clicks the "no issues" checkbox, and clicks a specific button on a specific page using its onclick attribute.

Versione datata 06/09/2024. Vedi la nuova versione l'ultima versione.

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

You will need to install an extension such as Tampermonkey to install this script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name         IMVU Peer Review Timer & Semi-Automater
// @namespace    http://tampermonkey.net/
// @version      2.1
// @description  Adds a 25-second countdown, disables the "Vote" button, auto-clicks the "no issues" checkbox, and clicks a specific button on a specific page using its onclick attribute.
// @author       YourName
// @match        https://www.imvu.com/peer_review/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // Create a div to display the countdown
    const countdownDiv = document.createElement('div');
    countdownDiv.style.position = 'fixed';
    countdownDiv.style.top = '10px';
    countdownDiv.style.right = '10px';
    countdownDiv.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
    countdownDiv.style.color = 'white';
    countdownDiv.style.padding = '10px';
    countdownDiv.style.fontSize = '16px';
    countdownDiv.style.borderRadius = '5px';
    countdownDiv.innerHTML = 'Time remaining: 25 seconds';
    document.body.appendChild(countdownDiv);

    // Get the vote button and set it to disabled (with grayed out style)
    const voteButton = document.getElementById('btn_submit_vote');
    if (voteButton) {
        voteButton.disabled = true;
        voteButton.style.opacity = '0.5'; // Gray out the button when disabled
        voteButton.style.cursor = 'not-allowed'; // Show the "not allowed" cursor
    }

    // Start the countdown from 25 seconds
    let timeRemaining = 25;
    const countdownInterval = setInterval(() => {
        timeRemaining--;
        countdownDiv.innerHTML = `Time remaining: ${timeRemaining} seconds`;

        // When the countdown reaches 0, stop the interval and enable the button
        if (timeRemaining <= 0) {
            clearInterval(countdownInterval);
            countdownDiv.innerHTML = 'Countdown finished!';
            if (voteButton) {
                voteButton.disabled = false; // Enable the "Vote" button
                voteButton.style.opacity = '1'; // Restore normal button style
                voteButton.style.cursor = 'pointer'; // Change cursor back to pointer
            }
        }
    }, 1000); // 1000ms = 1 second

    // Function to wait for and click the "no issues" checkbox
    function clickCheckbox() {
        const checkbox = document.querySelector('input[name="no_issues"]');
        if (checkbox && !checkbox.checked) {
            checkbox.click();
        }
    }

    // Wait for the checkbox element to be available and click it
    const observer = new MutationObserver(() => {
        const checkbox = document.querySelector('input[name="no_issues"]');
        if (checkbox) {
            clickCheckbox();
            observer.disconnect(); // Stop observing once the checkbox is found and clicked
        }
    });

    // Start observing the document for changes to detect when the checkbox loads
    observer.observe(document.body, { childList: true, subtree: true });

    // Click the specific button on the specific page
    if (window.location.href === 'https://www.imvu.com/peer_review/') {
        // Locate the button using its onclick attribute
        const specificButton = Array.from(document.querySelectorAll('button'))
            .find(button => button.getAttribute('onclick') && button.getAttribute('onclick').includes("/next/peer_review"));

        if (specificButton) {
            specificButton.click();
        }
    }

})();