auto play zybooks animations
zybooks.user.js edited
101 lines 3.4 kB view raw
1// ==UserScript== 2// @name zyBooks Autoplay animations 3// @version 0.3 4// @description One click to speed up the boring parts 5// @author Evanito 6// @match https://learn.zybooks.com/zybook/* 7// @namespace https://github.com/Evanito/zyBAuto 8// @run-at document-idle 9// ==/UserScript== 10// TO USE: Click Autocomplete! on a zyBooks page <----- 11 12// ==== SETTINGS ==== 13var autoRun = true; 14// == END SETTINGS == 15 16// Do not edit below this line! 17// ========================================== 18(function() { 19 console.log(timeString() + " [zBA] Begin zyBooks Autocomplete by Evanito."); 20 if (autoRun) { 21 run(); 22 } else { 23 (function repeat() { 24 try { 25 document.getElementsByClassName('right-buttons')[0].innerHTML = '<button id="zbaButton" type="button">Autocomplete!</button>' + document.getElementsByClassName('right-buttons')[0].innerHTML; 26 document.getElementById("zbaButton").addEventListener ("click", zBAStartButton, false); 27 } catch (error) { 28 setTimeout(() => { 29 repeat() 30 }, 1000) 31 }})() 32 } 33})(); 34 35 36function zBAStartButton (zEvent) { 37 console.log(timeString() + " [zBA] Running..."); 38 run(); 39} 40 41function run() { 42 //click_speeds(); 43 click_plays(); 44 click_starts(); 45 click_2x_speeds(); 46 setTimeout(function(){ run(); }, 1000); 47} 48 49function click_speeds() { // Checks speed boxes. Doesn't work but isn't a necessary feature. 50 var speed = document.getElementsByClassName("speed-control"); 51 for (var i = 0; i < speed.length; i++) { 52 if ((speed[i].innerHTML).includes("false")) { 53 //speed[i].click(); 54 speed[i].getElementsByClassName("zb-checkbox")[0].innerHTML = "\n<input type=\"checkbox\" value=\"true\" aria-label=\"2x speed\">\n<label aria-hidden=\"true\">2x speed</label>\n" 55 console.log(timeString() + " Checked a speed box."); 56 } 57 } 58} 59 60function click_plays() { // Clicks all Play buttons 61 var plays = document.getElementsByClassName("play-button"); 62 for (var i = 0; i < plays.length; i++) { 63 if (!(plays[i].classList).contains("rotate-180")){ 64 plays[i].click(); 65 console.log(timeString() + " Clicked a play button."); 66 } 67 } 68} 69 70function click_starts() { // Clicks all Start buttons 71 var starts = document.getElementsByClassName("start-button"); 72 for (var i = 0; i < starts.length; i++) { 73 starts[i].click(); 74 console.log(timeString() + " Clicked a start button."); 75 } 76} 77 78function click_2x_speeds() { 79 var speeds = document.getElementsByClassName("speed-control"); 80 for (var i = 0; i < speeds.length; i++) { 81 var inputs = speeds[i].getElementsByTagName("input"); 82 if (inputs.length > 0) { 83 var input = inputs[0]; 84 if (!input.checked) { // Only click if not already checked 85 input.click(); 86 console.log(new Date().toLocaleTimeString() + " Clicked a speed button."); 87 } else { 88 console.log(new Date().toLocaleTimeString() + " Speed button already selected."); 89 } 90 } 91 } 92} 93 94function timeString() { 95 let d = new Date(); 96 let h = (d.getHours()<10?'0':'') + d.getHours(); 97 let m = (d.getMinutes()<10?'0':'') + d.getMinutes(); 98 let s = (d.getSeconds()<10?'0':'') + d.getSeconds(); 99 let dstr = h + ':' + m + ":" + s; 100 return dstr; 101}