Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

smartedu-downloader

国家中小学智慧教育平台(basic.smartedu.cn)教材资源下载工具

License Node Platform

一键批量下载教材听力音频(MP3)和教材电子版(PDF)。既是 WorkBuddy / CodeBuddy Agent Skill,也可作为独立 Node.js 脚本使用。

💡 本仓库 edu_skills 收录教育相关技能,当前包含 smartedu-downloader

功能特性

功能 说明
🎧 听力下载 批量抓取英语等学科的 Listening MP3
📄 PDF 下载 下载教科书电子版本体 PDF
🤖 auto 模式 有听力则下听力,没有则自动切换下 PDF
📦 批量处理 一次登录连续下载多个教材
🏷️ 自动命名 按教材官方标题自动命名文件

已实测支持:外研社版英语(七上/七下/八上/八下)听力,以及语文/数学/英语/生物/历史/地理等各学科教材 PDF。

目录结构

smartedu-downloader/
├── README.md                       # 本文件
├── SKILL.md                        # 技能说明(含完整技术细节与排错)
├── LICENSE                         # MIT 协议
├── .gitignore
└── scripts/
    └── smartedu_downloader.js      # 统一下载脚本(听力 + PDF)

工作原理

  • 平台的资源清单 API 无需登录即可访问,但实际文件 CDN(r*-ndr-private.ykt.cbern.com.cn)自 2024 年 8 月起需要 X-Nd-Auth 鉴权头。
  • 该鉴权头由登录后 token 中的 access_token + mac_key 经 HMAC-SHA256 生成。
  • 登录会触发腾讯滑块验证码(无法自动破解),因此采用「脚本自动填账号密码 + 用户手动拖动滑块 + 脚本自动取 token 并下载」的混合方式。

快速开始

1. 获取代码

git clone https://github.com/huang772607830/edu_skills.git
cd edu_skills

2. 安装依赖

需要 Node.js 18+ 和 playwright(含 chromium):

npm install playwright
npx playwright install chromium

3. 找到教材的 contentId

打开教材页面,从浏览器地址栏 URL 中复制 contentId 的值:

https://basic.smartedu.cn/tchMaterial/detail?...contentId=b7ca9536-ccd7-a4db-56b3-971645c54515...
                                                        └──────────── 这一段就是 contentId ────────────┘

4. 运行下载

所有参数通过环境变量传入:

变量 说明
SMARTEDU_PHONE 登录手机号(必需)
SMARTEDU_PASS 登录密码(必需)
SMARTEDU_JOBS JSON 数组 [{"cid":"<contentId>","name":"<可选名称>"}](必需)
SMARTEDU_OUTPUT_DIR 输出根目录(默认 ./smartedu_downloads
SMARTEDU_MODE audio | pdf | auto(默认 auto

示例(一次登录批量下载多个教材):

SMARTEDU_PHONE="你的手机号" SMARTEDU_PASS="你的密码" \
SMARTEDU_MODE="auto" \
SMARTEDU_OUTPUT_DIR="./downloads" \
SMARTEDU_JOBS='[
  {"cid":"b7ca9536-ccd7-a4db-56b3-971645c54515"},
  {"cid":"540ac93d-67fc-4353-9e49-1ef20d02b5a4"}
]' \
node scripts/smartedu_downloader.js

运行后浏览器会弹出并自动填好账号密码,请手动:

① 点击「登录」按钮 → ② 拖动滑块验证码 → ③ 等待自动跳转

之后脚本自动取 token 并下载全部教材。name 省略时会自动用教材官方标题命名。

常见问题(FAQ)

Q:运行后一直卡住 / 提示 5 分钟超时? A:脚本最多等 6 分钟让你手动完成「登录 + 滑块验证码」。确保浏览器弹窗里点了登录并拖动滑块通过验证。不要用后台方式运行,否则看不到浏览器窗口。

Q:下载失败,报 Connection was reset 或超时? A:多为网络/代理问题。若开了系统代理(如 HTTP_PROXY 环境变量),确保代理软件正在运行;否则关闭代理走直连。

Q:某个教材下不到听力? A:非英语学科(语文/数学/历史等)通常没有听力音频。auto 模式会自动改下该教材的 PDF 本体。

Q:token 相关报错(缺少 access_token / mac_key)? A:平台 token 为嵌套结构 {value:"<json>", expire},脚本已自动解包。若仍报错,多为登录未真正完成,请重试并确认验证码通过。

更多技术细节与排错见 SKILL.md

作为 WorkBuddy / CodeBuddy 技能使用

将本技能目录放到用户级技能目录下:

git clone https://github.com/huang772607830/edu_skills.git \
  ~/.workbuddy/skills/smartedu-downloader

之后在对话中说「用智慧教育下载器下载教材」并提供账号和教材链接即可自动触发。

隐私与免责

  • 账号密码仅用于当次登录,通过环境变量传入,不写入任何文件或日志
  • 下载所得为教材公开资源,仅供个人学习使用,请勿用于商业用途或大规模爬取
  • 本工具与国家中小学智慧教育平台无任何官方关联。

License

MIT

About

智慧中小学教材批量下载工具,高中教材,初中教材,小学教材,批量导出听力MP3、电子课本PDF,教材下载技能;workbuddy/codex安装即可使用

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Packages

Contributors

Languages