// ==UserScript== // @name zyBooks Autoplay animations // @version 0.3 // @description One click to speed up the boring parts // @author Evanito // @match https://learn.zybooks.com/zybook/* // @namespace https://github.com/Evanito/zyBAuto // @run-at document-idle // ==/UserScript== // TO USE: Click Autocomplete! on a zyBooks page <----- // ==== SETTINGS ==== var autoRun = true; // == END SETTINGS == // Do not edit below this line! // ========================================== (function() { console.log(timeString() + " [zBA] Begin zyBooks Autocomplete by Evanito."); if (autoRun) { run(); } else { (function repeat() { try { document.getElementsByClassName('right-buttons')[0].innerHTML = '' + document.getElementsByClassName('right-buttons')[0].innerHTML; document.getElementById("zbaButton").addEventListener ("click", zBAStartButton, false); } catch (error) { setTimeout(() => { repeat() }, 1000) }})() } })(); function zBAStartButton (zEvent) { console.log(timeString() + " [zBA] Running..."); run(); } function run() { //click_speeds(); click_plays(); click_starts(); click_2x_speeds(); setTimeout(function(){ run(); }, 1000); } function click_speeds() { // Checks speed boxes. Doesn't work but isn't a necessary feature. var speed = document.getElementsByClassName("speed-control"); for (var i = 0; i < speed.length; i++) { if ((speed[i].innerHTML).includes("false")) { //speed[i].click(); speed[i].getElementsByClassName("zb-checkbox")[0].innerHTML = "\n\n\n" console.log(timeString() + " Checked a speed box."); } } } function click_plays() { // Clicks all Play buttons var plays = document.getElementsByClassName("play-button"); for (var i = 0; i < plays.length; i++) { if (!(plays[i].classList).contains("rotate-180")){ plays[i].click(); console.log(timeString() + " Clicked a play button."); } } } function click_starts() { // Clicks all Start buttons var starts = document.getElementsByClassName("start-button"); for (var i = 0; i < starts.length; i++) { starts[i].click(); console.log(timeString() + " Clicked a start button."); } } function click_2x_speeds() { var speeds = document.getElementsByClassName("speed-control"); for (var i = 0; i < speeds.length; i++) { var inputs = speeds[i].getElementsByTagName("input"); if (inputs.length > 0) { var input = inputs[0]; if (!input.checked) { // Only click if not already checked input.click(); console.log(new Date().toLocaleTimeString() + " Clicked a speed button."); } else { console.log(new Date().toLocaleTimeString() + " Speed button already selected."); } } } } function timeString() { let d = new Date(); let h = (d.getHours()<10?'0':'') + d.getHours(); let m = (d.getMinutes()<10?'0':'') + d.getMinutes(); let s = (d.getSeconds()<10?'0':'') + d.getSeconds(); let dstr = h + ':' + m + ":" + s; return dstr; }