Greasy Fork

Greasy Fork is available in English.

灯塔党建自动答题

1、增加答案显示

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         灯塔党建自动答题
// @namespace    
// @version      2.0
// @description  1、增加答案显示
// @author       Aaron
// @match        http://*.dtdjzx.gov.cn/kaishijingsai.html
// @grant        none
// ==/UserScript==

(function() {
    var domen=location.href.substring(location.href.indexOf("//")+2,location.href.indexOf("."));
    var allDataList=[];
    var err=[];
    var dataId="";
    var dataName="";
    var tkList="";
    var isLoad=false;
    var allDataListWidthAns=[];
    var tkNum=0;
    $(".w_btn_tab").append("<div id='divAutoA' style='position:  absolute;margin-top: -35px;margin-left: 258px;'></span>");
    $("#divAutoA").append("<div id='divMsg' ></div>");
    function getAns(tm){
        for(let i=0;i<allDataList.length;i++){
            if(allDataList[i].subjectTitle.indexOf(tm)>=0){
                var a=allDataList[i].optionInfoList.filter(f=>f.isRight==1);
                return a;
            }
        }
        return [];
    }
    //获取全部题库列表
    $.get("http://"+domen+".dtdjzx.gov.cn/quiz-api/chapter_info/list",r=>{
        if(r.code==200&&r.data.length>0){
            tkList=r.data;
            dataId=r.data[0].id;
            dataName=r.data[0].title;
            loadTK();
        }
    });
    function randomClick(){
        for(var i=0;i<19;i++){
            ClickButton({
                button:0,
                clientX:getRandom(1051,974),
                clientY:getRandom(855,833)
            });
        }
    }
    function getRandom(max,min){
        return parseInt(Math.random()*(max-min+1)+min,10);
    }
    function loadTK(){
        $.get("http://"+domen+".dtdjzx.gov.cn/quiz-api/subject_info/list?chapterId="+dataId,r=>{
            if(r.code==200){
                $("#divMsg").text("成功载入《"+dataName+"》 "+r.data.totalSubject+" 题库!");
                allDataList=r.data.subjectInfoList;
                $("#divAutoA").prepend("<input type='checkbox' id='cbCheck4' style='margin-left: 8px;'>答案</input>");
                $("#divAutoA").prepend("<input type='checkbox' id='cbCheck2' style='margin-left: 8px;'>自动分析</input>");
                $("#divAutoA").prepend("<input type='checkbox' id='cbCheck3' style='margin-left: 8px;'>加载全部题库</input>");
                $("#divAutoA").prepend("<button style='height: 35px;width: 120px;color: #000;background: greenyellow;border-radius: 4px;cursor: pointer;' id='btnAuto'>开始自动答题</button>");
                $("#cbCheck3").click(e=>{loadOtherTK();});
                $("#cbCheck4").click(e=>{showAns();});

                $("#btnAuto").click(()=>{
                    randomClick();
                    let elemLi=$(".w_charu li");
                    for(var i=0;i<elemLi.length;i++){
                        $("#divMsg").text("正在查找 "+(i+1)+" 题目的答案...");
                        var e=elemLi[i];
                        var tm=$(e).find("h1 .W_ml10.w_fz18").text();
                        var ans=[];
                        if(A_ans.length>i){
                            ans=A_ans[i].split(',');
                        }else{
                            ans=getAns(tm);
                        }
                        if(ans.length<=0){
                            var autoC=$("#cbCheck2").prop("checked");
                            if(autoC){
                                var ansStr=muItem(tm);
                                if(ansStr){
                                    var e_lelemts_s=$(e).find("input").next();
                                    for(var ei=0;ei<e_lelemts_s.length;ei++){
                                        var e_as_l=$(e_lelemts_s[ei]).text().split(".");
                                        var e_as=e_as_l.length>1?e_as_l[1]:e_as_l[0];
                                        if(ansStr.indexOf(e_as)>=0)
                                            $(e_lelemts_s[ei]).prev().click();
                                    }
                                    err.push("第 "+(i+1)+" 题,未找到答案,分析成功,请您核实。");
                                    var t=getTnum(ansStr);
                                    console.log("第 "+(i+1)+" 题,答案:"+ansStr+t);
                                }else{
                                    err.push("第 "+(i+1)+" 题,未找到答案,分析失败");
                                }
                            }else{
                                err.push("第 "+(i+1)+" 题,未找到答案.");
                            }
                        }
                        ans.forEach(a=>{
                            if(a.optionTitle)
                                $(e).find("input").next(":contains('"+a.optionTitle+"')").prev().click();
                            else
                                $(e).find("[value='"+a+"']").click();
                        });
                    }
                    if(err.length>0){
                        $("#divMsg").html(err.join("<br/>"));
                    }else{
                        $("#divMsg").text("答题完成");

                    }
                });
            }
        });
    }
    var A_ans=[];
    var A_ansList=[];
    function showAns(){
        if(A_ans.length==0 && $("#cbCheck4").prop('checked')){
            if(A_ansList.length==0){
                $.ajax({
                    async:false ,
                    type: "post",
                    url:'http://'+domen+'.dtdjzx.gov.cn/quiz-api/game_info/lookBackSubject',
                    data:{roundOnlyId:roundOnlyId},
                    dataType: "json",
                    success: function(data) {
                        if(data.success&&data.data.dateList.length>0){
                            A_ansList=data.data.dateList;
                            let ttt="";
                            let i=0;
                            A_ansList.forEach(e=>{
                                A_ans.push(e.answer);
                                i++;
                                ttt+=i+":"+e.answer+"、";
                            });
                            $("#divMsg").text(ttt);
                        }else{
                            $("#divMsg").text("答案加载失败");
                        }
                    }
        });
            }else{
                let ttt="";
                let i=0;
                A_ansList.forEach(e=>{
                    A_ans.push(e.answer);
                    i++;
                    ttt+=i+":"+e.answer+"、";
                });
                $("#divMsg").text(ttt);
            }
        }else{
            A_ans=[];
        }
    }
    function getTnum(s){
        var ss=s.split("|");
        var str="";
        if(ss.length>1){
            let lastCount=tkNum%200;

            for(var i=1;i<ss.length;i++){
                var n=parseInt(ss[i])||0;
                if(n>0){
                    var z= n<=lastCount?1:parseInt((n-lastCount)/200)+2;
                    var t=n<=lastCount?n:(n-lastCount)%200;
                    str+="第"+z+"期,第"+t+"题。";
                }
            }
        }
        return str;
    }
    function loadOtherTK(){
        if(!isLoad && $("#cbCheck3").prop('checked')){
            allDataList=[];
            tkList.forEach(tk=>{
                $.get("http://"+domen+".dtdjzx.gov.cn/quiz-api/subject_info/list?chapterId="+tk.id,r=>{
                    if(r.code==200){
                        allDataList=allDataList.concat(r.data.subjectInfoList);
                        tkNum+=r.data.totalSubject;
                        $("#divMsg").text("成功载入"+tkNum+" 题库!");
                    }
                });
            });
        }
    }
    //分析变异题目
    function muItem(qStr){
        if(allDataListWidthAns.length==0)
            addAns();
        let index=qStr.indexOf('()');
        let serLen=qStr.length>10?10:qStr.length;
        let toRight=true;
        let serIndex=0;
        let serStr='';
        if(index<qStr.length/2){
            serIndex=index+2;
        }else{
            serIndex=index-serLen;
            toRight=false;
        }
        var list=[];
        var is_add=true;
        list=getG(qStr.substr(serIndex,serLen));
        var n_l=list.length;
        while (list.length!=1 && serLen>1){
            if(list.length<1){
                serLen--;
                if(!toRight)
                    serIndex++;
            }
            if(list.length>1){
                serLen++;
                if(!toRight)
                    serIndex--;
            }
            list=getG(qStr.substr(serIndex,serLen));
            if(list.length!=n_l)
                break;
        }
        if(list.length>0){
            var in_list=findIndex(qStr,"()");
            var ass=[];
            in_list.forEach(e=>{
                var s=getAnsStr(qStr,list[0],e);
                var st=list[0].split("|");
                if(st.length>1)
                    s+="|"+st[1];
                ass.push(s);
            });
            return ass.join(";");
        }
        return "";
    }
    function getAnsStr(qStr,mbStr,index){
        let s_index=-1;let e_index=-1;
        if(index<3)
            s_index=index;
        else if(index >= qStr.length-3)
            e_index=mbStr.length-1;
        if(e_index<0){
            let i_index=1;
            let endStr="";
            let endIndex=-1;
            while (endIndex<index && (index+i_index+3)<=qStr.length) {
                i_index++;
                endStr=qStr.substr(index+i_index,3);
                endIndex= mbStr.indexOf(endStr);
            }
            if(endIndex>index){
                e_index=endIndex;
            }
        }
        if(s_index<0){
            let i_index=2;
            let staStr="";
            let staIndex=-1;
            while (staIndex<0 && (index-i_index)>=0) {
                i_index++;
                staStr=qStr.substr(index-i_index,3);
                staIndex= mbStr.indexOf(staStr);
            }
            if(staIndex>=0){
                s_index=staIndex+3;
            }
        }
        if(s_index<e_index&&s_index>=0)
            return mbStr.substring(s_index,e_index);
    }
    function getG(str){
        var l=[];
        allDataListWidthAns.forEach(e=>{
            if(e.indexOf(str)>=0){
                l.push(e);
            }
        });
        return l;
    }
    function findIndex(str1,str2){
        var res=[];
        var len=0;
        var list=str1.split(str2);
        for(var i=0;i<list.length-1;i++){
            if(i==0){
                if(list[i].length==0)
                    res.push(0);
                else{
                    len=list[i].length;
                    res.push(len);
                }
            }else{
                len=len+list[i].length+str2.length;
                res.push(len);
            }
        }
        return res;
    }
    function addAns(){
        var i=0;
        allDataList.forEach(e=>{
            i++;
            var ans="";
            e.optionInfoList.forEach(a=>{
                if(a.isRight=="1")
                    ans+=a.optionTitle;
            });
            var t=e.subjectTitle.replace(/(/g,ans);
            t=t.replace(/)/g,"");
            allDataListWidthAns.push(t+"|"+i);
        });
    }
})();