function continueLearn() { const continueButton = document.querySelector('body .person > .personal-classcenter iframe')?.contentDocument.querySelector('.layui-layer-content iframe')?.contentDocument.querySelector('button'); if (continueButton) { console.log("Click continue button!"); continueButton.click(); } else { console.log("Continue button not found!") } const playButton = document.querySelector('body .person > .personal-classcenter iframe')?.contentDocument.querySelector('.qplayer-play.qplayer-active'); if (playButton) { console.log("Start play."); playButton.click(); } else { console.log("Play button not found.") } } function getVideoSizeInMinutes() { console.log("Try to get video size...") const videoSize = document.querySelector('body .person > .personal-classcenter iframe')?.contentDocument.querySelector('.qplayer-totaltime')?.textContent console.log("Video size text: ", videoSize); if (!videoSize) { console.log("Use default video size: 60 minutes"); return 61; } const [minutes] = videoSize.split(":"); const length = Number.parseInt(minutes, 10) + 1; console.log("Video length: ", length); return length; } function startNextVideo() { const nextVideo = document.querySelector('li[style="cursor:pointer;background-color: #ccc5c5;"]+li') if (nextVideo) { console.log("Click on next video!") nextVideo.click(); return true; } return null; } function sleep(seconds) { return new Promise((resolve) => { setTimeout(() => { resolve() }, seconds) }) } function autoClickContinue() { setInterval(continueLearn, 5000) } async function run() { await sleep(5 * 1000); autoClickContinue(); while (true) { await sleep(5 * 1000); const size = getVideoSizeInMinutes(); await sleep(size * 60 * 1000); if (!startNextVideo()) { console.log("No next video found. Finish job.") break; } } } run();