Skip to content
Snippets Groups Projects
Unverified Commit 26cff35d authored by Jan's avatar Jan Committed by GitHub
Browse files

Optimizations & max tries to wait for buttons

parent 94853ca6
No related branches found
No related tags found
No related merge requests found
......@@ -5,7 +5,7 @@
// @description Automatically clicks through all the buttons on all subsites of the GreaterGood ClickToGive program every two hours.
// @description:de Klickt sich automatisch alle zwei Std. durch alle Buttons auf allen Seiten des GreaterGood-ClickToGive-Programms.
// @version 3.0.0
// @version 3.1.0
// @copyright 2023+, Jan G. (Rsge)
// @license Mozilla Public License 2.0
// @icon https://http-aws.greatergood.com/img/ggc/favicon-96x96.png
......@@ -13,6 +13,8 @@
// @namespace https://github.com/Rsge
// @homepageURL https://github.com/Rsge/GreaterGood-CTG-AutoClicker
// @supportURL https://github.com/Rsge/GreaterGood-CTG-AutoClicker/issues
// @downloadURL https://update.greasyfork.org/scripts/433055/GreaterGood%20CTG%20AutoClicker.user.js
// @updateURL https://update.greasyfork.org/scripts/433055/GreaterGood%20CTG%20AutoClicker.meta.js
// @match https://greatergood.com/*
// @match https://theanimalrescuesite.com/*
......@@ -25,35 +27,49 @@
'use strict';
// Max amount of seconds to wait before clicking button
const MAX_RANDOM_TO_CLICK_SECONDS = 4;
const MAX_RANDOM_TO_CLICK_SECONDS = 3;
// Amount of seconds to wait for site to load after click
const WAIT_SECONDS = 3
const WAIT_SECONDS = 2
// Max amount of tries to wait for buttons to load before giving up
const MAX_TRIES = 5
// Minutes between possible click-throughs
const INTERVAL_MINUTES = 120;
// Warning for buttons not found
const BUTTONS_NOT_FOUND_WARNING = "Buttons could not be found after " + (MAX_TRIES * WAIT_SECONDS) + " s.";
// Basic function
// Basic functions
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function sToMs(s) {
return s * 1000;
}
// Vars
let i;
let progButtonsLeft = true;
let progButtonsLeft;
do {
// On button site, click button.
// When a CTG-button is present, click it.
let ctgButton = document.getElementById("ctg-click-box-button");
if (ctgButton !== null) {
let millisecondsToClick = (Math.floor(Math.random() * MAX_RANDOM_TO_CLICK_SECONDS) + 1) * 1000;
let millisecondsToClick = sToMs(WAIT_SECONDS + Math.floor(Math.random() * MAX_RANDOM_TO_CLICK_SECONDS));
await sleep(millisecondsToClick);
ctgButton.click();
}
// Wait for alternate sites' buttons to load.
i = 0;
let progButtons = [];
// Wait for buttons to load.
do {
await sleep(WAIT_SECONDS * 1000)
progButtonsLeft = true;
// On thanks site, choose new site if not all are already clicked.
await sleep(sToMs(WAIT_SECONDS))
progButtons = document.getElementsByClassName("ctg-click-grid-button");
i += 1
if (i > MAX_TRIES) {
console.warn(BUTTONS_NOT_FOUND_WARNING);
return;
}
} while (progButtons.length == 0);
// Choose next site if not all are already clicked.
progButtonsLeft = true;
let foundButton = false;
for (i = 0; i < progButtons.length; i++) {
let progButtonClass = progButtons[i].className;
......@@ -62,19 +78,17 @@
//console.log(progButtonValue);
if (!progButtonClass.includes("click-attempted") // Button clicked already
&& !progButtonValue.startsWith("http")) { // Is external site
progButtons[i].click();
foundButton = true;
progButtons[i].click();
break;
}
}
if (foundButton) {
break;
}
if (!foundButton) {
progButtonsLeft = false;
} while (progButtons.length == 0)
} while (progButtonsLeft)
}
} while (progButtonsLeft);
// Wait for specified time, then reload page to click through again.
let intervalMilliseconds = (INTERVAL_MINUTES + 1) * 60 * 1000;
let intervalMilliseconds = sToMs((INTERVAL_MINUTES + 1) * 60);
setTimeout(function(){location.reload(true);}, intervalMilliseconds);
})();
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment