Spoc Helper

快速完成国家安全系列课程。刷课有风险,请自行承担。

// ==UserScript==
// @name         Spoc Helper
// @namespace    Spoc Helper
// @version      1.0.0
// @description  快速完成国家安全系列课程。刷课有风险,请自行承担。
// @author       SingleDog
// @license      GPL-3.0-or-later
// @match        https://spoc.buaa.edu.cn/spoc/moocxsxx/queryAllZjByKcdm.do
// @grant        none
// ==/UserScript==

(function () {
    'use strict';
    // 在iframe加载完成后执行操作
    var videoStr, str1, spdm;
    var iframe;
    var flagPara = 0;
    document.getElementById('zwshow').onload = function () {
        // 获取iframe元素
        iframe = document.getElementById('zwshow');

        // 访问iframe中的文档
        var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;

        // 在iframe文档中查找id为'sp'的元素
        var para = iframeDocument.getElementById('myVideo_2');

        if (para) {
            var paraValue = para.onended;
            paraValue = paraValue.toString();
            // var startIndex = paraValue.indexOf('//');
            var regex = /'([^']+)'/g; // 匹配单引号中的内容

            var matches = paraValue.match(regex);

            videoStr = matches[0].slice(1, -1);
            str1 = matches[1].slice(1, -1);
            spdm = matches[2].slice(1, -1);
            flagPara = 1;
            // var residualLen='https://doc.spoc.buaa.edu.cn:19012//'.length;

            // 找到双斜杠后的内容
            // var startIndex = paraValue.indexOf('//');
            // var contentAfterDoubleSlash = paraValue.substring(startIndex + 2); // 加 2 是为了排除双斜杠的长度

            // console.log('双斜杠后的内容:', contentAfterDoubleSlash);

            //                 var videoStr = paraValue.substr(residualLen) // 加 2 是为了排除双斜杠的长度

            //                 console.log('VideoStr:', videoStr);
        }
        else {
            console.log('Parameters not found');
        }
    };

    // 选择具有特定ID的隐藏输入元素
    var hiddenInputElement = document.querySelector('input[type="hidden"][id="playZjdm"]');
    var hiddenKcdm = document.querySelector('input[type="hidden"][id="kcdm"]');

    // 检查是否成功选择了元素
    if (!hiddenInputElement || !hiddenKcdm) {
        console.error('not Found kcdm');
    }
    console.log("kcdm:", hiddenKcdm.value);
    console.log("zjdm:", hiddenInputElement.value);


    console.log('Waiting...');
    checkFlagAndProcess();

    function checkFlagAndProcess() {
        if (flagPara) {
            console.log("videoStr:", videoStr);
            console.log("str1:", str1);
            console.log("spdm:", spdm);
            console.log('start Processing...');
            setTimeout(() => {
                myFunction(videoStr, str1, iframe, spdm);
            }, 3000);
            console.log('Process Completed.');
            alert('如果未显示已完成,请等待10秒再刷新一次。');
        } else {
            setTimeout(checkFlagAndProcess, 100); // 每隔100毫秒检查一次flagPara
        }
    }
    function myFunction(streamName, str1, obj, spdm) {
        var zt = $(obj).parent().parent().children(":first").html();
        if (zt == "已完成") {
            return false;
        }
        var kcdm = hiddenKcdm.value;
        var zjdm = hiddenInputElement.value;
        //var str = '';
        var index = streamName.indexOf("\/");
        var str = streamName.substring(index + 1, streamName.length);
        var url = "/spoc/moocxsxx/updKcspSqzt.do";
        $.ajax({
            type: "post",
            data: { 'kcdm': kcdm, 'zjdm': zjdm, 'streamName': str, 'spdm': spdm },
            url: url,
            success: function (data) {
                if (data == "1") {
                    $('#sp_index_' + str1).attr('class', 'action');
                    $('#sp_index_' + str1).text("已完成");
                } else {
                    alert("观看视频失败!!!");
                    // myFunction(streamName,str1);
                }
            }
        });
    }

})();