// ==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;
}