黑糖

q11e 代刷网站的定时提交控制脚本

Verzia zo dňa 18.03.2025. Pozri najnovšiu verziu.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==UserScript==
// @name         黑糖
// @namespace    http://sugarblack.top
// @version      0.1.0
// @description  q11e 代刷网站的定时提交控制脚本
// @author       zemelee
// @license MIT
// @match        http://sugarblack.top/*
// ==/UserScript==

async function oneTime(count) {
    let homeBtn = document.querySelector("#home-btn");
    homeBtn.click()
    await new Promise((resolve) => { setTimeout(resolve, 1000); });
    let inputEl = document.querySelector('input[step="5"][max="100"]');
    inputEl.value = count
    const inputEvent = new Event('input', { bubbles: true });
    inputEl.dispatchEvent(inputEvent);
    await new Promise((resolve) => { setTimeout(resolve, 500); });
    let submitBtn = document.querySelector("#submit-btn");
    submitBtn.click()
    await new Promise((resolve) => { setTimeout(resolve, 1000); });
    const buttons = document.querySelectorAll('button');
    const confirmBtn = Array.from(buttons).filter(button => button.innerText.trim() === '确认');
    confirmBtn[0].click()
}

function showMessage(text, delay) {
    messageBox = document.createElement('div');
    messageBox.textContent = text;
    messageBox.style.cssText = `
        position: fixed;
        top: 50%;
        left: 50%;
        transform: translateX(-50%);
        background-color: rgba(0, 0, 0, 0.8);
        color: white;
        padding: 10px 20px;
        border-radius: 5px;
        z-index: 9999;
    `;
    document.body.appendChild(messageBox);
    setTimeout(() => {
        document.body.removeChild(messageBox);
        messageBox = null; // 释放引用,准备下一次使用
    }, delay); // 4 seconds
}
function validate(inputs) {
    let inputNum = inputs[0]
    let inputInterval = inputs[1]
    let inputFor = inputs[2]
    if (!inputNum.value || !inputInterval.value || !inputFor.value) {
        showMessage("份数/间隔/循环次数 需要填写完整", 3500)
        return false
    }
    if (inputNum.value >= 88 || inputNum.value <= 1) {
        showMessage("提交次数区间为[2, 88]!", 3500)
        return false
    }
    if (inputInterval.value > 600 || inputInterval.value < 10) {
        showMessage("间隔时间区间为[10, 600s]!", 3500)
        return false
    }
    if (inputFor > 100 || inputFor < 1) {
        showMessage("循环次数区间为[1, 100]!", 3500)
        return false
    }
    return true
}

async function executeRepeatedly(delay, forTime, singleCnt) {
    let count = 0;
    async function execute() {
        if (count < forTime) {
            showMessage(`当前循环轮次:${count + 1}`, 5000)
            await oneTime(singleCnt); // 等待 oneTime() 完成
            count++;
            setTimeout(execute, delay * 1000);
        }
    }
    await execute();
    window.location.replace("http://sugarblack.top/#/home/params")
}


(async function () {
    'use strict';
    let singleCnt = localStorage.getItem("singleCnt") || null;
    let forTime = localStorage.getItem("forTime") || null;
    let delay = localStorage.getItem("delay") || null;
    await new Promise((resolve) => { setTimeout(resolve, 1000); });
    const btns = document.querySelector(".btns")
    btns.appendChild(document.createElement("br"))
    // 
    const label1 = document.createElement('label');
    const label2 = document.createElement('label');
    const label3 = document.createElement('label');
    label1.textContent = "份数";
    label2.textContent = "间隔";
    label3.textContent = "循环";
    let inputNum = document.createElement("input")
    let inputInterval = document.createElement("input")
    let inputFor = document.createElement("input")
    inputNum.placeholder = "每次提交的份数";
    inputInterval.placeholder = "提交间隔(秒)";
    inputFor.placeholder = "循环次数";
    // inputNum.className = "inputNum";
    // inputInterval.className = "inputInterval";
    // inputFor.className = "inputFor";
    if (singleCnt && forTime && delay) {
        inputNum.value = singleCnt;
        inputInterval.value = delay;
        inputFor.value = forTime;
    }
    let inputs = [inputNum, inputInterval, inputFor]
    let labels = [label1, label2, label3]
    inputs.forEach((item, index) => {
        item.style.marginLeft = "6px";
        item.style.marginRight = "20px";
        item.type = "number";
        item.style.width = "150px";
        btns.appendChild(labels[index]);
        btns.appendChild(item)
    })
    let startBtn = document.createElement("button")
    startBtn.textContent = "开始"
    startBtn.style.marginLeft = "10px";
    startBtn.addEventListener("click", function () {

        if (!validate(inputs)) return
        singleCnt = inputNum.value;
        forTime = inputFor.value;
        delay = inputInterval.value;
        localStorage.setItem("singleCnt", singleCnt)
        localStorage.setItem("forTime", forTime)
        localStorage.setItem("delay", delay)
        executeRepeatedly(delay, forTime, singleCnt)
    })
    btns.appendChild(startBtn)


})();