Greasy Fork

Greasy Fork is available in English.

采集回顾试题答案

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

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

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

(function() {
    'use strict';
    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.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=24 cols=80>"+ content +"</textarea>"
        box.innerHTML=temp;
    };

    let qStr=getQues();
    let fn=(+new Date()).toString().substring(0,10);
    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);

})();