本项目是一个 Python 脚本,旨在帮助用户从优学院 (ulearning.cn) 导出指定课程的课件内容。主要功能包括提取课程结构、导出章节内的练习题目(包括题干、选项、题型)、下载题目中的图片,并获取正确答案。最终,脚本会将这些信息整理并输出为易于阅读和存档的 Markdown 和 TeX 文件。
- 课程结构解析: 自动获取并解析指定课程的章节目录和单元结构。
- 课件题目导出:
- 提取章节内各单元(如“练习题”)中的所有题目。
- 获取题目的详细信息:题干、选项(针对选择题等)、题目类型。
- 调用API获取每道题目的正确答案。
- 图片处理:
- 自动识别并下载题目题干和选项中嵌入的图片。
- 图片会保存在对应题目的专属文件夹下,方便管理。
- 多种输出格式:
- 为整个课程(选定章节)生成一份图文并茂的 Markdown (
.md
) 文件。 - 为整个课程(选定章节)生成一份高质量排版的 TeX (
.tex
) 文件。
- 为整个课程(选定章节)生成一份图文并茂的 Markdown (
- 用户自定义选项:
- 选择导出章节: 用户可以指定导出课程中的一个或多个章节,或选择导出全部章节。
- 单个题目详情 (可选): 用户可以选择是否为每道题目在其专属文件夹内额外保存一个
question_info.txt
文件,包含该题目的完整文本信息(课程、章节、单元名、题干、选项、答案等)。
- 智能文件组织:
- 导出的内容会保存在
ulearning_courseware_exports
目录下。 - 每个课程会创建一个以课程ID和名称命名的子文件夹。
- (如果选择保存或题目含图片)在课程文件夹内,会进一步按
章节 -> 单元 -> 题目
的层级创建子文件夹存放图片和question_info.txt
。 - 汇总的 Markdown 和 TeX 文件会以课程名命名,存放在课程主文件夹下。
- 导出的内容会保存在
-
Python 3.x
-
必要的 Python 库:
requests
(用于网络请求)beautifulsoup4
(用于解析HTML内容)
您可以使用 pip (Python包管理器) 来安装这些依赖:
pip install requests beautifulsoup4
-
可选: 如果您希望将生成的
.tex
文件编译为 PDF 文档,您需要在您的计算机上安装一套 LaTeX 发行版(例如 MiKTeX for Windows, TeX Live for Linux/cross-platform, MacTeX for macOS)。
-
克隆或下载仓库: 将本项目代码下载到您的本地计算机。
-
配置必要信息: 打开脚本文件 (例如
ulearning_course_export.py
),在文件顶部的配置区域找到并修改以下变量,填入您从优学院获取的对应信息:COURSE_ID = "你的课程ID" # 例如: "46099" CLASS_ID = "你的班级ID" # 例如: "851527" AUTHORIZATION_TOKEN = "你的授权Token" # 例如: "C79771B17441080DC52C42AF5C67289F"
如何获取这些信息?
COURSE_ID
和CLASS_ID
: 通常可以在浏览器地址栏的URL中找到,当您访问特定课程或班级相关页面时。AUTHORIZATION_TOKEN
: 这是身份验证的关键。- 登录优学院。
- 打开浏览器开发者工具 (通常按 F12 键)。
- 切换到“网络”(Network) 标签页。
- 进行一些操作,例如访问课程页面或点击课件内容,以产生网络请求。
- 在网络请求列表中,查找发往
api.ulearning.cn
域名的请求。 - 点击这些请求,查看其 请求头 (Request Headers)。找到名为
authorization
或ua-authorization
的字段,并复制其完整的值。请确保您复制的是这个头部的值,而不是Cookie中的AUTHORIZATION
。
-
运行脚本: 打开您的终端或命令提示符,导航到脚本所在的目录,然后执行:
ulearning_course_export.py
-
用户交互提示:
- 脚本运行时,会首先列出检测到的所有课程专题(章节)。
- 您将被要求输入希望导出的专题序号(例如
1,3,5
,或输入all
导出全部)。 - 接着,您将被询问是否为每个问题保存详细的
question_info.txt
文件(默认为否)。
-
等待导出完成: ...
- Token 有效期:
AUTHORIZATION_TOKEN
通常具有时效性。如果脚本运行失败并提示认证错误(如HTTP 401),您可能需要重新从浏览器获取一个新的Token并更新到脚本中。 - API 变动风险: 优学院的API接口可能会发生变更,这可能导致脚本功能异常或失效。如果遇到问题,建议检查最新的API请求情况。
- 网络稳定性: 请确保脚本运行时网络连接稳定,以便正常访问优学院API。
- 文件名: 脚本已对文件名和文件夹名中的特殊字符进行处理,但仍需注意不同操作系统对文件名的限制。
- 负责任使用: 请勿过于频繁地运行此脚本,避免对优学院服务器造成不必要的负担或可能触发反爬机制。
- 本脚本仅供个人学习和技术研究目的使用,旨在帮助用户更方便地整理和回顾已学习的优学院课件内容。
- 严禁将此脚本用于任何商业用途或任何可能侵犯优学院及其相关权利方权益的行为。
- 用户需自行承担使用本脚本可能带来的一切风险。脚本开发者不对因使用本脚本而导致的任何直接或间接损失负责。
- 使用本脚本即表示您已阅读并同意此免责声明。请遵守优学院的用户协议和版权政策。
如果您有任何改进建议、发现Bug或希望贡献代码,欢迎通过提交 Pull Requests 或 Issues 来参与。