Skip to content
Proyectos

chaolucky18/xuexitongScript has 3,902 GitHub stars and 449 forks. GitHot measured +33 stars in 24 hours. Last checked 2026-11-08 16:08 UTC. Last push 2026-10-16.

Cómo se miden estas cifras

学习通自动刷课脚本

Crecimiento de estrellas medido

in 24h
+33
in 7 days
Recopilando historial
in 15 days
Recopilando historial
in 1 month
Recopilando historial

Cambios netos en períodos que se solapan, no totales diarios. Los datos no disponibles se dejan en blanco. Las estrellas indican interés, no calidad.

README.md

Original

学习通自动刷课脚本 V3 稳定版

当前版本以 v3_optimized.js 为唯一源码,油猴版由构建脚本生成。它聚焦于稳定播放与课程导航:

  • 自动播放视频
  • 视频结束后自动切换到下一小节
  • 章节测验页面的受限跳转(最多尝试 3 次,防止循环)
  • 从“学习目标”步骤自动切到“视频”步骤
  • 手动点“2视频”页签后自动重新接管播放

这版的目标是保持原模板的行为方式,不再额外叠加复杂的后台保活、通知、测试按钮等附加层,尽量减少冲突。

DeepSeek 控制台练习版

仓库新增了独立的 DeepSeek 控制台版,通过本地服务调用 DeepSeek API,识别章节练习题并辅助作答。原有 V3 脚本入口保持不变。

文件说明

当前脚本行为

1. 学习目标页

如果当前小节先进入的是“学习目标”而不是视频页,脚本会尝试点击顶部的 2视频 / 视频 标签进入视频步骤。

说明:

  • 这条路径已经按当前页面结构收紧,只走顶部视频标签,不再点击底部 下一节 按钮
  • 原因是底部按钮在当前页面里可能触发额外调试/暂停逻辑,稳定性较差

2. 视频页

进入视频页后,脚本会:

  • 识别 iframe 内的真实视频元素
  • 自动调用 play()
  • 如果播放被短暂中断,则尝试恢复播放
  • 如果普通播放失败,则尝试静音播放

当前默认配置:

configs: {
    playbackRate: 1.5,
    autoplay: true,
    retryInterval: 2000,
    maxRetries: 10,
    videoCheckInterval: 1000,
    autoAdvanceNoVideo: false,
}

3. 视频结束后

视频触发结束事件后,脚本会调用 nextUnit(),在课程目录树中定位到下一小节并点击进入。

4. 章节测验

如果当前不是视频而是“章节测验”页面,脚本会尝试点击:

#prevNextFocusNext

以跳过当前测验步骤并继续后续流程。

使用方法

方法一:控制台执行

  1. 打开学习通课程播放页
  2. 按 F12
  3. 进入 Console
  4. 复制 v3_optimized.js 全部内容
  5. 粘贴并执行

首次执行后可用:

app.run()
app.nextUnit()

方法二:Tampermonkey

  1. 安装 Tampermonkey
  2. 导入 v3_optimized.user.js
  3. 确认脚本已启用
  4. 刷新学习通播放页面

已知说明

0. 无视频或课件页面

默认不会自动跳过无法识别的无视频页面,避免在课件未完成时反复触发“当前章节还有任务未完成”的平台提示。控制台会给出明确日志;确认当前节点无需处理后,可手动执行 app.nextUnit()。

如果课程结构已确认安全,才可在控制台将 app.configs.autoAdvanceNoVideo = true,让脚本自动切换无视频小节。

1. 为什么有时会看到 AbortError

常见报错:

The play() request was interrupted by a call to pause()

这通常不是视频坏了,而是:

  • 页面从步骤页切到视频页时,播放器初始化会短暂停一下
  • 页面内部脚本会在加载过程中重置播放状态
  • 浏览器对媒体播放请求进行了短暂中断

脚本会优先尝试恢复播放,而不是立即判定失败。

2. 为什么会出现重复日志

如果同一页面反复粘贴执行脚本,会导致同一套监听和定时逻辑叠加,从而出现多次日志。

建议:

  • 刷新页面后只执行一次
  • 如果使用油猴版,尽量不要再在控制台重复粘贴执行

3. 为什么“静音播放成功”但一开始还能听到声音

旧逻辑里曾经会在静音启动成功后恢复声音。当前建议使用持续静音方式,不再自动恢复。

当前调试结论

目前这版已经验证:

  • 顶部 2视频 标签可以程序化点击
  • 手动进入视频页后可以自动播放
  • 静音恢复链路可用

目前重点保留的是稳定性,不再继续叠加额外功能。

维护与验证

修改 v3_optimized.js 后,执行:

node scripts/build-userscript.mjs
node tests/verify-v3.mjs

第二条命令会验证两个入口的语法,并确认油猴脚本与唯一源码完全一致。

免责声明

本项目仅用于脚本调试、前端自动化研究和页面行为分析,请遵守目标平台的使用规定。

Explorar proyectos relacionados