// ==UserScript== // @name 广东省教师继续教育信息管理平台公需课刷课::jsglpt.gdedu // @namespace https://greasyfork.org/ // @version 2.03 // @description 广东省教师继续教育信息管理平台公需课刷课 // @author Cosil.C // @match http*://jsxx.gdedu.gov.cn/*study/course/* // @match http*://jsglpt.gdedu.gov.cn/login* // @icon https://jsglpt.gdedu.gov.cn/favicon.ico // @downloadURL none // ==/UserScript== if (window.location.href.includes('jsglpt.gdedu.gov.cn/login')) { $("#userName").bind('input propertychange', () => { debugger; //纠正X输成x if ($("#userName").val().includes('x')) { $("#userName").val($("#userName").val().replaceAll('x', 'X')) } //身份证正则 if (!/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9X]$/.test($("#userName").val())) { loginJs.indexs.accountPopupHint({ txt: "身份证格式不正确!" }); return; } //隐藏报错气泡 loginJs.indexs.PopupHintHide(document); //明文 $('#password').removeAttr('type'); //填充 $('#password').val($("#userName").val().slice(-6) + '@Gd'); }) } else { setTimeout(function () { //502刷新页面 if (document.title != '课程学习') { setTimeout(() => { console.log('页面加载失败,即将刷新页面'); location.reload(); }, 5000); } if (/.+\/study\/course\/progess/.test(window.location.pathname)) { if (document.querySelector('#progress')) { //进度100% if (document.querySelector('#progress').innerText.includes('100')) { //考核100分 if (document.querySelector('span.get').innerText.includes('100')) { alert("恭喜,你已完成该课程的所有内容"); } else { [].slice.call(document.querySelectorAll('tbody tr td a')).filter(v => v.innerText.includes('考核')).shift().click(); } } else { [].slice.call(document.querySelectorAll('tbody tr')) .filter(v => v.innerText.includes('未完成')).shift().querySelector('a').click(); } } return; } //进行考核 if (document.querySelector('a.section.tt-s.z-crt').innerText == '考核') { if (handleTest() == '100') { window.location.href = document.querySelector('[item=progess] a').getAttribute('href'); return; } } if (document.querySelector('.g-study-dt .g-study-prompt p').innerText.includes('您已完成观看')) { window.location.href = document.querySelector('[item=progess] a').getAttribute('href'); } try { !player; } catch (e) { window.location.reload(); return; } //静音 player.videoMute(); let errChecking = setInterval(function () { console.log('定时器存活'); if (player.error) { console.log('视频加载出错,即将刷新页面'); window.location.reload(); } //自动关闭答题弹窗 if (document.querySelector('.mylayer-layer')) { if (document.querySelector('.mylayer-layer .mylayer-title .title').innerText.includes('请作答')) { if (document.querySelectorAll('.mylayer-layer .mylayer-loading').length > 0) { return; } console.log('检测到题目弹窗,即将进行答题'); getAnswerList().forEach(v => document.querySelector('input[name=\'response\'][value=\'' + v + '\']').click()); finishTest(); } } //播放完毕 if (isComplete) { console.log('该课时已完成观看,正在跳转下一章节'); window.location.href = document.querySelector('[item=progess] a').getAttribute('href'); clearInterval(errChecking); return; } //暂停时自动开始播放 if (player.V.paused) { console.log('视频已暂停,正在重启播放'); player.videoPlay(); } }, 1000)//错误自动刷新 }, 1000);//延时1秒进行 } //解决30分钟跳出,这里28分钟刷新 setTimeout(function () { localStorage.clear(); window.location.reload(); }, 1680000); function handleTest() { //有无分数 let gradeEle = document.querySelector('.m-studyTest-grade strong'); if (gradeEle != null) { //已经满分 if (gradeEle.innerText == '100') { window.location.href = document.querySelector('[item=progess] a').getAttribute('href'); return '100'; } finishTest(); return; } //答案 let data = { "人工智能发展与产业应用": [ "A", "A", "B", "B", "B", "A", "A", "B", "A", "A", "A", "B", "C", "B", "B", "B", "A", "A", "D", "B", "AC", "ABD", "ABCD", "ACD", "ACD", "AB", "ABCD", "ABCD", "BD", "ABC" ], "科技创新现状与发展趋势": [ "A", "A", "B", "B", "A", "A", "B", "B", "B", "A", "B", "A", "A", "A", "C", "B", "A", "A", "A", "B", "ABC", "ABCD", "BCD", "ABC", "ABC", "ABD", "ABC", "ABCD", "ABC", "ABC" ] } let map = { 'A': 0, 'B': 1, 'C': 2, 'D': 3 }; let answerArr = data[/(?<=\$\(\'\.topCourseName\'\)\.text\(\').*?(?=\')/.exec($('script:contains(\'.topCourseName\')').text())[0]]; $('.m-topic-item').each(function (index, queEle) { answerArr[index].split('').forEach(op => { $(queEle).find('.m-question-lst span')[map[op]].click(); }); }); finishTest(); } function getAnswerList() { let answerStr = eval(/(?<=if \()'.+'(?=\.includes\(','\))/.exec(finishTest.toString())[0]); let answerList = []; if (answerStr.includes(',')) { answerList = JSON.parse(answerStr); } else { answerList = [answerStr]; } return answerList; }