智慧教育教材批量下载
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_bade459d/smartedu-downloader。
技能介绍
要解决什么问题
国家中小学智慧教育平台(basic.smartedu.cn)上的教材电子版(PDF)和英语等学科的听力(MP3)可以公开浏览,但自 2024 年 8 月起,实际文件 CDN(r*-ndr-private.ykt.cbern.com.cn)下载必须携带 X-Nd-Auth 鉴权头。该头由登录后的 access_token 与 mac_key 经 HMAC-SHA256 生成;登录页还有腾讯滑块验证码,无法在无头脚本里自动过验。
若你手上有几十、几百个 contentId,逐本在浏览器里点下载既慢,也容易因 token 过期或目录混乱而重复劳动。本技能面向「清单驱动 + 可控节流 + 可续跑」的批量场景。
技能如何工作
- 收集任务:从教材详情 URL 提取
contentId作为cid;任务可写入 JSON(cid/ 可选name/ 可选dir分子目录),或通过环境变量传入小清单。 - 先探测类型(无需登录):调用公开的资源清单 API,确认每本是「有听力 MP3」还是「仅 PDF」,并拿到官方标题,便于下载前核对。
- 登录取 token:推荐扫码登录(浏览器前台窗口,手机 App 扫码);也可选账号密码自动填表,但滑块需人工拖动。token 写入
localStorage后,脚本解析嵌套 JSON 并生成 X-Nd-Auth。 - 批量下载:
SMARTEDU_MODE为auto时,有relation_audios则下听力,否则下 PDF;支持批间延迟、每 N 本冷却,以及断点续传(已存在且大小合理则跳过)。 - 校验:MP3 检查 ID3/帧头与最小体积;PDF 检查
%PDF-头与尾部%%EOF,再展示输出目录。
平台还提供无需登录的全站目录分片(data_version.json → part_100..103.json),可用来批量生成 jobs。
适用边界与注意点
- 依赖 Playwright + Chromium,脚本以 前台浏览器(
headless: false)运行;勿后台跑,否则难观察登录与任务进度。 - 非英语等学科常无听力,应期望 PDF;
auto会处理,勿强行只下 audio。 - 登录轮询时若仍在 auth 域名,脚本不会强行
page.goto,避免冲掉验证码界面。 - 账号密码仅经环境变量用于当次登录,不要写入文件或日志;下载内容供个人学习,请遵守平台与版权规定。
使用场景
- 学期初你有一份按年级、学科整理的教材清单,需要从 basic.smartedu.cn 批量下载 PDF 与听力 MP3,并按 `dir` 字段落到本地子目录。
- 英语备课前拿到几十个教材详情链接,想先不登录确认哪些条目有 `relation_audios`,再扫码登录一次性下完 Listening。
- 你从全站目录分片筛出某版本全部 `contentId`,写成 jobs.json,用批间延迟和冷却规则连续拉取,避免手动逐本点下载。
- 上次批下中途失败或 token 过期,重跑时希望已完整的 MP3/PDF 自动跳过,只补下缺失或损坏的文件。
适合人员
- 中小学英语教师,每学期要把多本教材听力按单元下载到本地,用于课堂播放或离线备课。
- 家长或家庭助教,需要按学段/学科分子文件夹批量保存电子版 PDF,供孩子无网环境阅读。
- 教研员或资源管理员,维护数百条 contentId 清单,要求节流批下、断点续传并做 PDF/MP3 完整性校验。
- 熟悉 Node 与 Playwright 的校内 IT,负责在腾讯滑块环境下完成扫码登录并连续拉取多本教材到指定输出目录。