SCNU 砺儒云 (Moodle) 视频自动观看工具
基于 Playwright 的自动化脚本,支持自动登录华南师范大学砺儒云系统、解析视频列表并完成自动播放。
- ✅ 多种登录方式: 支持账号密码自动登录(推荐)及手动 Cookie 登录
- ✅ 状态自动维护: 自动检测并刷新登录状态
- ✅ 智能链接解析: 自动匹配并提取课程中的视频链接
- ✅ 精准播放控制: 实时检测播放进度,确保视频真正播放完成
- ✅ 断点续播: 自动处理播放中断,确保流程不间断
- ✅ 可视化进度: 基于
rich库构建的美化进度条,实时展示剩余时长 - ✅ 多模式支持: 支持有界面窗口模式或后台无头模式运行
- ✅ 交互式配置引导: 每次启动运行配置向导,已有配置自动作为默认值,连按回车即可快速启动
- ✅ 专为 SCNU 优化: 深度适配华南师范大学 Moodle 平台
本程序依赖系统中已安装的浏览器,请确保您的电脑上安装了以下任一浏览器:
- Microsoft Edge (推荐,已通过完整测试)
- Google Chrome
Note
理论上 Playwright 支持 Firefox / Safari(Webkit),但是这俩用的人都不多,我就懒了,但是也欢迎提交 PR
Tip
目前主要在 Edge 浏览器上进行开发和测试。若在其他浏览器中遇到异常,欢迎提交反馈。
前往 Releases 页面,根据系统和芯片下载对应压缩包并解压,进入文件夹:
- Windows:
fly_video_assignment_away-windows-x86_64.zip - macOS (Apple 芯片,即 M 系列):
fly_video_assignment_away-macos-arm64.tar.gz - macOS (Intel 芯片):
fly_video_assignment_away-macos-x86_64.tar.gz - Linux:
fly_video_assignment_away-linux-x86_64.tar.gz
Important
Windows: 可执行文件未签名,首次双击运行可能被 SmartScreen 拦截并提示「Windows 已保护您的电脑」。点击「更多信息」,再选择「仍要运行」即可。
Important
macOS: 可执行文件未签名未公证,首次运行时系统可能提示「无法打开」或「已损坏」,在终端中移除隔离属性后即可正常运行:
xattr -d com.apple.quarantine fly_video_assignment_away-macos-*我没有 Mac 设备,macOS 可执行文件无法持续测试(从源码运行的方式已有同学验证通过),若不想折腾,直接从源码运行也是省心的选择。
Warning
目前生成的可执行文件发行版(Release)尚未经过充分测试,可能存在运行不稳定的情况。
若您在运行过程中遇到严重问题,建议:
直接双击运行程序。每次启动时,程序都会运行配置向导,引导您确认以下配置;已有配置会作为默认值,直接回车即可沿用:
- 浏览器类型: 选择
msedge或chrome(默认 msedge) - 无头模式: 选择是否隐藏浏览器窗口(默认否,推荐新手显示窗口)
- 课程链接: 输入您需要观看视频的课程页面 URL
如何获取课程链接?
- 登录 砺儒云系统。
- 点击进入您需要观看视频的课程页面。
- 复制浏览器地址栏中的完整 URL(类似于
https://moodle.scnu.edu.cn/course/view.php?id=XXXXX)。
配置完成后,程序会在当前目录创建(或更新).env 文件,内容无变化时不会重写。下次启动时向导会自动带入这些值,连按回车即可快速启动;也可以直接编辑 .env(格式参考 .env.example)。
如果未开启无头模式,程序会自动打开一个浏览器窗口,最小化即可。整个流程全自动完成,请不要手动操作该窗口,也不要关闭浏览器或结束进程,否则程序会直接终止。
如果已有保存的 Cookie 会自动尝试登录;否则推荐选择「账号密码登录」,在命令行中输入账号密码即可自动完成 SSO 登录,程序随后会自动接管播放流程。
如果您熟悉 Python 环境,也可以直接运行源代码:
- Python: 3.13+
- venv 管理: 推荐使用 uv
# 1. 克隆仓库
git clone https://github.com/YewFence/fly_video_assignment_away.git
cd fly_video_assignment_away
# 2. 安装依赖
uv sync
# 3. 运行(每次启动都会运行配置向导,回车即可沿用旧配置)
uv run fly-video-assignment-away如果你不想安装 uv,也可以用 Python 自带的 venv + pip:
# 1. 克隆仓库
git clone https://github.com/YewFence/fly_video_assignment_away.git
cd fly_video_assignment_away
# 2. 创建并激活虚拟环境
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS / Linux:
source .venv/bin/activate
# 3. 安装依赖
pip install .
# 4. 运行(每次启动都会运行配置向导,回车即可沿用旧配置)
fly-video-assignment-awaygraph TD
A[启动程序] --> B{存在已保存的 Cookie?}
B -- 是 --> C[自动尝试 Cookie 登录]
C --> D{登录成功?}
D -- 是 --> F[访问指定的课程页面]
D -- 否 --> E[选择登录方式]
B -- 否 --> E
E --> F
F --> G[扫描并解析视频资源链接]
G --> H[依次进入视频页面播放]
H --> I{是否检测到完成?}
I -- 否 --> H
I -- 是 --> J[跳转下一个视频]
J -- 全部完成 --> K[输出观看汇总]
K --> L[退出程序]
观看期间会并列显示两条进度条:
- 播放进度:当前视频在浏览器中的播放位置(本地实时状态)
- 完成度:平台记录的观看进度,由于平台批量上报(约每 15 秒一批),这条进度会阶梯式增长
信息行中显示的总时长、已观看、剩余、需观看等数据只是估算,完成判断直接查看平台的完成标记,读不到标记时才以视频播放完毕为准。
当视频播放到结尾但平台仍显示"未完成"时,程序会等待最多 30 秒让平台更新状态。如果仍未确认,程序会给出警告并跳到下一个视频,避免卡住整个批量。
所有视频处理完成或中途中断(Ctrl+C、关闭浏览器)时,程序会输出观看汇总:
- 平台已确认完成的视频数量
- 已播放到结尾但读不到平台标记的数量
- 未确认完成的视频链接,需要到砺儒云手动确认
- 未处理的视频数量(中断时),重新运行程序可以继续
启动程序后,选择 账号密码登录 模式,在命令行中输入账号和密码。程序会自动完成 SSO 登录并获取砺儒云的会话 Cookie,全程无需手动操作浏览器。登录成功后 Cookie 会自动保存,下次启动时会优先尝试复用。
Warning
短时间登录错误次数过多会导致账户被锁定一个小时,请确认账号密码无误后再重试。别问我怎么知道这事的
- 安装 Cookie-Editor 扩展。
- 在浏览器中登录 SCNU 砺儒云。
- 点击插件,选择 "Export" 将 Cookies 导出为 JSON 格式。
- 运行程序,选择
使用您手动获取的 Cookies 登录模式,将导出的内容粘贴进程序中。
更多细节参见 详细 Cookie 获取指南。
本工具在您的电脑上纯本地运行,不内置遥测或统计上报,除砺儒云及其登录、视频服务外不连接任何地址。
- 不保存账号密码: 密码仅在内存中用于本次登录,不会写入任何文件;登录成功后只保存会话 Cookie。
- Cookie 即登录态: 会话 Cookie 以明文保存在本机
cookies.json中,等同登录凭证。请妥善保管.env和cookies.json,切勿分享给他人或上传至公开平台。 - 不碰您的浏览器: 程序以独立临时配置启动新的浏览器实例,不影响您已打开的窗口和日常配置。
- 本地运行日志: 运行详情记录在运行目录的
log/文件夹中,内容包括运行流程和访问的页面 URL,不包含账号密码或 Cookie。不过在分享日志前还是建议先核实一遍。 - 合理使用: 本工具仅用于辅助学习,请确保您的使用行为符合学校相关规定。
Q: 为什么不需要单独下载浏览器驱动? A: 本项目基于 Playwright,默认会尝试调用系统中已安装的浏览器,无需手动管理 WebDriver。
Q: 配置/数据存储在哪里?/如何卸载?
A: 课程链接与浏览器偏好会存储在运行目录的 .env 文件内(该文件在多数系统中默认隐藏);账户密码不会存储;登录状态凭据存储在运行目录的 cookies.json;运行日志保存在运行目录的 log/ 文件夹中。卸载时删除程序本体、.env、cookies.json 和 log/ 文件夹即可。如果你把它从压缩包中解压出来并放入了单独的文件夹,那么直接整个文件夹删掉即可
Q: 如何手动更新配置?
A: 用你喜欢的编辑器打开运行目录下的 .env 文件(首次运行并完成配置更新引导流程后会自动创建)根据注释自行更改即可,重新启动程序即生效
Q: 浏览器是 Flatpak 等非标准方式安装的,程序找不到怎么办?
A: 可以通过 .env 或同名环境变量手动指定浏览器:推荐用 BROWSER_EXECUTABLE_PATH 直接指向浏览器可执行文件,或用 CDP_ENDPOINT 连接自己启动的浏览器。详细配置方法参见故障排除指南。
Q: 登录状态失效怎么办? A: 如果 Cookie 过期,最简单的方法是重新运行程序并选择账号密码登录。
项目使用 mise 统一管理工具链和可复用任务:
mise trust
mise install
mise run hooks:install
mise run check完整开发流程参见 CONTRIBUTING.md。
如果您在使用过程中遇到任何问题或有改进建议,欢迎提交 Issue。
本项目基于 MIT License 协议开源。
感谢支持!