// ==UserScript==
// @name 广东省华医网继续教育公需课(2023)
// @namespace http://tampermonkey.net/
// @version 2023.5.24
// @description 广东省2023年专用
// @author kris2600
// @match https://cme45.91huayi.com/*
// @match *://*.91huayi.com/course_ware/course_ware_polyv.aspx?*
// @match *://*.91huayi.com/pages/exam.aspx?*
// @match *://*.91huayi.com/pages/exam_result.aspx?*
// @match *://*.91huayi.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=gdedu.gov.cn
// @grant none
// @license MIT
// ==/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 answer1 = ["C", "C", "A", "A", "D", "A", "C", "A", "C", "A", "ABCD", "ABCD", "AB", "ABCD", "ABCD", "ABCD", "ABCD", "ACD", "ABC", "BCD", "B", "A", "B", "A", "A", "A", "A", "B", "A", "A"];
// 高质量发展
var answer2 = ["D", "A", "B", "B", "C", "C", "D", "B", "C", "D", "B", "C", "ABCD", "ABCD", "ABCD", "ABC", "ABCD", "ABCD", "B", "A", "A", "A", "A", "A", "A", "B", "A", "B", "A", "B"];
// 将答案ABCD转换成数组
var map = {"a": 0, "A": 0, "b": 1, "B": 1, "c": 2, "C": 2, "d":3, "D": 3};
function abcd_to_index(answer_in){
var answer_out = [];
for(var i = 0; i < answer_in.length; i++){
answer_out[i] = []
var s = answer_in[i];
for (var j = 0; j < s.length; j++) {
answer_out[i].push(map[s[j]]);
}
}
return answer_out;
}
// 判断启用哪套答案
var answer = null;
var course = document.getElementById("courseCatalog");
if(course.textContent.includes("中国式现代化")){
answer = abcd_to_index(answer1);
} else {
answer = abcd_to_index(answer2);
}
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");
}
// 选答案
var a = answer[i]
for(var j = 0; j < a.length; j++){
c[a[j]].click();
}
}
// 交卷
btn[0].click();
finishTest();
}
}
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;
})();