2020年公需课:广东“十四五”经济社会发展趋势与战略重点【自动播放与答题】

打开视频播放页面后即可自动完成所有课程

As of 2020-04-18. See the latest version.

// ==UserScript==
// @name         2020年公需课:广东“十四五”经济社会发展趋势与战略重点【自动播放与答题】
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  打开视频播放页面后即可自动完成所有课程
// @author       砖瓦核弹头
// @match        http://cme2.91huayi.com/course_ware/course_ware_cc.aspx?*
// @match        http://cme2.91huayi.com/pages/exam.aspx?*
// @match        http://cme2.91huayi.com/pages/exam_result.aspx?*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    var keyTest = "jixujiaoyuTest"+vid;
    var keyResult = "jixujiaoyuResult"+vid;
    var urlInfos = window.location.href.split("/");
    var urlTip = urlInfos[urlInfos.length-1].split("?")[0];

    if(urlTip == "course_ware_cc.aspx"){//视频页面
        console.log("当前任务: 看视频")
        seeVideo()
    } else if(urlTip == "exam.aspx"){//考试页面
        console.log("当前任务: 考试")
        doTest()
    } else if(urlTip == "exam_result.aspx") {//考试结果页面
        console.log("当前任务: 考试结果审核")
        doResult()
    }


    function seeVideo(){
        localStorage.removeItem(keyTest);
        localStorage.removeItem(keyResult);
        var myid = prefix + vid;
        var myinter = setInterval(function(){
            var myvideo = getSWF(myid);
            console.log("当前进度: " + myvideo.getPosition() + " 总进度: " + myvideo.getDuration());
            if(myvideo.getPosition() == myvideo.getDuration()){
                window.clearInterval(myinter);
                setTimeout(function(){
                    check_next_click();
                }, 1000);
            //console.log("三秒后进入下一步");
            }
        },10000);
    }

    function doTest(){
        var questions = {};
        var index = 0;
        var oldTest = JSON.parse(localStorage.getItem(keyTest));
        var w = localStorage.getItem(keyResult);
        var wrongs = w? w.split("&") : null;
        while(true){
            var question = document.querySelector("#gvQuestion_question_"+index);
            if(question == null) break;
            else {
                var q = question.innerHTML.substring(2);
                questions[q] = "A";
                if(oldTest && oldTest[q]){
                    questions[q] = oldTest[q];
                }
                if(wrongs && wrongs.indexOf(q) != -1){//旧选项错误
                    console.log("旧选项错误   "+q);
                    questions[q] = getNextChoice(questions[q]);
                }
                var answer = getAnswer(questions[q]);
                var element = document.querySelector("#gvQuestion_rbl_"+index+"_"+answer+"_"+index);
                if(!element){
                    console.log("找不到选项,默认选A index: " + index + " answer: " + answer);
                    questions[q] = "A";
                    answer = getAnswer("A");
                    element = document.querySelector("#gvQuestion_rbl_"+index+"_"+answer+"_"+index);
                    //localStorage.removeItem(keyTest)
                }
                element.click();
                index = index+1;
            }
        }
        console.log(questions)

        localStorage.setItem(keyTest,JSON.stringify(questions));

        setTimeout(function(){
            document.querySelector("#btn_submit").click();
        }, 1000);
    }

    function getAnswer(an){//用于获取选项下标
        return an.charCodeAt(0)-"A".charCodeAt(0);
    }

    function getNextChoice(an){//用于获取下一个选项
        var code = an.charCodeAt(0)+1;
        return String.fromCharCode(code);
    }


    function doResult(){
        var res = document.getElementsByTagName("b")[0].innerText;
        var dds = document.getElementsByTagName("dd");
        if(res == "考试通过!"){//考试通过
            console.log("考试通过")
            var next = document.querySelector(".two");
            if(next){
                next.click();
            }
        } else {//考试没过
            console.log("考试未通过")
            var wrong = "";
            for(var i=0;i<dds.length;++i){
                wrong = wrong + dds[i].title + "&";
            }
            console.log(wrong)
            if(wrong.length != 0){
                localStorage.setItem(keyResult,wrong);
                document.querySelector(".button").getElementsByTagName("input")[1].click();//重新考试
            }
        }

    }
    // Your code here...
})();