济南专业技术人员继续教育—公需课

公需科目辅助|自动答题|自动切换下一小节

安裝腳本?
作者推薦腳本

您可能也會喜歡 暴力猴控制台美化

安裝腳本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name        济南专业技术人员继续教育—公需课
// @namespace   Violentmonkey Scripts
// @match       *://*.ghlearning.com/*
// @match       http://221.214.69.254:9091/*
// @grant       none
// @version     0.1.10
// @author      aliha
// @description 公需科目辅助|自动答题|自动切换下一小节
// @license      GPL-3.0
// @run-at       document-end
// @icon         data:image/png;base64,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
// ==/UserScript==
(function () {

    // 定义一些设置变量
    const NEXT_SUBMIT_DEALY = 6;    // 尝试错误后下一次提交间隔秒,目前测试6秒刚好,不然会在弹窗出现之前往下执行,跳过一些答案选项组合
    const SUBMIT_DELAY = 1;         // 填写完成答案后,提交间隔
    const FIRST_RUN_DELAY = 15;     // 首次运行延迟15秒,防止在player没加载前运行出错
    const RUN_INTERVAL = 180;       // 脚本运行间隔,默认180秒
    const PLAY_TYPE = 1;            // 播放方式,1-方式一;2-方式二


    // 延迟s秒
    function delay(s) {
        return new Promise(resolve => setTimeout(resolve, s * 1000));
    }

    // 检测答题元素,获取选项
    function getItems() {
        if (document.querySelector(".pv-ask-modal")) {
            let qusCard = document.querySelector(".pv-ask-modal")
            let inputs = qusCard.querySelectorAll("input")
            return inputs
        }

        return null
    }

    // 生成数组所有的穷举组合并剔除空数组
    function generateCombinations(arr) {
        const combinations = [
            []
        ];

        // 遍历数组元素
        for (let i = 0; i < arr.length; i++) {
            const currentLength = combinations.length;

            // 遍历当前已生成的组合
            for (let j = 0; j < currentLength; j++) {
                const currentCombination = combinations[j];

                // 生成新的组合,包含当前数组元素
                const newCombination = currentCombination.concat(arr[i]);

                // 如果组合不为空,则将新组合添加到二维数组中
                if (newCombination.length > 0) {
                    combinations.push(newCombination);
                }
            }
        }

        // 剔除空数组
        return combinations.filter(combination => combination.length > 1);
    }

    // 判断是否暂停
    function isPuased() {
        var elements = document.getElementsByClassName("pv-icon-btn-play");
        for (var i = 0; i < elements.length; i++) {
            var element = elements[i];
            var computedStyle = window.getComputedStyle(element);
            if (computedStyle.getPropertyValue("display") === "block") {
                // console.log(element);
                return true;
            } else {
                return false;
            }
        }
    }

    // 获取进度,自动播放
    function getProcess() {
        let jindu = document.querySelector("#a span[du-html=sumschedule]"); // 获取总进度
        if (jindu) {

            if (jindu.innerText === "100.00") {
                console.info("本课程已完成");
                return 0;
            } else {
                // 获取当前进度,如果播放完毕或者未开始,点击播放按钮开始播放,(因为系统播放完一节会自动切换下一节,所以光点击播放按钮就可以了,不用手动切换小节)
                let dangqian = document.querySelector(".videoLi.active");
                let ispaused = isPuased();
                if (dangqian.innerText.match(/[0-9]+%/)[0] == "100%" || dangqian.innerText.match(/[0-9]+%/)[0] == "0%" || ispaused) {
                    console.info("本课程未完成,继续播放");

                    if (PLAY_TYPE === 1) {
                        console.info("使用方式一自动播放")
                        const pauseBtn = document.querySelector('button[type="button"].pv-playpause.pv-iconfont.pv-icon-btn-play');
                        if (pauseBtn) {
                            pauseBtn.click();
                        }

                    } else if (PLAY_TYPE === 2) {
                        console.info("使用方式二自动播放")
                        const video = document.getElementById('video');
                        video.muted = true;
                        video.play()
                            .then(() => {
                                console.info("自动播放成功");
                            })
                            .catch(error => {
                                console.error('自动播放失败,请手动点击播放:', error);
                            });
                    }
                }
            }
        }
    }

    // 挨个尝试,检测到回答错误继续,检测到回答正确跳出,同时清空答案
    async function answer(res_ls) {

        for (let i = res_ls.length - 1; i != 0; i--) {
            await delay(NEXT_SUBMIT_DEALY)

            let inputs = getItems()
            if (inputs) {
                console.log(`尝试第${res_ls.length - i}次作答`)
                // console.log(...res_ls[i])
                for (let j = 0; j < res_ls[i].length; j++) {
                    inputs[res_ls[i][j]].checked = true;
                }

                // 提交答案
                let button = document.querySelector('button.pv-ask-submit[data-type="pvSubmit"]');
                await delay(SUBMIT_DELAY)
                if (button) {
                    button.click()
                }
            }else{
                console.log("回答正确");
                break;
            }
        }
    }

    // 主函数
    async function main() {
        console.info("开始答题")

        await getProcess()

        // 自动答题
        if (getItems()) {
            let inputs = getItems()
            const array = Array.from({
                length: inputs.length
            }, (_, index) => index);
            let num = generateCombinations(array)
            await answer(num)
            console.info("答题脚本执行完毕")
        } else {
            console.info(`未检测到答题卡,${RUN_INTERVAL}秒后再次运行`)
        }
    }


    setTimeout(main, FIRST_RUN_DELAY*1000);
    setInterval(main, RUN_INTERVAL*1000);
})();