Advertisement
ozymandias02

typing club auto typer script

Feb 7th, 2023
4,868
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. const minDelay = 60;const minDelay = 60;
  2.  
  3.  
  4. const maxDelay = 60;
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12. const keyOverrides = {
  13.  
  14. [String.fromCharCode(160)]: ' ' // convert hardspace to normal space
  15.  
  16. };
  17.  
  18.  
  19.  
  20. function getTargetCharacters() {
  21.  
  22. const els = Array.from(document.querySelectorAll('.token span.token_unit'));
  23.  
  24. const chrs = els
  25.  
  26. .map(el => {
  27.  
  28. // get letter to type from each letter DOM element
  29.  
  30. if (el.firstChild?.classList?.contains('_enter')) {
  31.  
  32. // special case: ENTER
  33.  
  34. return '\n';
  35.  
  36. }
  37.  
  38. let text = el.textContent[0];
  39.  
  40. return text;
  41.  
  42. })
  43.  
  44. .map(c => keyOverrides.hasOwnProperty(c) ? keyOverrides[c] : c); // convert special characters
  45.  
  46. return chrs;
  47.  
  48. }
  49.  
  50.  
  51.  
  52. function recordKey(chr) {
  53.  
  54. // send it straight to the internal API
  55.  
  56. window.core.record_keydown_time(chr);
  57.  
  58. }
  59.  
  60.  
  61.  
  62. function sleep(ms) {
  63.  
  64. return new Promise(r => setTimeout(r, ms));
  65.  
  66. }
  67.  
  68.  
  69.  
  70. async function autoPlay(finish) {
  71.  
  72. const chrs = getTargetCharacters();
  73.  
  74. for (let i = 0; i < chrs.length - (!finish); ++i) {
  75.  
  76. const c = chrs[i];
  77.  
  78. recordKey(c);
  79.  
  80. //console.log(c, c.charCodeAt());
  81.  
  82. await sleep(Math.random() * (maxDelay - minDelay) + minDelay);
  83.  
  84. }
  85.  
  86. }
  87.  
  88.  
  89.  
  90. // ############################################################################################################
  91.  
  92. // old utilities
  93.  
  94. // ############################################################################################################
  95.  
  96.  
  97.  
  98.  
  99.  
  100. // /**
  101.  
  102. // * @see https://stackoverflow.com/questions/8942678/keyboardevent-in-chrome-keycode-is-0/12522752#12522752
  103.  
  104. // */
  105.  
  106. // function simulateKey(chr, el) {
  107.  
  108. // _simulateKey(chr, 'keydown', el);
  109.  
  110. // _simulateKey(chr, 'keypress', el);
  111.  
  112. // }
  113.  
  114. // function _simulateKey(chr, type, el) {
  115.  
  116. // var eventObj = document.createEventObject ?
  117.  
  118. // document.createEventObject() : document.createEvent("Events");
  119.  
  120.  
  121.  
  122. // if (eventObj.initEvent) {
  123.  
  124. // eventObj.initEvent(type || "keydown", true, true);
  125.  
  126. // }
  127.  
  128.  
  129.  
  130. // let keyCode = chr.charCodeAt(0);
  131.  
  132.  
  133.  
  134. // eventObj.key = chr[0];
  135.  
  136. // eventObj.keyCode = keyCode;
  137.  
  138. // eventObj.which = keyCode;
  139.  
  140. // eventObj.isTrusted = true;
  141.  
  142.  
  143.  
  144. // el = el || document.body;
  145.  
  146.  
  147.  
  148. // // console.log(keyCode, eventObj);
  149.  
  150.  
  151.  
  152. // el.dispatchEvent ? el.dispatchEvent(eventObj) : el.fireEvent("onkeydown", eventObj);
  153.  
  154. // }
  155.  
  156.  
  157.  
  158. // document.addEventListener("keydown", function (e) {
  159.  
  160. // console.log('down', e);
  161.  
  162. // });
  163.  
  164. // document.addEventListener("keypress", function (e) {
  165.  
  166. // console.log('press', e);
  167.  
  168. // });
  169.  
  170. //$($('.menu-btn')[0].parentNode).prepend('<button onclick=\'simulateKeyPress("c")\'>sim</button>');
  171.  
  172. // simulateKey('a', $('input')[0]);
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180. // ############################################################################################################
  181.  
  182. // go!
  183.  
  184. // ############################################################################################################
  185.  
  186.  
  187.  
  188. autoPlay(true);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement