Skip to content

Releases: KunyQi/moodle-downloader

v2.2.0 — AI Agent 学习层 / Agent study layer

Choose a tag to compare

@KunyQi KunyQi released this 28 Jul 16:49

🤖 把课件变成 AI Agent 能查询的知识库

v2.2.0 让下载完的课件不再只是硬盘上的一堆 PDF。新增的学习层可以索引本地课件、导出 Obsidian 知识库、生成复习 notebook,并通过 MCP 服务把这些内容开放给 Claude Code 等 AI agent。

全部操作本地文件,不需要登录 Moodle —— 复习流程在认证之前就短路返回了。

python main.py --index                    # 索引本地课件
python main.py --obsidian vault           # 导出 Obsidian 知识库
python main.py --notebook revision.ipynb --days 7   # 生成复习 notebook
python -m moodle_scraper.mcp_server --root .        # 给 agent 用的 MCP 服务

接入 Claude Code:

claude mcp add moodle -- python -m moodle_scraper.mcp_server --root /path/to/materials

✨ 新增 / Added

  • MCP 服务moodle_scraper/mcp_server.py)—— 手写 JSON-RPC over stdio,零额外依赖。5 个工具:list_coursessearch_materialsget_material_textcourse_overviewrevision_plan
  • Obsidian 导出study/obsidian.py)—— 每门课一个 MOC 索引页,材料按周分目录;每篇笔记带 YAML frontmatter、原文件嵌入、复习要点空白区、正文摘要与 wikilink 互联
  • 复习 notebookstudy/notebook.py)—— nbformat 4.5 纯 JSON 生成,含 N 天复习计划与「空白回忆」自测区
  • 本地索引study/index.py)—— 按文件名启发式识别材料类型与周次,可选提取正文,落盘 .moodle-index.json
  • 复习 Skillskills/moodle-revision/)—— 让支持 Skills 的 agent 学会完整复习流程
  • 排期唯一事实源study/planner.py)—— MCP 与 notebook 共用同一套排序与间隔重复实现

🔧 修复 / Fixed

  • revision_plan 此前只做均分、不含间隔重复复习位(只有 notebook 有),现已补齐 d-1 / d-3 / d-7 复习安排,两条路径结果保证一致
  • 消除 MCP 与 notebook 中重复的排序 / 分天实现(约 60 行),根除了两者结果漂移的可能
  • 多课程 notebook 会重复输出课程标题
  • SKILL.md 曾描述过一个实际不存在的能力,已修正

⚠️ 如实说明 / Honest notes

请在使用前了解这些边界:

  • 这不是"官方 ChatGPT Work 集成"。本项目提供的是标准接口:MCP 服务、Obsidian vault、.ipynb、Skill 文件。Claude Code / Claude Desktop 可直接接入;ChatGPT 能否使用取决于它自身的 MCP 连接器支持。除此之外没有任何厂商专有集成。
  • PDF 正文提取未经真实环境验证。该功能通过 pypdf / pdfminer 懒加载,但开发环境两者都未安装,因此只测试到了「库缺失时降级为空文本」这条路径。真实 PDF 的提取质量尚未验证。想要全文检索请 pip install pypdf;不装也能正常运行,只是检索退化为按文件名匹配。
  • .txt / .md / .csv 的正文提取无需任何额外依赖,这部分经过完整验证。
  • 材料类型与周次是启发式识别,靠文件名匹配关键词(Week 3Wk3Topic 3lecturelab 等)。命名不规范的课件可能被归为 other 或识别不出周次——这不影响下载与导出,只影响排序与分组。
  • 测试全部离线,287 项通过。网络访问隐藏在 Protocol 接缝之后,测试用假 HTTP 客户端注入预设响应,不触碰真实 Moodle。

📦 依赖 / Dependencies

无新增硬依赖,仍是 requestsbeautifulsoup4seleniumrich


Full Changelog: v2.1.0...v2.2.0

v2.1.0 — 中英双语界面 / Bilingual UI

Choose a tag to compare

@KunyQi KunyQi released this 12 Jul 18:26

🌏 中英双语界面 / Bilingual Interface

v2.1.0 的主角:完整的英文界面上线。所有终端文案(状态消息、表格、面板、进度条、错误提示)都有了中英两套目录,一行命令切换:

python main.py --lang en

或在 config.toml 中持久设置:

[ui]
language = "en"   # "zh" 或 "en"

The headline of v2.1.0: a full English interface. Every terminal string — status messages, tables, panels, progress bars, error dialogs — now ships in both Chinese and English. Switch with --lang en or set it once in config.toml.

✨ 新增 / Added

  • moodle_scraper/i18n.py:中/英文案目录 + t() 取词函数,测试强制两套目录键与占位符完全一致
  • --lang zh|en 命令行参数与 [ui] language 配置项(支持 englishzh-CN 等别名,无法识别时回退中文并提示)
  • main.py 帮助与崩溃画面改为双语静态文本,依赖缺失时也能正常显示
  • README 重写为双语宣传版,附由真实 UI 渲染生成的终端演示图(scripts/gen_demo_svg.py 可复现)

🔧 修复 / Fixed

  • 启动器菜单选项 3/4 的参数错误与 set /p 延迟展开问题
  • 登录提示笔误 UNWS → UNSW;提示不再写死 Edge(实际支持 Chrome / Edge / Firefox 自动检测)

✅ 质量 / Quality

  • 新增 tests/test_i18n.py;全部 72 项测试离线通过
  • 中文界面输出与 v2.0.0 逐字一致——只加语言,不改行为

Full Changelog: af2aa8e...v2.1.0