您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
This script types for you automatically on www.typingclub.com:
// ==UserScript== // @name Auto Typer for TypingClub // @namespace http://tampermonkey.net/ // @version 1.0 // @description 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 // @match https://www.typingclub.com/* // @grant none // @license MIT // ==/UserScript== /** * 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); } } // ############################################################################################################ // go! // ############################################################################################################ autoPlay(true);