Greasy Fork

Greasy Fork is available in English.

采集回顾试题答案

采集国开形考任务的回顾试题数据

当前为 2021-11-23 提交的版本,查看 最新版本

// ==UserScript==
// @name         采集回顾试题答案
// @namespace    http://tampermonkey.net/
// @version      0.96
// @description  采集国开形考任务的回顾试题数据
// @author       Deloque
// @match        http://hebei.ouchn.cn/mod/quiz/review.php?attempt=*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';
    function getQueryStr(name) {
        var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
        var result = window.location.search.substr(1).match(reg);
        if (result != null) {
            return unescape(result[2]);
        }
        return null;
    }
    let sleep = function (time) {
        return new Promise((resolve) => setTimeout(resolve, time));
    };
    function saveContentToDisk (content, fileName) {
        let downLink = document.createElement('a')
        downLink.download = fileName
        let blob = new Blob([content])
        downLink.href = URL.createObjectURL(blob)
        document.body.appendChild(downLink)
        downLink.click()
        document.body.removeChild(downLink)
    }

    sleep(500).then()

    let clearAns=function(str){
        let s=str.replace(/@.*?:/,'@')
        s=s.replace(/.*?答案是 */,'')
        s=s.replace(/“错”/,'错误').replace(/“对”/,'正确')
        s=s.replace(/。$/,'')
        return s
    }

    let getQues = function() {
        var qStr=''
        let ques = document.querySelectorAll('.content')
        if (ques) {
            for (var que of ques){
                let isQ=que.querySelector('.accesshide')
                if(!isQ)continue;
                if (isQ.textContent=='试题正文'){
                    let q=que.querySelector('.qtext')
                    if(!q)break;
                    qStr=qStr+'##'+q.textContent+"\n"

                    let a=que.querySelector('.feedback')
                    if(a){
                        qStr=qStr+clearAns('@'+a.textContent)+'\n'
                    }
                }
            }
        }
        return qStr
    }

    let showQues = function (content) {
        let box = document.createElement('div')
        box.id='result'
        box.style = 'position:fixed;top:51px;left:1px;padding: 2px 6px;zIndex:9999;background:#fff'
        document.body.appendChild(box)
        let temp="<textarea id='areaResult' rows=20 cols=120>"+ content +"</textarea>"
        box.innerHTML=temp;
    };
    let getCourseId=function(){
        var courseid;
        let id=document.getElementById('alm')
        if(id){
            courseid=id.getAttribute("courseid")
        }else{
            let links=document.querySelectorAll('.breadcrumb-item a')
            var pattern=/hebei\.ouchn\.cn\/course\/view\.php\?id=/
            for(var link of links){
                var aHref=link.getAttribute('href')
                if (pattern.test(aHref)){
                    courseid=aHref.match(/(\d+)/)[0]
                    break
                }
            }
        }
        return courseid
    }
    let qStr=getQues();
    let courseid=getCourseId();
    let fn=courseid+'_'+getQueryStr('attempt')
    //console.log(fn)
    let show=function(){showQues(qStr)};

    window.addEventListener('keyup', function(event){
        switch(event.code){
            case 'KeyC':
                showQues(qStr);
                break
            case 'KeyH':
                document.querySelector('#result').remove()
                break
            case 'KeyS':
                saveContentToDisk(qStr,fn)
                break
        }
    }, true)

    let button = document.createElement('button')
    button.innerText = "采集数据"
    button.style = 'position:fixed;top:60px;right:0.9375rem; zIndex:99999;font-size: 16px;border:1px solid #dcdfe6;color:#212529;background:#fff;font-weight:400;'
    button.onclick = show
    document.body.appendChild(button);

})();