Explore
Topics
Collections
Documents
FAQ
GitHub
Explore repos
Explore
Topics
Collections
Documents
FAQ
GitHub
Explore repos
Explore
/
JavaScript
/
xuexitongScript
chaolucky18 ·
Trending
chaolucky18/xuexitongScript
学习通自动刷课脚本
View on GitHub
Copy link
Back to listing
2.9k
stars
379
forks
7
contributors
JavaScript
README.md
View on GitHub
# 学习通自动刷课脚本 V3 稳定版 当前版本以 `v3_optimized.js` 为唯一源码,油猴版由构建脚本生成。它聚焦于稳定播放与课程导航: - 自动播放视频 - 视频结束后自动切换到下一小节 - 章节测验页面的受限跳转(最多尝试 3 次,防止循环) - 从“学习目标”步骤自动切到“视频”步骤 - 手动点“2视频”页签后自动重新接管播放 这版的目标是保持原模板的行为方式,不再额外叠加复杂的后台保活、通知、测试按钮等附加层,尽量减少冲突。 ## 文件说明 - [v3_optimized.js](v3_optimized.js) 控制台直接执行版本 - [v3_optimized.user.js](v3_optimized.user.js) Tampermonkey 油猴版本 - [scripts/build-userscript.mjs](scripts/build-userscript.mjs) 根据控制台版本生成油猴版 ## 当前脚本行为 ### 1. 学习目标页 如果当前小节先进入的是“学习目标”而不是视频页,脚本会尝试点击顶部的 `2视频` / `视频` 标签进入视频步骤。 说明: - 这条路径已经按当前页面结构收紧,只走顶部视频标签,不再点击底部 `下一节` 按钮 - 原因是底部按钮在当前页面里可能触发额外调试/暂停逻辑,稳定性较差 ### 2. 视频页 进入视频页后,脚本会: - 识别 iframe 内的真实视频元素 - 自动调用 `play()` - 如果播放被短暂中断,则尝试恢复播放 - 如果普通播放失败,则尝试静音播放 当前默认配置: ```javascript configs: { playbackRate: 1.5, autoplay: true, retryInterval: 2000, maxRetries: 10, videoCheckInterval: 1000, autoAdvanceNoVideo: false, } ``` ### 3. 视频结束后 视频触发结束事件后,脚本会调用 `nextUnit()`,在课程目录树中定位到下一小节并点击进入。 ### 4. 章节测验 如果当前不是视频而是“章节测验”页面,脚本会尝试点击: ```javascript #prevNextFocusNext ``` 以跳过当前测验步骤并继续后续流程。 ## 使用方法 ### 方法一:控制台执行 1. 打开学习通课程播放页 2. 按 `F12` 3. 进入 `Console` 4. 复制 [v3_optimized.js](v3_optimized.js) 全部内容 5. 粘贴并执行 首次执行后可用: ```javascript app.run() app.nextUnit() ``` ### 方法二:Tampermonkey 1. 安装 Tampermonkey 2. 导入 [v3_optimized.user.js](v3_optimized.user.js) 3. 确认脚本已启用 4. 刷新学习通播放页面 ## 已知说明 ### 0. 无视频或课件页面 默认不会自动跳过无法识别的无视频页面,避免在课件未完成时反复触发“当前章节还有任务未完成”的平台提示。控制台会给出明确日志;确认当前节点无需处理后,可手动执行 `app.nextUnit()`。 如果课程结构已确认安全,才可在控制台将 `app.configs.autoAdvanceNoVideo = true`,让脚本自动切换无视频小节。 ### 1. 为什么有时会看到 `AbortError` 常见报错: ```text The play() request was interrupted by a call to pause() ``` 这通常不是视频坏了,而是: - 页面从步骤页切到视频页时,播放器初始化会短暂停一下 - 页面内部脚本会在加载过程中重置播放状态 - 浏览器对媒体播放请求进行了短暂中断 脚本会优先尝试恢复播放,而不是立即判定失败。 ### 2. 为什么会出现重复日志 如果同一页面反复粘贴执行脚本,会导致同一套监听和定时逻辑叠加,从而出现多次日志。 建议: - 刷新页面后只执行一次 - 如果使用油猴版,尽量不要再在控制台重复粘贴执行 ### 3. 为什么“静音播放成功”但一开始还能听到声音 旧逻辑里曾经会在静音启动成功后恢复声音。当前建议使用持续静音方式,不再自动恢复。 ## 当前调试结论 目前这版已经验证: - 顶部 `2视频` 标签可以程序化点击 - 手动进入视频页后可以自动播放 - 静音恢复链路可用 目前重点保留的是稳定性,不再继续叠加额外功能。 ## 维护与验证 修改 `v3_optimized.js` 后,执行: ```bash node scripts/build-userscript.mjs node tests/verify-v3.mjs ``` 第二条命令会验证两个入口的语法,并确认油猴脚本与唯一源码完全一致。 ## 免责声明 本项目仅用于脚本调试、前端自动化研究和页面行为分析,请遵守目标平台的使用规定。
Live Chat