# tchMaterial-parser
**[国家中小学智慧教育平台](https://basic.smartedu.cn/) [电子课本](https://basic.smartedu.cn/tchMaterial/)下载工具**
一键解析并批量下载电子课本文件,自动命名、自动添加书签,开箱即用。
☀️ 浅色模式(左) · 🌙 深色模式(右)
| 方式 | 适用平台 | 获取途径 |
|---|---|---|
| 🐙 GitHub Releases | Windows 10(Server 2019)及以上 / Linux / macOS 10.15 及以上(x86_64、Arm64) | 前往 Releases 页面 |
| 📦 WinGet | Windows 10 / 11 / Server 2025 | winget install tchMaterial-parser |
| 🐧 AUR | Arch Linux | yay -S tchmaterial-parser |
| 🐍 从源码运行 | 任意平台(需 Python 3.10+) | 见下文 |
本项目的 GitHub Releases 页面会发布适用于 Windows 10(Server 2019)及以上、Linux、macOS 10.15 及以上的 x86_64、Arm64 架构的程序。
下载完成之后不需要额外的安装步骤。Windows 和 Linux 可直接运行本程序。
[!WARNING] 在 macOS 操作系统中,由于没有签名,系统会报告文件已被损坏,因此需要先运行
xattr -cr /path/to/tchMaterial-parser.app来移除应用的 “隔离” 属性。为了保证 Access Token 的持久化,建议将应用移动到/Applications目录下再运行。[!NOTE] 如果您使用 Windows 7 或 8.1,您可以使用本项目的一个非官方分支 tchMaterial-parser-for-Windows7,这个分支使用 Python 3.8 语法。
在 Windows 10、Windows 11 与 Windows Server 2025 上,您可以直接在终端中输入以下命令来安装本程序:
winget install happycola233.tchMaterial-parser
感谢 @PtJade-Ceramic 的建议(#64)!
对于 Arch Linux 操作系统,本程序已发布至 Arch 用户软件仓库,因此您可以在终端中输入以下命令来安装本程序:
yay -S tchmaterial-parser
若您想体验最新的改动,或是希望参与开发,可以直接从源码运行本工具,详见贡献者指南。
将电子课本的预览页面网址粘贴到工具文本框中,支持多个 URL(每行一个)。
示例网址:
https://basic.smartedu.cn/tchMaterial/detail?contentType=assets_document&contentId=XXXXXX&catalogType=tchMaterial&subCatalog=tchMaterial
[!TIP] 此操作不是必要的,当未设置 Access Token 时工具会使用其他方法下载资源,但这一方法并不长期有效,因此仍然建议您执行这一步操作。
[!WARNING] 友情提示:
- 先登录账号,再粘贴代码!
- 粘贴代码时,不要粘贴到 “过滤” 或 “筛选器” 上,而是 “>” 后面!
- 粘贴时如遇到警告,请先输入 “允许粘贴” 四个字,然后再次粘贴代码!
js
(function () {
const authKey = Object.keys(localStorage).find(
key => /^ND_UC_AUTH-[^&]+&[^&]+&token$/.test(key),
);
if (!authKey) {
console.error("未找到登录凭据,请确保已登录!");
return;
}
const tokenData = JSON.parse(localStorage.getItem(authKey));
const { access_token, mac_key, diff } = JSON.parse(tokenData.value);
const credentials = JSON.stringify({ access_token, mac_key, diff });
console.log(
"%c请复制下面整段 JSON 并粘贴到下载工具:",
"color: green; font-weight: bold",
);
console.log(credentials);
})();
[!NOTE] Access Token 可能会过期,若下载失败,请重新获取并设置新的 Token。
登录后的
localStorage里还有ND_UC_AUTH-…&sdk_cache(账号资料缓存),里面没有 Token。请运行上面的脚本,不要从开发者工具的 Application 面板里随便复制一项。
点击 “下载” 按钮,工具将自动解析并下载电子课本文件。
本工具支持批量下载,所有文件会自动按课本名称命名并保存在选定目录中。选定目录中已下载完成的同名课本会被自动跳过,因此重新下载整套课本时只会补齐缺失与上次失败的文件。
下载过程中,可随时点击 “停止下载” 按钮来停止本次下载;已完成的文件会保留,未下载完的文件不会留下残缺内容。
“下载管理” 会在开始下载时打开,也可从主界面底部随时进入。列表显示每个文件的排队、连接、下载、写入书签与完成状态;服务器未提供文件大小时,会显示已接收的数据量。关闭管理窗口后,下载仍会继续。
遇到问题时,在 “需处理” 中选择任务即可查看和复制错误详情,不会弹出冗长的批量错误窗口。当前下载结束后,可选择失败或已停止的任务 “重新下载”,也可一键 “重试失败项”;解析失败的页面可单独 “重新解析”。重新下载从头开始。任务记录仅保留至退出程序,“清除已完成记录” 不会删除下载的文件。
若您开启了 “设置 PDF 书签”,则本工具会在课本下载完成后自动为其添加书签,在查看 PDF 时可快速跳转到指定位置。
如果您发现 Bug 或有改进建议,欢迎提交 Issue 或 Pull Request,让我们一起完善本工具!
参与开发前,建议先阅读贡献者指南,了解本地开发、测试检查、Pull Request 与合规边界说明。
感谢所有为本项目做出贡献的朋友:
本项目基于 MIT 许可证,欢迎自由使用和二次开发。
本项目使用了 Microsoft Fluent Emoji 中的部分图片资源,按照 MIT 许可证授权使用。
| 日期 | 榜单 | 排名 | 周期新增 | 总 STAR |
|---|