// ==UserScript== // @name 广东省教师继续教育公需课(2023) // @namespace http://tampermonkey.net/ // @version 2023.5.23 // @description 广东省2023年专用 // @author Edison // @match https://jsxx.gdedu.gov.cn/* // @icon https://www.google.com/s2/favicons?sz=64&domain=gdedu.gov.cn // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; // Your code here... var interval = 1000; var choice = 0; var event = new MouseEvent("mousemove", { "view": window, "bubbles": true, "cancelable": true }); // 考核 function exam(){ var grade = document.getElementsByClassName("m-studyTest-grade"); if(grade.length > 0){ grade = parseInt(grade[0].getElementsByTagName("strong")[0].innerText); if(grade >= 100){ console.log(`你当前已经是${grade}分!!!`); return; } } var answer = []; answer[1] = [3]; answer[2] = [3]; answer[3] = [1]; answer[4] = [1]; answer[5] = [4]; answer[6] = [1]; answer[7] = [3]; answer[8] = [1]; answer[9] = [3]; answer[10] = [1]; answer[11] = [1, 2, 3, 4]; answer[12] = [1, 2, 3, 4]; answer[13] = [1, 2]; answer[14] = [1, 2, 3, 4]; answer[15] = [1, 2, 3, 4]; answer[16] = [1, 2, 3, 4]; answer[17] = [1, 2, 3, 4]; answer[18] = [1, 3, 4]; answer[19] = [1, 2, 3]; answer[20] = [2, 3, 4]; answer[21] = [2]; answer[22] = [1]; answer[23] = [2]; answer[24] = [1]; answer[25] = [1]; answer[26] = [1]; answer[27] = [1]; answer[28] = [2]; answer[29] = [1]; answer[30] = [1]; var btn = document.getElementsByClassName("btn u-main-btn"); if(btn[0].innerText == "重新测验"){ btn[0].click(); } else { var ql = document.getElementsByClassName("m-topic-item"); for(var i = 0; i < ql.length; i++){ var q = ql[i] var c = q.getElementsByClassName("m-radio-tick"); if(c.length <= 0){ c = q.getElementsByClassName("m-checkbox-tick"); } // 题号下标从1开始,方便校对;答案1-4对应选项数组c的0-3 var a = answer[i + 1] for(var j = 0; j < a.length; j++){ c[a[j] - 1].click(); } } // 交卷 btn[0].click(); } } function main(){ // 当前播放 var current_index = 0; var txt = document.getElementsByClassName("txt"); for(let i = 0; i < txt.length; i++){ if(txt[txt.length - 1].innerText.includes(txt[i].innerText)){ console.log(txt[i].innerText, txt[txt.length - 1].innerText); current_index = i; break; } } // 需要观看时长 var s = document.getElementsByClassName("g-study-prompt"); var need_time = -1; if(s && s[0] && s[0].firstElementChild && s[0].firstElementChild.firstElementChild){ need_time = s[0].firstElementChild.firstElementChild.textContent; } need_time = parseInt(need_time); // 每秒检测 function tick(){ if(current_index == (txt.length - 2)){ exam(); return; } var v = document.getElementsByTagName("video")[0]; v.play(); // 已观看时长 var vt = document.getElementById("viewTimeTxt"); if(vt){ vt = parseInt(vt.textContent); } console.log(`已观看时长: ${vt}/${need_time}`); // 模拟用户操作,防止检测挂机 v.dispatchEvent(event); // 答题 var c = document.getElementsByClassName("m-radio-tick"); if(c.length <= 0){ c = document.getElementsByClassName("m-checkbox-tick"); } if(c.length > 0){ console.log("答题检测", c, choice); if (choice >= c.length){ choice = 0; } // 选一个 c[choice++].click(); // 提交按钮 var b = document.getElementsByClassName("btn u-main-btn"); b[0].click(); } // 切换视频 if (vt === null || (vt >= need_time)){ console.log("视频已经看完,切换下一个..."); txt[current_index + 1].click(); current_index++; } setTimeout(tick, interval); } tick(); } document.addEventListener('keydown', function(event) { console.log("keydown", event.code); if (event.code === 'Enter') { main(); } else if (event.code === "KeyG") { console.log("视频可拖动..."); player.changeConfig('config','timeScheduleAdjust',1); // 视频可拖动 } else if (event.code === "KeyT") { console.log("开始答题...") exam(); } }); window.onload = main; })();