智慧教育平台课程包下载器
下载 basic.smartedu.cn(国家中小学智慧教育平台)的课程包全套资源,并转换成常用格式:
| 资源 | 源格式 | 输出格式 | |---|---|---| | 视频课程 | AES-128 加密 HLS (m3u8) | mp4 | | 课件 | PDF | pptx(整页保真) | | 教学设计 / 学习任务单 / 课后练习 | PDF | docx(文本可编辑) |
触发条件
当用户满足以下任一情况时使用本 skill:
- 给出类似
https://basic.smartedu.cn/syncClassroom/classActivity?activityId=...的课程链接 - 直接提供
activityId - 要求「下载智慧平台的课程 / 课件 / 视频 / 教案 / 学习任务单 / 课后练习」
核心约束
- 必须拿到 access_token 才能下载文件。资源清单接口本身公开,但所有视频/文档文件托管在私有 CDN,需
X-ND-AUTH头。token 来自用户已登录的浏览器,无法伪造,需用户配合提供(详见下方)。 - token 有时效(数小时)。若下载报 401/清单为空,请用户重新取 token 后重跑。
- 不要重写脚本:直接调用
{skill_base}/scripts/download_course.py,通过命令行参数传参,不要为绕开流程另写 ad-hoc 下载代码。 - Windows 上请用 WorkBuddy 管理的 Python(如
C:/Users/Administrator/.workbuddy/binaries/python/versions/3.13.12/python.exe)运行;脚本会自动安装所需依赖。
工作流程
第 1 步:从用户处获取两样东西
- activityId:课程链接里
activityId=后面的字符串。 - access_token:引导用户按下方方法从浏览器取得。
第 2 步:获取 access_token(交给用户操作)
请用户在其已登录智慧平台的浏览器中操作:
- F12 → Application(应用) → 左侧 Local Storage →
https://basic.smartedu.cn - 找到值里含
access_token的键,复制其完整 Value(或其中access_token字段) - 把字符串发回
若用户愿意用 Console,可用 Snippets 面板运行 token 提取脚本(见 references/api_notes.md 第 3 节)。拿到后保存为文件,例如 token.txt,后续用 --token-file 传入,避免命令行泄露。
第 3 步:运行下载脚本
python "{skill_base}/scripts/download_course.py" \
--activity-id <activityId> \
--token-file token.txt \
--out ./下载输出目录
也可直接 --token <ACCESS_TOKEN>。可选参数:
--quality 720|480|360:视频清晰度(默认 720)--no-pdf:不保留平台原始 PDF 副本
脚本会:自动装依赖 → 拉取资源清单 → 下载并转换每个资源 → 打印成功/失败清单。
第 4 步:交付与说明
- 输出目录结构:
<课程名>/视频课程/、课件/、教学设计/、学习任务单/、课后练习/,每类含转换后的目标文件 +(默认)原始 PDF 副本。 - 向用户说明两点限制:
- 课件 pptx 为「整页图片式」,视觉一致但文字不可直接选中编辑;
- token 过期后再次下载需重新取。
排错
| 现象 | 处理 |
|---|---|
| 清单下载 401 / 空 | activityId 错误或 token 失效,重取 token |
| 视频失败 | 检查网络;密钥接口需走 signs+sign 流程(脚本已内置,无需手动) |
| No module named fitz/Crypto... | 脚本应已自动安装;若沙箱禁联网,手动 python -m pip install PyMuPDF python-pptx python-docx pycryptodome imageio-ffmpeg |
| pptx/docx 打开为空 | 平台源 PDF 为扫描图,docx 会退化为嵌图;pptx 不受影响 |
详细接口、鉴权与解密算法见 references/api_notes.md。
Scan to join WeChat group