Greasy Fork

Greasy Fork is available in English.

自动点击继续学习

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

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

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

})();