Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

SYSU LMS Remote Assist

一个用于中山大学 SYSU LMS 的 Tampermonkey / Violentmonkey 用户脚本。它会在 LMS 页面右下角添加一组大按钮,方便远程桌面、触屏、投屏或小屏环境下手动控制课程视频、滚动页面、切换全屏和跳转下一项。

脚本还提供一个由用户手动开启的“自动进行”模式:播放当前可见视频,视频结束后点击 LMS 页面底部的课程“下一项”导航;遇到讨论区页面时跳过讨论区,继续进入下一项。

适用范围

  • 站点:https://lms.sysu.edu.cn/*
  • 类型:浏览器用户脚本
  • 管理器:Tampermonkey、Violentmonkey 或兼容 userscript 管理器
  • 浏览器:Chrome / Edge / Firefox 等现代浏览器

主要功能

  • 大尺寸浮动控制面板,适合远程操作。
  • 播放 / 暂停当前页面主要视频。
  • 后退 15 秒、前进 15 秒。
  • 进入 / 退出全屏。
  • 静音 / 取消静音当前视频。
  • 向上 / 向下滚动页面。
  • 点击课程底部“下一项”。
  • 记录已完成多少节视频课,并在面板显示累计数量。
  • 自动播放当前视频,结束后进入下一项。
  • 自动模式下播放视频前会先静音,降低浏览器拦截自动播放的概率。
  • 自动模式下定期检查视频状态,误触暂停后会尝试继续播放。
  • 自动跳过讨论区页面。
  • 自动模式跨 LMS 页面跳转恢复。
  • 排除讨论区分页按钮,避免把帖子翻页误识别为课程下一项。
  • 排除上一项导航,避免视频结束后跳回上一节。

安装方法

  1. 安装 Tampermonkey 或 Violentmonkey。
  2. 新建用户脚本。
  3. lms_remote_assist.user.js 的内容粘贴进去。
  4. 保存脚本。
  5. 打开或刷新 https://lms.sysu.edu.cn/ 下的课程页面。
  6. 页面右下角出现“远程手动控制”面板后即可使用。

使用方式

手动控制

打开课程视频页面后,可以直接使用右下角面板:

  • 播放/暂停:控制当前页面最大、最主要的可见视频。
  • 全屏:对视频或页面执行浏览器全屏。
  • 静音 / 取消静音:切换当前主要视频的静音状态。
  • 后退15秒 / 前进15秒:调整视频进度。
  • 向上滚动 / 向下滚动:按视口高度滚动页面。
  • 下一项:点击 LMS 底部课程导航里的下一项。
  • 重置计数:将“已刷课程”累计数量清零。
  • 收起:只保留一个小控制按钮,减少遮挡。

自动进行

点击 开始自动进行 后:

  1. 如果当前页面有视频,脚本会尝试播放视频。
  2. 自动模式会先把当前视频设为静音,再尝试播放。
  3. 视频结束后,脚本点击 LMS 底部课程导航中的下一项。
  4. 如果下一项是讨论区,脚本会识别并跳过。
  5. 如果视频因为误触、焦点变化或播放器状态变化暂停,脚本会定期检测并尝试继续播放。
  6. 页面跳转后,脚本会从浏览器存储中恢复自动模式,并继续处理新页面。
  7. 点击 停止自动进行 会停止当前自动流程,并清除跨页面恢复标记。

“已刷课程”计数只会在当前视频页面被判断为播放完成时累计一次,不会把讨论区分页或普通翻页点击都算进去。

设计原则

这个脚本只做可见页面控件层面的辅助操作:

  • 不修改 LMS 后端数据。
  • 不伪造学习进度。
  • 不隐藏调用课程接口。
  • 不绕过浏览器自动播放限制。
  • 不在用户未开启自动模式时自动跳转页面。

脚本的行为等价于用户在页面上点击可见按钮,主要用于降低远程操作成本。

健壮性处理

SYSU LMS 的课程页面、视频页面和讨论区页面结构并不完全一致,因此脚本做了多层识别:

  • 视频选择:优先选择页面中面积最大且可见的视频。
  • 下一项识别:对课程导航候选项打分,优先右侧、包含 下一next 等信号的块。
  • 上一项排除:排除包含 上一prev 等信号的候选项。
  • 讨论区分页排除:排除 .pagination.paging 等分页容器,以及带 page=数字 的链接。
  • 自动状态恢复:同时使用 sessionStoragelocalStorage 保存自动模式状态。
  • 课程计数持久化:使用浏览器存储保存已完成课程数,刷新页面后仍会显示。
  • 自动静音:自动模式下播放和恢复播放前会设置 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

免责声明

本项目仅用于浏览器端辅助操作,适合远程控制、可访问性增强和个人学习场景。请遵守学校、课程平台和课程教师的相关规定。使用者需要自行确认脚本行为符合所在课程和平台规则。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages