// ==UserScript== // @name 普宁人-2023年“暑期教师研修”专题|国家智慧教育公共服务平台 // @namespace http://tampermonkey.net/ // @version 2023.7.16.2 // @description 国家智慧教育公共服务平台(国家中小学智慧教育平台)自动刷视频,16倍速! // @author 根据yygdz1921的脚本修改而来 // @match https://www.smartedu.cn/* // @match https://basic.smartedu.cn/* // @match https://basic.smartedu.cn/teacherTraining/courseDetail* // @icon https://www.google.com/s2/favicons?sz=64&domain=smartedu.cn // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function () { 'use strict'; // Your code here... // 引入第三方库https://github.com/sweetalert2/sweetalert2/ // 引入 sweetalert2.min.css 和 sweetalert2.min.js 文件 const css = document.createElement('link'); css.rel = 'stylesheet'; css.href = 'https://cdn.jsdelivr.net/npm/sweetalert2@11.7.12/dist/sweetalert2.min.css'; document.head.appendChild(css); const js = document.createElement('script'); js.src = 'https://cdn.jsdelivr.net/npm/sweetalert2@11.7.12/dist/sweetalert2.all.min.js'; document.body.appendChild(js); // 弹窗函数 function msg(txt, ms = 3000) { Swal.fire({ title: txt, position: "center", icon: "success", showConfirmButton: false, timer: ms, timerProgressBar: true, }) } var log = console.log; // 课程 var course_name = "2023年“暑期教师研修”专题(中小学版)"; var home = "https://basic.smartedu.cn/training/2023sqpx"; var course_url = [ // 思想铸魂 "https://basic.smartedu.cn/teacherTraining/courseDetail?courseId=58979766-6cb2-43f8-8b6c-68336f8824df&tag=%E5%B8%88%E5%BE%B7%E9%9B%86%E4%B8%AD%E5%AD%A6%E4%B9%A0%E6%95%99%E8%82%B2&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%B8%88%E5%BE%B7%E9%9B%86%E4%B8%AD%E5%AD%A6%E4%B9%A0%E6%95%99%E8%82%B2", // 固本强基 "https://basic.smartedu.cn/teacherTraining/courseDetail?courseId=10c4b18a-333a-48d2-a6ea-4a3524ea8e78&tag=%E5%B8%88%E5%BE%B7%E9%9B%86%E4%B8%AD%E5%AD%A6%E4%B9%A0%E6%95%99%E8%82%B2&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%B8%88%E5%BE%B7%E9%9B%86%E4%B8%AD%E5%AD%A6%E4%B9%A0%E6%95%99%E8%82%B2", // 以案促学 "https://basic.smartedu.cn/teacherTraining/courseDetail?courseId=f47898b2-2138-4600-b08d-68856b1c7cb7&tag=%E5%B8%88%E5%BE%B7%E9%9B%86%E4%B8%AD%E5%AD%A6%E4%B9%A0%E6%95%99%E8%82%B2&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%B8%88%E5%BE%B7%E9%9B%86%E4%B8%AD%E5%AD%A6%E4%B9%A0%E6%95%99%E8%82%B2", // 师德引领 "https://basic.smartedu.cn/teacherTraining/courseDetail?courseId=f7a2a557-7948-4d9b-93df-8622430d0df3&tag=%E5%B8%88%E5%BE%B7%E9%9B%86%E4%B8%AD%E5%AD%A6%E4%B9%A0%E6%95%99%E8%82%B2&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=%E5%B8%88%E5%BE%B7%E9%9B%86%E4%B8%AD%E5%AD%A6%E4%B9%A0%E6%95%99%E8%82%B2", // 数字素养提升 "https://basic.smartedu.cn/teacherTraining/courseDetail?courseId=785b41e5-aedb-4adc-9e64-7e1cee9b42b1&tag=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98", // 综合育人能力提升 "https://basic.smartedu.cn/teacherTraining/courseDetail?courseId=c016de39-7291-466d-be35-045f9c2ffe44&tag=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98", // 科学素养提升 "https://basic.smartedu.cn/teacherTraining/courseDetail?courseId=a326cae7-067b-44b6-910c-c9a4747bb02e&tag=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98", // 2022年版义务教育课程方案和课程标准国家级示范培训 "https://basic.smartedu.cn/teacherTraining/courseDetail?courseId=24b799eb-95ed-4683-8f8b-b7804f5bf93b&tag=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98", // 倾听儿童 相伴成长 "https://basic.smartedu.cn/teacherTraining/courseDetail?courseId=7433de18-8a0e-450f-9f85-baeb86a1d45e&tag=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98", // 高中研究性学习活动的设计与实施 "https://basic.smartedu.cn/teacherTraining/courseDetail?courseId=f567d88a-a73e-4508-a890-66c515291cc8&tag=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98", // 中小学劳动教育课程内容的实施策略 "https://basic.smartedu.cn/teacherTraining/courseDetail?courseId=eda66ec0-d432-414b-9edd-4c2c43b36802&tag=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98", // 中小学实验室管理与安全保障 "https://basic.smartedu.cn/teacherTraining/courseDetail?courseId=9691e377-c4da-4d7c-95b1-5709691538ec&tag=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98", // 特殊教育拓展融合 "https://basic.smartedu.cn/teacherTraining/courseDetail?courseId=5e2191f1-b7a2-4d46-b833-de939fc06696&tag=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98&channelId=&libraryId=bb042e69-9a11-49a1-af22-0c3fab2e92b9&breadcrumb=2023%E5%B9%B4%E2%80%9C%E6%9A%91%E6%9C%9F%E6%95%99%E5%B8%88%E7%A0%94%E4%BF%AE%E2%80%9D%E4%B8%93%E9%A2%98", ] // 上述配置的课程,分别学习多少课时(看多少个视频),因为认定学时有限,每个课程不用刷完!!! // 配置-1为学完当前课程的所有视频 var lessons = [2, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]; function next() { var href = window.location.href; var index = course_url.indexOf(href); if (index > -1) { if (index + 1 < course_url.length) { window.location.href = course_url[index + 1]; } else { window.location.href = home; } } else { window.location.href = course_url[0]; } } function click(auto_next = true) { // 关闭弹窗 var btn = document.querySelector("button.fish-btn.fish-btn-primary"); if (btn) { btn.click(); } // 判读是否满足学时要求 if (lessons) { var href = window.location.href; var index = course_url.indexOf(href); var lesson = lessons[index]; if (lesson != undefined && lesson != -1) { let headers = document.getElementsByClassName("fish-collapse-header"); for (let i = 0; i < headers.length; i++) { let header = headers[i]; header.click(); } let finish = document.getElementsByClassName("iconfont icon_checkbox_fill"); log(`当前页面已经学完【${finish.length}】个视频,学时要求为【${lesson}】个视频,是否达标:${finish.length >= lesson}`); if (finish.length >= lesson) { next(); } } } var icon = null; function find_icon() { // 进行中 icon = document.getElementsByClassName("iconfont icon_processing_fill")[0]; // 未开始 if (!icon) { icon = document.getElementsByClassName("iconfont icon_checkbox_linear")[0]; } } // 查找默认列表 find_icon(); // 展开其他列表 if (!icon) { let headers = document.getElementsByClassName("fish-collapse-header"); for (let i = 0; i < headers.length; i++) { let header = headers[i]; header.click(); find_icon(); if (icon) { break; } } } // 有没学完的 if (icon) { icon.click(); } else { if (auto_next) { next(); } else { Swal.fire("当前页面所有视频已经播放完!", "", "success"); } } } function play(v = null) { if (!v) { v = document.getElementsByTagName("video")[0]; } if (v) { v.muted = true; v.playbackRate = 16; v.play(); } } var pageNumber = null; var pageCount = null; function read() { log(`PDF文档阅读: pageNumber==>${pageNumber}, pageCount==>${pageCount}`); if (pageCount) { var pc = pageCount; // 最后一页 log("PDF文档跳到最后一页:", pc); window.postMessage({ type: "pdfPlayerPageChangeing", data: { pageNumber: pc, pageCount: pc, } }, "*"); // 第一页 setTimeout(function () { log("PDF文档调到第一页..."); window.postMessage({ type: "pdfPlayerPageChangeing", data: { pageNumber: 1, pageCount: pc, } }, "*"); }, 1000); // 重置 pageCount = null; } } // 答题 function answer() { let count = 0; const intervalId = setInterval(() => { log("自动答题检测..."); // 选A var a = document.getElementsByClassName("nqti-check")[0]; if (a) { a.click(); // 下一题、确定 for (let i = 0; i < 2; i++) { var btn = document.querySelector("div.index-module_footer_3r1Yy > button"); if (btn) { btn.click(); } } } count++; if (count === 3) { clearInterval(intervalId); } }, 1000); } function main() { log("main..."); // 实际刷视频时比学时要求的多1~2个,避免网络等各种原因造成出错 if (lessons) { lessons.forEach(function (item, index, array) { if (item > 0) { item += 2; } array[index] = item; }); } // 等待页面加载,延时开始 var delay = 1000 * 10 var href = window.location.href; if (course_url.includes(href)) { msg(`等待网页资源加载, 约【${delay / 1000}】秒后开始自动播放视频`, delay); setInterval(function () { click(); play(); read(); answer(); }, delay); } else { Swal.fire({ //background: "#url(https://baotangguo.cn:8081/)", icon: "warning", title: "开始刷视频?", text: "好好学习,天天向上!", showDenyButton: true, showCancelButton: true, confirmButtonColor: "green", confirmButtonText: `
刷脚本配置的课程,当前为:
${course_name}
`, denyButtonColor: "blue", denyButtonText: '
只刷当前页的视频
', cancelButtonColor: "red", cancelButtonText: '
退出
', }).then((result) => { /* Read more about isConfirmed, isDenied below */ if (result.isConfirmed) { msg("走你~"); next(); } else if (result.isDenied) { msg(`【${delay / 1000}】秒后开始自动播放视频`, delay); setInterval(function () { click(false); play(); read(); answer(); }, delay); } }) } } if (document.readyState === "complete") { // DOM 已经加载完成 main(); } else { // DOM 还未加载完成 // document.addEventListener("DOMContentLoaded", main); window.onload = main; } document.addEventListener("keydown", function (event) { log("keydown", event.code); if (event.code === "KeyG") { main(); } }); window.addEventListener("message", function (event) { var data = event.data; log("message from PDF================>", data); if (data.type === "pdfPlayerInitPage") { pageNumber = data.data.pageNumber; pageCount = data.data.pageCount; log(`PDF文档初始化: pageNumber==>${pageNumber}, pageCount==>${pageCount}`); } }); })();