内蒙古智慧教育 - 自动刷课助手
基本信息
| 项目 |
内容 |
| 脚本名称 |
内蒙古智慧教育 - 自动刷课助手 |
| 版本 |
2.6.0 |
| 适用平台 |
内蒙古智慧教育平台 |
| 许可证 |
MIT |
| 运行时机 |
document-end |
功能概述
本脚本用于自动完成内蒙古智慧教育平台(wlpx.nmgdata.org.cn)的在线课程视频学习。启动后全程无需手动操作,自动完成以下流程:
- 自动扫描课程列表,识别未完成课程
- 自动进入课程详情页,获取视频目录
- 自动播放视频(静音 + 2倍速)
- 视频完成后自动切换到下一个视频
- 当前课程全部视频完成后,自动切换到下一门课程
- 所有课程完成后自动停止
主要特性
1. 自动播放控制
- 视频自动静音播放,不打扰用户
- 默认 2 倍速播放,可大幅缩短学习时间
- 多轮重试机制:页面加载后 500ms / 1500ms / 3000ms / 6000ms 尝试播放
- 持续 2 秒间隔检测播放状态,如被暂停则自动恢复
2. 断点续播
- 视频因验证码或意外中断时,自动保存当前播放进度到 sessionStorage
- 刷新页面后自动恢复到上次播放位置继续学习
3. 多课程连续刷课
- 扫描课程列表页,按顺序逐个完成未完成课程
- 自动识别课程进度(支持 Element UI 进度条、文本进度等多种方式)
- 当前页课程全部完成后,自动翻到下一页继续
4. 进度记录与持久化
- 使用 Tampermonkey GM 存储记录已完成视频和课程
- 进度跨页面、跨会话持久化,不会因刷新丢失
- 以本地存储为准,不依赖页面 DOM 状态
5. 视频卡顿检测
- 每 2 秒监控视频播放进度
- 若 15 秒内播放时间未前进,判定为卡住并自动刷新页面
6. 可视化控制面板
- 右上角悬浮面板,显示当前状态、课程进度、视频进度
- 面板可拖动、可最小化
- 提供"开始"、"停止"、"跳过当前视频"、"重置记录"按钮
7. SPA 路由兼容
- 同时监听
hashchange、history.pushState、history.replaceState
- 支持 Vue Router 单页应用的页面切换
- 使用 MutationObserver 检测页面内容变化,兜底检测路由切换
8. 多选择器兜底
- 课程卡片扫描:
.course-card → .el-card 兜底
- 视频列表扫描:
.course-video-item → .teacher-video-item → [class*="video-item"] → 以 .video-name 为锚点向上查找
- 分页按钮:Element UI
.btn-next → 任意含 next class 按钮 → .el-pager 末项
- 目录标签页:
#tab-video → .el-tabs__item 文本匹配 → role="tab" 属性匹配
使用方式
安装
- 浏览器安装 Tampermonkey 或 ScriptCat 扩展
- 将脚本导入扩展中
- 打开 内蒙古智慧教育平台
操作步骤
- 登录平台后,进入课程列表页
- 点击右上角悬浮面板的 "▶ 开始自动刷课" 按钮
- 脚本将自动扫描课程、播放视频、切换课程,无需任何手动干预
- 如需中途停止,点击 "⏹ 停止"
- 如需跳过当前视频,点击 "⏭ 跳过当前视频"
- 如需清除所有进度记录重新开始,点击 "🗑 重置记录"
配置说明
脚本内置配置项(CONFIG 对象):
| 配置项 |
默认值 |
说明 |
pauseRefreshDelay |
500ms |
检测到视频暂停后刷新延迟 |
videoEndDelay |
2000ms |
视频结束后等待再切换的延迟 |
maxRefreshRetries |
3 |
页面刷新最大重试次数 |
pollInterval |
1000ms |
DOM 轮询间隔 |
debug |
true |
是否输出调试日志 |
completionThreshold |
0.95 |
播放时长超过总时长 95% 即算完成 |
页面支持
| 页面类型 |
路由特征 |
脚本行为 |
| 课程列表页 |
#/、#/index、#/course/index |
扫描课程卡片,依次进入未完成课程 |
| 课程详情页 |
#/course/detail |
点击目录标签,获取视频列表,进入视频页 |
| 视频播放页 |
#/video、#/play、#/watch |
自动播放视频,完成后返回课程详情 |
所需权限
| 权限 |
用途 |
unsafeWindow |
访问页面 window 对象 |
GM_setValue |
持久化存储已完成课程和视频记录 |
GM_getValue |
读取已完成课程和视频记录 |
GM_deleteValue |
清除存储数据 |
GM_log |
输出调试日志 |
技术实现
- IIFE 模块化:使用立即执行函数封装,避免全局变量污染
- Promise 异步控制:视频元素等待、页面跳转等操作均使用 async/await
- GM 存储持久化:进度数据跨页面保持,
beforeunload 事件确保数据完整保存
- 多重防重复机制:
_indexPageHandling、_detailPageHandling、_videoPageHandling 标志防止并发执行
_videoCompleted 防抖:防止 pause 和 ended 事件双重触发完成处理
注意事项
- 本脚本仅用于个人学习辅助,请合理使用
- 脚本运行时建议保持浏览器标签页激活,部分浏览器会限制后台标签页的视频播放
- 如遇到验证码阻断,脚本会自动刷新页面,刷新后验证码通常消失
- 重置记录会清除所有课程完成标记,请谨慎操作