Greasy Fork is available in English.

xjyxjyw

storehouse

Script này sẽ không được không được cài đặt trực tiếp. Nó là một thư viện cho các script khác để bao gồm các chỉ thị meta // @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)
        }


    }




})();