自动点击继续学习

当出现继续学习提示时,自动点击确定按钮

// ==UserScript==
// @name         自动点击继续学习
// @namespace    http://tampermonkey.net/
// @version      0.9
// @description  当出现继续学习提示时,自动点击确定按钮
// @author       You
// @match        https://cws.edu-edu.com/*
// @grant        none
// @license      MTI
// ==/UserScript==

(function (){
    // 定义一个函数来检查并点击确定按钮
    function checkAndClick() {
        // 找到通知按钮
        const confirmDialog = document.querySelector('div.h5-alert-modal.v-transfer-dom')
        const warpDiv = confirmDialog.querySelector('div.ivu-modal-wrap')
        // 显示确定面板后,关闭
        if (!warpDiv.classList.contains('ivu-modal-hidden')) {
            // 查找确定按钮
            const confirmButton = confirmDialog.querySelector('button.btn.ivu-btn.ivu-btn-primary');
            if (confirmButton) {
                confirmButton.click();
            }
        }
    }

    // 检查算数验证
    function checkQuestion() {
        // 弹出面板开始答题
        const modal = document.querySelector('div.ivu-modal-wrap');
        if (modal.classList.contains('ivu-modal-hidden')) {
            return;
        }

        const question = document.querySelector('div.ivu-modal-header-inner');
        // 判断是否有答题
        const questionTitle = question.innerText;
        if (questionTitle == '学习过程确认') {
            const questionInfo = document.querySelector('div.questionBox');
            if (questionInfo) {
                // 获取题目 7 - 3 = ?
                const questText = questionInfo.innerText;
                // 计算答案
                const result = calc(questText);
                if (result == null) {
                    return;
                }

                // 获取确定按钮
                const btn = questionInfo.parentElement.querySelector('button.ivu-btn');

                // 获取答案选项
                const questBox = document.querySelector('div.ivu-radio-group');
                if (questBox) {
                    const checks = questBox.children;
                    for (let i = 0; i < checks.length; i++){
                        const checkText = checks[i].innerText;
                        const checkNum = parseInt(checkText, 10);
                        // 碰到正确答案
                        if (result == checkNum) {
                            checks[i].click();
                            btn.click();
                        }
                    }
                }
            }
        }
    }

    // 计算字符串的算式
    function calc(mathStr) {
        let result = null;
        const match = mathStr.match(/^(\d+)\s*([+\-*/])\s*(\d+)/);
        if (match) {
            const num1 = parseInt(match[1], 10);
            const op = match[2];
            const num2 = parseInt(match[3], 10);

            switch (op) {
                case '+':
                    result = num1 + num2;
                    break;
                case '-':
                    result = num1 - num2;
                    break;
                case '*':
                    result = num1 * num2;
                    break;
                case '/':
                    result = num1 / num2;
                    break;
            }
        }
        return parseInt(result, 10);
    }

    // 播放下一个视频
    function playNext() {
        // 获取播放列表
        const playlist = document.querySelectorAll('div.video-box-left div.ivu-tree ul.ivu-tree-children');
        for (let i = 0; i < playlist.length; i++) {
            // 获取视频的播放进度
            let v = playlist[i].querySelector('span.videoRatio').innerText;
            if (v != '/ 已学100%') {
                let l = playlist[i].querySelector('span.render-content__video');
                l.click();
                return;
            }
        }
        console.log('视频播放完了');
    }

    function playVideo() {
        // 当视频放完后,自动进行下一个
        const video = document.querySelector('div#J_prismPlayer video');
        if (video) {
            if (video.paused && !video.ended) {
                console.log('播放视频');
                video.play();
                video.muted = true;
            }

            if (video.paused && video.ended) {
                console.log('播放下一个视频');
                playNext();
            }
        }


    }

    console.log('开始监控网页');
    // 每隔一段时间检查一次
    const intervalId = setInterval(checkAndClick, 1000);
    const intervalId2 = setInterval(checkQuestion, 1000);
    const intervalId3 = setInterval(playVideo, 5000);

})();