// ==UserScript== // @name 河北教师继续教育2024 // @namespace http://tampermonkey.net/ // @version 2.0.5 // @description 自动过验证码、自动展开未学的内容无人值守学习。 // @author yanguichao // @match *://*.stu.teacher.com.cn/* // @icon https://www.google.com/s2/favicons?sz=64&domain=bing.com // @grant none // @license MIT // @require https://code.jquery.com/jquery-3.6.0.min.js // @downloadURL none // ==/UserScript== /* global $ */ // 告诉 ESLint,$ 是全局变量 (function () { 'use strict'; // 通用工具函数:检查并点击按钮 function checkAndClickButton(selector, buttonText, callback) { const buttons = document.querySelectorAll(selector); buttons.forEach(button => { if (button.innerText.trim() === buttonText) { console.log(`找到按钮 "${buttonText}",正在点击...`); button.click(); if (callback) callback(); } }); } // 通用工具函数:检查并点击包含特定文本的元素 function checkAndClickElement(selector, text) { const elements = document.querySelectorAll(selector); elements.forEach(element => { if (element.textContent.trim() === text) { console.log(`找到元素 "${text}",正在点击...`); element.click(); } }); } // 第一个脚本:验证信息提交和自动播放 (function () { function checkAndSubmit() { try { if ($("div:contains('验证信息')").length > 1) { console.log("检测到学习验证"); $("#code").attr("value", $("#codespan").text()); $("a:contains('提交')")[0].click(); } checkAndClickButton('a', 'Ok,我知道了!', () => { const playButton = document.querySelector(".ccH5TogglePlay"); if (playButton) playButton.click(); }); } catch (error) { console.error('检查验证信息时出错:', error); } } setInterval(checkAndSubmit, 6000); })(); // 第二个脚本:自动进入课程学习 (function () { function enterCourse() { try { const href = location.href; if (href.includes("/course/showCourse/")) { checkAndClickButton('.button-hui', '进入课程学习'); } else if (href.includes("/course/learn/")) { if (window.TimeNum >= 1200) { alert("可以提交了"); } } } catch (error) { console.error('进入课程学习时出错:', error); } } setInterval(enterCourse, 10000); })(); // 第三个脚本:自动点击“学习计划”链接 (function () { function checkAndClickStudyPlan() { try { const targetContent = '(已达到累计上限,不再累计)'; if (document.documentElement.innerHTML.includes(targetContent)) { checkAndClickButton('a', '学习计划', () => { setTimeout(() => location.reload(), 5000); }); } } catch (error) { console.error('检查学习计划时出错:', error); } } setInterval(checkAndClickStudyPlan, 6000); })(); // 第四个脚本:自动点击“展开”按钮 (function () { function checkAndClickExpand() { try { checkAndClickElement('span.step', '展开'); } catch (error) { console.error('检查展开按钮时出错:', error); } } setInterval(checkAndClickExpand, 5000); })(); // 第五个脚本:自动点击“学习中”或“未学习”按钮 (function () { function clickLearnButton(iconClass, sessionKey) { try { const targetElement = document.querySelector(`li i.${iconClass}`); if (targetElement && targetElement.textContent === (iconClass === 'icon_2' ? '学习中' : '未学习')) { const parentLi = targetElement.closest('li'); const targetButton = parentLi.querySelector('a[onclick*="countLearn"]'); if (targetButton && !sessionStorage.getItem(sessionKey)) { const delay = Math.floor(Math.random() * 5000) + 5000; setTimeout(() => { targetButton.click(); sessionStorage.setItem(sessionKey, 'true'); const courseLink = parentLi.querySelector('a.list-title'); if (courseLink && courseLink.href) { window.location.href = courseLink.href; } }, delay); } } } catch (error) { console.error('点击学习按钮时出错:', error); } } setInterval(() => { clickLearnButton('icon_2', 'countLearnTriggered'); clickLearnButton('icon_0', 'countLearnTriggered2'); }, 10000); })(); // 第六个脚本:自动点击视频项 (function () { function autoClickVideoItem() { try { const videoItems = document.querySelectorAll('li[data-type="视频"], li[data-type="1"]'); videoItems.forEach(item => { if (item.onclick || item.getAttribute('onclick')) { item.click(); console.log('已点击视频项:', item); } }); } catch (error) { console.error('点击视频项时出错:', error); } } setTimeout(() => { autoClickVideoItem(); setInterval(autoClickVideoItem, 1200000); }, 20000); })(); // 第七个脚本:自动刷新学习时间 (function () { function refreshStudyTime() { try { const button = document.querySelector('div.fr button.btn.studyCourseTimeRefresh'); if (button && !document.body.innerText.includes('最长可累计时间:')) { button.click(); console.log('已刷新学习时间'); } } catch (error) { console.error('刷新学习时间时出错:', error); } } setInterval(refreshStudyTime, 600000); })(); })();