一个用于中山大学 SYSU LMS 的 Tampermonkey / Violentmonkey 用户脚本。它会在 LMS 页面右下角添加一组大按钮,方便远程桌面、触屏、投屏或小屏环境下手动控制课程视频、滚动页面、切换全屏和跳转下一项。
脚本还提供一个由用户手动开启的“自动进行”模式:播放当前可见视频,视频结束后点击 LMS 页面底部的课程“下一项”导航;遇到讨论区页面时跳过讨论区,继续进入下一项。
- 站点:
https://lms.sysu.edu.cn/* - 类型:浏览器用户脚本
- 管理器:Tampermonkey、Violentmonkey 或兼容 userscript 管理器
- 浏览器:Chrome / Edge / Firefox 等现代浏览器
- 大尺寸浮动控制面板,适合远程操作。
- 播放 / 暂停当前页面主要视频。
- 后退 15 秒、前进 15 秒。
- 进入 / 退出全屏。
- 静音 / 取消静音当前视频。
- 向上 / 向下滚动页面。
- 点击课程底部“下一项”。
- 记录已完成多少节视频课,并在面板显示累计数量。
- 自动播放当前视频,结束后进入下一项。
- 自动模式下播放视频前会先静音,降低浏览器拦截自动播放的概率。
- 自动模式下定期检查视频状态,误触暂停后会尝试继续播放。
- 自动跳过讨论区页面。
- 自动模式跨 LMS 页面跳转恢复。
- 排除讨论区分页按钮,避免把帖子翻页误识别为课程下一项。
- 排除上一项导航,避免视频结束后跳回上一节。
- 安装 Tampermonkey 或 Violentmonkey。
- 新建用户脚本。
- 将
lms_remote_assist.user.js的内容粘贴进去。 - 保存脚本。
- 打开或刷新
https://lms.sysu.edu.cn/下的课程页面。 - 页面右下角出现“远程手动控制”面板后即可使用。
打开课程视频页面后,可以直接使用右下角面板:
播放/暂停:控制当前页面最大、最主要的可见视频。全屏:对视频或页面执行浏览器全屏。静音/取消静音:切换当前主要视频的静音状态。后退15秒/前进15秒:调整视频进度。向上滚动/向下滚动:按视口高度滚动页面。下一项:点击 LMS 底部课程导航里的下一项。重置计数:将“已刷课程”累计数量清零。收起:只保留一个小控制按钮,减少遮挡。
点击 开始自动进行 后:
- 如果当前页面有视频,脚本会尝试播放视频。
- 自动模式会先把当前视频设为静音,再尝试播放。
- 视频结束后,脚本点击 LMS 底部课程导航中的下一项。
- 如果下一项是讨论区,脚本会识别并跳过。
- 如果视频因为误触、焦点变化或播放器状态变化暂停,脚本会定期检测并尝试继续播放。
- 页面跳转后,脚本会从浏览器存储中恢复自动模式,并继续处理新页面。
- 点击
停止自动进行会停止当前自动流程,并清除跨页面恢复标记。
“已刷课程”计数只会在当前视频页面被判断为播放完成时累计一次,不会把讨论区分页或普通翻页点击都算进去。
这个脚本只做可见页面控件层面的辅助操作:
- 不修改 LMS 后端数据。
- 不伪造学习进度。
- 不隐藏调用课程接口。
- 不绕过浏览器自动播放限制。
- 不在用户未开启自动模式时自动跳转页面。
脚本的行为等价于用户在页面上点击可见按钮,主要用于降低远程操作成本。
SYSU LMS 的课程页面、视频页面和讨论区页面结构并不完全一致,因此脚本做了多层识别:
- 视频选择:优先选择页面中面积最大且可见的视频。
- 下一项识别:对课程导航候选项打分,优先右侧、包含
下一、next、▶等信号的块。 - 上一项排除:排除包含
上一、prev、◀等信号的候选项。 - 讨论区分页排除:排除
.pagination、.paging等分页容器,以及带page=数字的链接。 - 自动状态恢复:同时使用
sessionStorage和localStorage保存自动模式状态。 - 课程计数持久化:使用浏览器存储保存已完成课程数,刷新页面后仍会显示。
- 自动静音:自动模式下播放和恢复播放前会设置
video.muted = true。 - 暂停恢复:自动模式开启时定期检查视频状态,发现暂停会重新调用浏览器原生播放。
- 兼容旧状态:兼容旧版本写入的简单
"1"标记。 - 异步取消:自动流程使用运行编号,停止后旧的定时器和视频结束回调不会继续触发跳转。
请确认:
- 已经更新到最新版脚本。
- 更新脚本后刷新 LMS 页面。
- 点击一次
停止自动进行,再点击开始自动进行重新写入恢复状态。 - 浏览器没有禁用当前站点的本地存储。
浏览器可能阻止未由用户手势触发的视频播放。先手动点击一次页面视频或脚本的 播放/暂停,之后通常可以继续。
讨论区识别依赖 URL、页面文字和常见 DOM 结构。如果 LMS 改版导致识别失败,可以在 Issue 中提供页面截图和按钮附近的 HTML 结构。
最新版已经加入候选项打分、上一项排除和讨论区分页排除。如果仍然误点,请提供页面截图和当前 URL,便于补充选择器。
lms_remote_assist.user.js:用户脚本主文件。README.md:项目介绍、安装和使用说明。
本项目没有构建步骤。修改脚本后可以使用 Node.js 做语法检查:
node --check lms_remote_assist.user.js本项目仅用于浏览器端辅助操作,适合远程控制、可访问性增强和个人学习场景。请遵守学校、课程平台和课程教师的相关规定。使用者需要自行确认脚本行为符合所在课程和平台规则。