当前版本基于原始 v3_optimized.js 的主框架整理,只保留稳定可用的核心逻辑:
- 自动播放视频
- 视频结束后自动切换到下一小节
- 章节测验页面自动跳过
- 从“学习目标”步骤自动切到“视频”步骤
- 手动点“2视频”页签后自动重新接管播放
这版的目标是保持原模板的行为方式,不再额外叠加复杂的后台保活、通知、测试按钮等附加层,尽量减少冲突。
- v3_optimized.js 控制台直接执行版本
- v3_optimized.user.js Tampermonkey 油猴版本
- test_serverchan_push.py 独立的 Server酱推送调试脚本
如果当前小节先进入的是“学习目标”而不是视频页,脚本会尝试点击顶部的 2视频 / 视频 标签进入视频步骤。
说明:
- 这条路径已经按当前页面结构收紧,只走顶部视频标签,不再点击底部
下一节按钮 - 原因是底部按钮在当前页面里可能触发额外调试/暂停逻辑,稳定性较差
进入视频页后,脚本会:
- 识别 iframe 内的真实视频元素
- 自动调用
play() - 如果播放被短暂中断,则尝试恢复播放
- 如果普通播放失败,则尝试静音播放
当前默认配置:
configs: {
playbackRate: 1.5,
autoplay: true,
retryInterval: 2000,
maxRetries: 10,
videoCheckInterval: 1000,
}视频触发结束事件后,脚本会调用 nextUnit(),在课程目录树中定位到下一小节并点击进入。
如果当前不是视频而是“章节测验”页面,脚本会尝试点击:
#prevNextFocusNext以跳过当前测验步骤并继续后续流程。
- 打开学习通课程播放页
- 按
F12 - 进入
Console - 复制 v3_optimized.js 全部内容
- 粘贴并执行
首次执行后可用:
app.run()
app.nextUnit()- 安装 Tampermonkey
- 导入 v3_optimized.user.js
- 确认脚本已启用
- 刷新学习通播放页面
常见报错:
The play() request was interrupted by a call to pause()
这通常不是视频坏了,而是:
- 页面从步骤页切到视频页时,播放器初始化会短暂停一下
- 页面内部脚本会在加载过程中重置播放状态
- 浏览器对媒体播放请求进行了短暂中断
脚本会优先尝试恢复播放,而不是立即判定失败。
如果同一页面反复粘贴执行脚本,会导致同一套监听和定时逻辑叠加,从而出现多次日志。
建议:
- 刷新页面后只执行一次
- 如果使用油猴版,尽量不要再在控制台重复粘贴执行
旧逻辑里曾经会在静音启动成功后恢复声音。当前建议使用持续静音方式,不再自动恢复。
目前这版已经验证:
- 顶部
2视频标签可以程序化点击 - 手动进入视频页后可以自动播放
- 静音恢复链路可用
目前重点保留的是稳定性,不再继续叠加额外功能。
本项目仅用于脚本调试、前端自动化研究和页面行为分析,请遵守目标平台的使用规定。