-
-
Save Domiii/52cf49d780ec8c9f01771973c36197af to your computer and use it in GitHub Desktop.
| /** | |
| * This script types for you automatically on www.typingclub.com: | |
| * 1. Open the website | |
| * 2. Blaze past the tutorials | |
| * 3. Go into a level | |
| * 4. Open Console | |
| * 5. Paste the script and press ENTER | |
| */ | |
| // NOTE: When delay (in ms between two strokes) is too low, the site might bug out and the result page will not be shown | |
| const minDelay = 60; | |
| const maxDelay = 60; | |
| const keyOverrides = { | |
| [String.fromCharCode(160)]: ' ' // convert hardspace to normal space | |
| }; | |
| function getTargetCharacters() { | |
| const els = Array.from(document.querySelectorAll('.token span.token_unit')); | |
| const chrs = els | |
| .map(el => { | |
| // get letter to type from each letter DOM element | |
| if (el.firstChild?.classList?.contains('_enter')) { | |
| // special case: ENTER | |
| return '\n'; | |
| } | |
| let text = el.textContent[0]; | |
| return text; | |
| }) | |
| .map(c => keyOverrides.hasOwnProperty(c) ? keyOverrides[c] : c); // convert special characters | |
| return chrs; | |
| } | |
| function recordKey(chr) { | |
| // send it straight to the internal API | |
| window.core.record_keydown_time(chr); | |
| } | |
| function sleep(ms) { | |
| return new Promise(r => setTimeout(r, ms)); | |
| } | |
| async function autoPlay(finish) { | |
| const chrs = getTargetCharacters(); | |
| for (let i = 0; i < chrs.length - (!finish); ++i) { | |
| const c = chrs[i]; | |
| recordKey(c); | |
| //console.log(c, c.charCodeAt()); | |
| await sleep(Math.random() * (maxDelay - minDelay) + minDelay); | |
| } | |
| } | |
| // ############################################################################################################ | |
| // old utilities | |
| // ############################################################################################################ | |
| // /** | |
| // * @see https://stackoverflow.com/questions/8942678/keyboardevent-in-chrome-keycode-is-0/12522752#12522752 | |
| // */ | |
| // function simulateKey(chr, el) { | |
| // _simulateKey(chr, 'keydown', el); | |
| // _simulateKey(chr, 'keypress', el); | |
| // } | |
| // function _simulateKey(chr, type, el) { | |
| // var eventObj = document.createEventObject ? | |
| // document.createEventObject() : document.createEvent("Events"); | |
| // if (eventObj.initEvent) { | |
| // eventObj.initEvent(type || "keydown", true, true); | |
| // } | |
| // let keyCode = chr.charCodeAt(0); | |
| // eventObj.key = chr[0]; | |
| // eventObj.keyCode = keyCode; | |
| // eventObj.which = keyCode; | |
| // eventObj.isTrusted = true; | |
| // el = el || document.body; | |
| // // console.log(keyCode, eventObj); | |
| // el.dispatchEvent ? el.dispatchEvent(eventObj) : el.fireEvent("onkeydown", eventObj); | |
| // } | |
| // document.addEventListener("keydown", function (e) { | |
| // console.log('down', e); | |
| // }); | |
| // document.addEventListener("keypress", function (e) { | |
| // console.log('press', e); | |
| // }); | |
| //$($('.menu-btn')[0].parentNode).prepend('<button onclick=\'simulateKeyPress("c")\'>sim</button>'); | |
| // simulateKey('a', $('input')[0]); | |
| // ############################################################################################################ | |
| // go! | |
| // ############################################################################################################ | |
| autoPlay(true); |
can u also make one for the edclub vocabulary and spelling
If you can
About 95 Wmp :(async () => {
const minDelay = 70;
const maxDelay = 110;
const inputTarget = document.querySelector('input, textarea, [contenteditable="true"]') || document.body;
function getTargetCharacters() {
const els = Array.from(document.querySelectorAll('.token span.token_unit'));
return els.map(el => {
if (el.classList.contains('_enter')) return 'Enter';
let char = el.textContent[0];
// Convert special space (char 160) to a standard space
return char.charCodeAt(0) === 160 ? ' ' : char;
});
}
const chars = getTargetCharacters();
console.log(Starting... Found ${chars.length} characters.);
for (const char of chars) {
const key = char === 'Enter' ? 'Enter' : char;
const keyCode = key === 'Enter' ? 13 : key.charCodeAt(0);
const eventSettings = {
key: key,
keyCode: keyCode,
which: keyCode,
code: key === ' ' ? 'Space' : (key === 'Enter' ? 'Enter' : `Key${key.toUpperCase()}`),
bubbles: true,
cancelable: true,
composed: true
};
inputTarget.dispatchEvent(new KeyboardEvent('keydown', eventSettings));
inputTarget.dispatchEvent(new KeyboardEvent('keypress', eventSettings));
// Forcing the space injection
if (inputTarget.value !== undefined) {
inputTarget.value += (key === 'Enter' ? '' : key);
inputTarget.dispatchEvent(new Event('input', { bubbles: true }));
}
inputTarget.dispatchEvent(new KeyboardEvent('keyup', eventSettings));
await new Promise(r => setTimeout(r, Math.random() * (maxDelay - minDelay) + minDelay));
}
console.log("Finished!");
})();
what does the upper code do
hey if anyone could help that would be great how do i use the newer code cause when i try to put it into inspect element it wont work please help! :)
it keeps saying unexpected number / invalid token
locked aria-hidden on an element because its descendant retained focus. The focus must not be hidden from assistive technology users. Avoid using aria-hidden on a focused element or its ancestor. Consider using the inert attribute instead, which will also prevent focus. For more details, see the aria-hidden section of the WAI-ARIA specification at https://w3c.github.io/aria/#aria-hidden.
Element with focus:
Ancestor with aria-hidden:
it wont even let me say allow pasting and this is a personal laptop
?
it keeps saying unexpected number / invalid token
same I also keep on getting this notice
Anyone got an updated one?
i will try to fix mingigames.