Greasy Fork is available in English.

xjyxjyw

storehouse

Tätä skriptiä ei tulisi asentaa suoraan. Se on kirjasto muita skriptejä varten sisällytettäväksi metadirektiivillä // @require https://update.greasyfork.org/scripts/504684/1432776/xjyxjyw.js.

(function() {
    'use strict';
    /* globals jQuery, $, waitForKeyElements */

    unsafeWindow.GM_xmlhttpRequest = GM_xmlhttpRequest;
    unsafeWindow.GM_getValue = GM_getValue;
    unsafeWindow.GM_deleteValue = GM_deleteValue;

    // 检查当前窗口是否为顶层窗口
    if (window.self !== window.top) {
        return; // 如果不是顶层窗口,则不执行脚本
    }

    var ddds3 = null;
    var addMessage = null;

    let btn1=GM_registerMenuCommand ("\u4f5c\u8005\uff1a\ud83c\udf49\u897f\u74dc\u8981\u5927\u7684\ud83c\udf49", function(){
        confirm("Hello,\u611f\u8c22\u4f7f\u7528\ud83c\udf49\u897f\u74dc\u5237\u8bfe\u52a9\u624b\ud83c\udf49\uff01\u591a\u591a\u53cd\u9988\u54e6");
        GM_unregisterMenuCommand(btn1);
    }, "");
    let btn2=GM_registerMenuCommand ("\u4ed8\u8d39\u5185\u5bb9", function(){
        alert("\u9650\u65f6\u514d\u8d39\uff0c\u5168\u529b\u5f00\u53d1\u4e2d...");
    }, "p");

    var chapterCount = 0;
    var chapterId = 0;
    var sectionCount = 0;
    var sectionId = 1;
    var studyTime = 0;
    var totalTime = 0;
    var elementsArray = 0;
    var timeStr = null;
    var search = null;
    var searchVD = null;
    var searchFC = null;
    var coursIndex = 0;
    var allCours = 0;


    function saveHomeUrl(){
        let homeUrl = window.location.href;
        GM_setValue('homeUrl',homeUrl);
    }

    function getHomeUrl(){
        return GM_getValue('homeUrl');
    }

    function searchChapter(){
        if(chapterId >= chapterCount){
            addMessage("所有章节学习完成");
        }
        else{
            if(document.getElementsByTagName('tbody')[0].children[chapterId].children[4].innerText === '进入学习 已学习'){
                addMessage("第"+(chapterId+1)+"章节学习完成");
                chapterId++;
                searchChapter();
                return;
            }
            // getExamPage(chapterId);
            test(chapterId);
        }
    }

    var elements = null;

    function getAnswer(){
        let oldData = GM_getValue('answerList');

        if(Array.isArray(oldData)){
            return oldData;
        }

        return [];
    }

    function getAnswerByName(xgExamName){
        if(xgExamName === '' || xgExamName === null || xgExamName === undefined){
            alert("考题id不可为空!");
            return false;
        }

        let data = getAnswer();

        let result = data.reduce((accumulator,obj) => {
            if(xgExamName in obj){
                return obj[xgExamName];
            }
            return accumulator;
        },undefined);

        if(!result){
            alert('没有此考试数据!');
            return 'A';
        }
        return result;
    }

    function saveAnswer(name,value){
        let answer = getAnswer();

        let existIndex = answer.findIndex(obj => name in obj);

        if (existIndex !== -1) {
            // 更新值为['1','2','3']
            answer[existIndex][name] = value;
        } else {
            // push新集合
            let tempMap = {};
            tempMap[name] = value;
            answer.push(tempMap);
        }

        GM_setValue('answerList',answer);
    }


    const panel = function(){
        var container = $('<div id="gm-interface"></div>');
        var titleBar = $('<div id="gm-title-bar">\ud83c\udf49\u897f\u74dc\u7f51\u8bfe\u52a9\u624b\ud83c\udf49</div>');
        var minimizeButton = $('<div title="\u6536\u8d77" style="display:black"><svg id="gm-minimize-button" class="bi bi-dash-square" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M14 1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"/><path fill-rule="evenodd" d="M3.5 8a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 0 1H4a.5.5 0 0 1-.5-.5z"/></svg></div>');
        var maxButton = $('<div title="\u5c55\u5f00" style="display:none"><svg id="gm-minimize-button" class="bi bi-plus-square" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8 3.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5H4a.5.5 0 0 1 0-1h3.5V4a.5.5 0 0 1 .5-.5z"/><path fill-rule="evenodd" d="M7.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H8.5V12a.5.5 0 0 1-1 0V8z"/><path fill-rule="evenodd" d="M14 1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"/></svg></div>');
        var content = $('<div id="gm-content"></div>');
        var tips = $('<div class="tip" style="display:none;">\u957f\u6309\u62d6\u62fd</div>');
        var scrollText = $('<marquee>').text('\u4e7e\u5764\u672a\u5b9a\uff0c\u4f60\u6211\u7686\u662f\u9ed1\u9a6c----\u4f5c\u8005\uff1a\u897f\u74dc\u8981\u5927\u7684\uff08\u611f\u8c22\u652f\u6301\uff01\uff09').css({
            'position': 'absolute',
            'top': '15%',
            'left': '50%',
            'transform': 'translate(-50%, -50%)',
            'width': '90%',
            'height': '25px',
            'font-size': '16px',
            'line-height': '1.5',
            'white-space': 'nowrap'
        }).appendTo(content);
        // var ddds1 = $('<div style="position: absolute;top: 85%;width:90%;height:10%;padding: 3px;background: #ffedf0;border-radius: 5px;">\u70b9\u51fb\u542f\u52a8\uff1a<button id="beginExam" style="position: absolute;width:48px;right: 10px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">开始答题</button></div>');
        // var ddds5 = $('<div style="position: absolute;top: 35%;width:90%;height:10%;padding: 3px;background: #ffedf0;border-radius: 5px;">\u70b9\u51fb\u542f\u52a8\uff1a<button id="stopxg" style="position: absolute;width:48px;right: 10px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">暂停</button></div>');
        //var ddds2 = $('<div style="position: absolute;top: 85%;width:90%;height:10%;padding: 3px;background: #ffedf0;border-radius: 5px;">\u89c6\u9891\u500d\u901f\uff1a<button id="speedxg" style="position: absolute;width:48px;right: 10px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">X16</button></div>');
        ddds3 = $('<div id="message-container" style="position: absolute;display: grid;align-content: center;justify-content: center;top: 20%;width:94%;height:62%;max-height:62%;overflow-y:auto;padding: 3px;background: #ffffff;border-radius: 5px;"></div>');
        var ddds4 = $('<div style="position: absolute;top: 85%;width:94%;height:10%;padding: 3px;background: #ffedf0;border-radius: 5px;"><button id="toExam" style="display: none;position: absolute;width:69px;right: 313px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">去考试</button><button id="beginExam" style="display: none;position: absolute;width:98px;right: 213px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">开始答题</button><a href="http://8.130.116.135/?article/" style="position: absolute;right: 10px;text-decoration: none;color: pink;">\u003e\u003e\u003e\u8054\u7cfb\u003a\u0031\u0039\u0030\u0038\u0032\u0034\u0035\u0033\u0030\u0032\u0040\u0071\u0071\u002e\u0063\u006f\u006d</a></div>');

        container.append(titleBar);
        // content.append(ddds1);
        // content.append(ddds5);
        //content.append(ddds2);
        content.append(ddds3);
        content.append(ddds4);
        container.append(content);
        container.append(maxButton);
        container.append(minimizeButton);
        $('body').append(container);
        $('body').append(tips);

        GM_addStyle(`
        #gm-interface {
            position: fixed;
            top: 50%;
            left: 50%;
            border-radius: 5px;
            background-color: white;
            z-index: 9999;
        }

        #gm-title-bar {
            padding: 5px;
            background-color: #ffc0c0;
            border: 1px solid black;
            border-radius: 5px;
            cursor: grab;
        }

        #gm-minimize-button {
            position: absolute;
            top: 2px;
            right: 2px;
            width: 30px;
            height: 30px;
            border-radius: 5px;
            padding: 0;
            font-weight: bold;
            background-color: #ffc0c0;
            cursor: pointer;
        }

        #gm-content {
            padding: 10px;
            border: 1px solid black;
            border-radius: 2px 2px 5px 5px;
            background-color: #ffe5e5;
            width: 400px;
            height: 300px;
        }
        .tip{
            font-family: "黑体";
            color: black;
            -webkit-transform: scale(0.8);
            position:absolute;
            padding: 6px 5px;
            background-color:#ffe8f0;
            border-radius: 4px;
            z-index: 9999;
        }
    `);

        titleBar.on('mousemove',function(e){
            tips.attr("style", "display:black;");
            var top = e.pageY+5;
            var left = e.pageX+5;
            tips.css({
                'top' : top + 'px',
                'left': left+ 'px'
            });
        });

        titleBar.on('mouseout',function(){
            tips.hide();
        });

        titleBar.on('mousedown', function(e) {
            var startX = e.pageX - container.offset().left + window.scrollX;
            var startY = e.pageY - container.offset().top + window.scrollY;

            $(document).on('mousemove', function(e) {
                e.preventDefault();
                var newX = e.pageX - startX;
                var newY = e.pageY - startY;
                container.css({ left: newX, top: newY });
            });

            $(document).on('mouseup', function() {
                $(document).off('mousemove');
                $(document).off('mouseup');
            });
        });


        minimizeButton.on('click', function() {
            minimizeButton.attr("style", "display:none;");
            maxButton.attr("style", "display:black;");
            content.slideToggle(0);
            container.css({ width: 200 });
        });

        maxButton.on('click', function() {
            minimizeButton.attr("style", "display:black;");
            maxButton.attr("style", "display:none;");
            content.slideToggle(0);
            container.css({ width: 422 });
        });

        ddds3.on('mousewheel', function(event) {
            event.preventDefault();
            var scrollTop = ddds3.scrollTop();
            ddds3.scrollTop(scrollTop + event.originalEvent.deltaY);
        });

        $("#beginExam").on('click',function(){
            beginExam();
        });

        $("#toExam").on('click',function(){
            window.open("https://se.mhtall.com/cuggw/rs/olex_index",'_blank');
        });

        addMessage = function(message){
            if (ddds3.children().length >= 15) {
                ddds3.children().first().remove();
            }
            var messageElement = $('<div class="message"></div>').text(message).css({
                'margin-bottom': '10px'
            }).appendTo(ddds3);
        }

    }


    function tipsWin(){
        return new Promise((resolve, reject) => {

            var popup = document.createElement('div');
            popup.id = 'customPopup';
            popup.style.display = 'none';
            popup.style.position = 'fixed';
            popup.style.top = '50%';
            popup.style.left = '50%';
            popup.style.transform = 'translate(-50%, -50%)';
            popup.style.backgroundColor = '#fff';
            popup.style.padding = '20px';
            popup.style.border = '1px solid #ccc';
            popup.style.boxShadow = '0 2px 4px rgba(0, 0, 0, 0.2)';
            popup.style.zIndex = '9999';
            popup.innerHTML = `
        <p id="timeCount">5秒后执行脚本?</p>
        <button id="confirmButton">是</button>
        <button id="cancelButton">否</button>
       `;

            document.body.appendChild(popup);

            var confirmButton = document.getElementById('confirmButton');
            var cancelButton = document.getElementById('cancelButton');
            var confirmed = false;
            let juNext = false;

            popup.style.display = 'block';

            confirmButton.addEventListener('click', function() {
                confirmed = true;
                closePopup();
                resolve(false);
            });

            cancelButton.addEventListener('click', function() {
                ddds3.children().remove();
                addMessage("刷新页面即可重启");
                addMessage("需要考试请点击“去考试”按钮,跳转后选择对应考试");
                confirmed = true;
                closePopup();
                resolve(true);
            });

            function ju(time){
                if(!confirmed){
                    if(time < 1){
                        popup.innerHTML = ` <p>时间到了! 脚本启动.</p>`;
                        setTimeout(function() {
                            closePopup();
                            resolve(false);
                            // setTimeout(function(){
                            //     // 手动启动定时器
                            //     startTimer();
                            //     window.open("https://jlufe.mhtall.com/jlufe/rs/roll_course");"_self"
                            //     window.close();
                            // },1000);
                        }, 1000);
                    }
                    document.getElementById('timeCount').innerText = time+'秒后执行脚本?'
                    setTimeout(function(){
                        ju(--time)
                    },1000);

                }
            }

            ju(5);

            function closePopup() {
                popup.style.display = 'none';
            }
        });

    }

    var wait = null;

    panel();
    // 手动启动定时器
    function startTimer() {
        wait = setInterval(function (){
            // ddds3.children().first().remove();
            if(window.location.href.split('?')[0] === 'http://www.xjyxjyw.com/member/hs_btszpx.do'){
                addMessage("课程详情");
                chapterCount = document.getElementsByTagName('tbody')[0].childElementCount;
                searchChapter();
            }
            else{
                tipsWin().then((result) => {
                    addMessage("前往课程详情页");
                });
            }
            clearInterval(wait);
        }, 100);
    }

    function test(cid){
        let courseId = document.getElementsByTagName('tbody')[0].children[cid].getElementsByTagName('a')[1].href.split('=')[1];
        GM_xmlhttpRequest({
            url:'http://www.xjyxjyw.com/member/leyiexam_result.do',
            method: "POST",
            Cookie: document.cookie + '',
            data: 'backurl=&leyiQuestion.data='+'[{"name":"qab1e1a64d9d911ee89326c92bf3bb305","value":"D"},{"name":"qab19ec84d9d911ee89326c92bf3bb305","value":"D"},{"name":"qab196a29d9d911ee89326c92bf3bb305","value":"E"},{"name":"qab1a21b4d9d911ee89326c92bf3bb305","value":"B"},{"name":"qab191f23d9d911ee89326c92bf3bb305","value":"A"}]'+'&leyiQuestion.courseId='+courseId,
            headers: {
                "content-type": "application/x-www-form-urlencoded",
                "Referer": "http://www.xjyxjyw.com/member/leyiexam_quelist.do?leyiQuestion.courseId="+courseId,
            },
            onload: function(response) {
                try{
                    var parser = new DOMParser();
                    var htmlDoc = parser.parseFromString(response.responseText, 'text/html');
                    var targetElement1 = htmlDoc.getElementsByClassName('wen')[0];
                    var targetElement2 = targetElement1.getElementsByClassName('h4');
                    console.log(targetElement1);
                    let ju = 1;
                    for(let i=0;i<targetElement2.length;i++){
                        let statusLength = targetElement2[i].innerText.split(':').length;
                        console.log('statusLength'+statusLength);
                        let statusStr = targetElement2[i].innerText.split(':')[statusLength-1];
                        console.log('statusStr'+statusStr);
                    }

                    setTimeout(function(){
                        console.log('作答完成');
                        addMessage("第"+(chapterId+1)+"章节作答完成");
                        chapterId++;
                        searchChapter();
                    },398);
                }catch(e){
                    console.log('无答案');
                }
            }
        });
    }

    function getExamPage(cid){
        let leyidata = [];
        let courseId = document.getElementsByTagName('tbody')[0].children[cid].getElementsByTagName('a')[1].href.split('=')[1];
        GM_xmlhttpRequest({
            url:'http://www.xjyxjyw.com/member/leyiexam_quelist.do?leyiQuestion.courseId='+courseId,
            method: "POST",
            Cookie: document.cookie + '',
            headers: {
                "content-type": "application/x-www-form-urlencoded",
                "Referer": "http://www.xjyxjyw.com/member/hs_play3.do?id="+courseId,
            },
            onload: function(response) {
                try{
                    var parser = new DOMParser();
                    var htmlDoc = parser.parseFromString(response.responseText, 'text/html');
                    var targetElement1 = htmlDoc.querySelector("#form1").getElementsByClassName('wen')[0];
                    var questionCount = targetElement1.getElementsByTagName('input').length;
                    console.log(targetElement1);
                    for(let i=0;i<questionCount;i+=5){
                        let tempMap = {};
                        let qid = targetElement1.getElementsByTagName('input')[i].id
                        tempMap['name'] = qid;
                        tempMap['value'] = getAnswerByName(qid);
                        leyidata.push(tempMap);
                        console.log(leyidata);
                    }
                    setTimeout(function(){
                        addMessage('获取考卷完成');
                        answerPost(cid,leyidata,0)
                    },500);
                }catch(e){
                    alert('考卷获取失败'+courseId);
                }
            }
        });
    }

    function answerPost(leyicourseId,leyidata,awIndex){
        // let leyidata = [
        //     {"name":"qab23d8eed9d911ee89326c92bf3bb305","value":"A"},
        //     {"name":"qab222fc0d9d911ee89326c92bf3bb305","value":"A"},
        //     {"name":"qab24393fd9d911ee89326c92bf3bb305","value":"A"},
        //     {"name":"qab217237d9d911ee89326c92bf3bb305","value":"A"},
        //     {"name":"qab1dd541d9d911ee89326c92bf3bb305","value":"A"}
        // ];
        // let leyicourseId = '205102020';
        GM_xmlhttpRequest({
            url:'http://www.xjyxjyw.com/member/leyiexam_result.do',
            method: "POST",
            Cookie: document.cookie + '',
            data: 'backurl=&leyiQuestion.data='+JSON.stringify(leyidata)+'&leyiQuestion.courseId='+leyicourseId,
            headers: {
                "content-type": "application/x-www-form-urlencoded",
                "Referer": "http://www.xjyxjyw.com/member/leyiexam_quelist.do?leyiQuestion.courseId="+leyicourseId,
            },
            onload: function(response) {
                try{
                    var parser = new DOMParser();
                    var htmlDoc = parser.parseFromString(response.responseText, 'text/html');
                    var targetElement1 = htmlDoc.getElementsByClassName('wen')[0];
                    var targetElement2 = targetElement1.getElementsByClassName('h4');
                    console.log(targetElement1);
                    let ju = 1;
                    for(let i=0;i<targetElement2.length;i++){
                        let statusLength = targetElement2[i].innerText.split(':').length;
                        console.log('statusLength'+statusLength);
                        let statusStr = targetElement2[i].innerText.split(':')[statusLength-1];
                        console.log('statusStr'+statusStr);
                        if(statusStr === '错误'){
                            switch(awIndex)
                            {
                                case 0:
                                    leyidata[i].value = 'B';
                                    console.log("修改B"+i);
                                    break;
                                case 1:
                                    leyidata[i].value = 'C';
                                    console.log("修改C"+i);
                                    break;
                                case 2:
                                    leyidata[i].value = 'D';
                                    console.log("修改D"+i);
                                    break;
                                case 3:
                                    leyidata[i].value = 'E';
                                    console.log("修改E"+i);
                                    break;
                                case 4:
                                    leyidata[i].value = 'F';
                                    console.log("修改F"+i);
                                    break;
                                case 5:
                                    leyidata[i].value = 'G';
                                    console.log("修改G"+i);
                                    break;
                            }
                        }
                        else{
                            ++ju;
                            saveAnswer(leyidata[i].name,leyidata[i].value);
                        }
                    }

                    setTimeout(function(){
                        if(ju <= targetElement2.length){
                            console.log(leyidata);
                            ju=1;
                            answerPost(leyicourseId,leyidata,++awIndex);
                        }
                        else{
                            console.log('作答完成');
                            console.log(leyidata);
                        }
                    },1500);
                }catch(e){
                    console.log('无答案');
                }
            }
        });
    }

    // 手动停止定时器
    function stopTimer() {
        clearInterval(wait);
    }

    startTimer();

    function reloadPage(){
        setInterval(function (){
            window.location.reload()
        },1000*60*33);
    }


    function beginExam(){
        console.log("开始答题");
        try{
            ksPage = document.querySelector("body > div.paper_body");
            let ksName = ksPage.children[0].innerText;
            quesionCount = ksPage.getElementsByClassName('item_li').length;
            let coursOB = findLC(ksName);

            if(!coursOB){
                addMessage(coursOB);
                addMessage("题库没有找到该课程");
                return;
            }
            else{
                learningCourseId = coursOB.learningCourseId;
                learningUrl = coursOB.learningUrl;
                console.log("找到learningCourseId",learningCourseId);
                console.log("找到learningUrl",learningUrl);
            }

            testP();


            examDing();
        }catch(e){
            addMessage("请前往考试页");
            console.log("异常",e)
        }


    }




})();