18 Commits

Author SHA1 Message Date
肥宅水水呀 68ed43735c feat(download): 新增下载管理与任务进度展示
- 展示每项任务的状态、进度、大小和速度,支持搜索与筛选
- 集中展示下载和解析错误,支持复制详情、停止任务、失败重试和打开目录
- 使用主线程定时刷新界面,保留本次运行的任务记录
- 完善停止与退出时的临时文件清理,防止重试覆盖已有文件
- 将 PDF 书签写入失败纳入任务错误处理
- 适配浅色、深色及高 DPI,优化表头与空状态样式
- 更新使用说明,补充下载流程和界面交互测试

close #96
2026-10-07 14:16:32 +08:00
肥宅水水呀 d09686df5e fix: 教材听力和听力课件按播放器顺序选择音频
官网播放器先取 href,没有再取 href-clip。两处音频解析合成这一套,避免源文件排在前面时选错。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-27 18:22:27 +08:00
肥宅水水呀 53337af92c fix: 听力课件改下载转码后的 MP3,避免源文件名导致 400
英语听力课件的源文件名含逗号时,私有 CDN 会返回 400 InvalidArgument。下载改为使用官网播放器请求的转码 href。

close #95

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-27 18:10:46 +08:00
qwist1233-cpu e9a1604279 feat(download): 批量下载时跳过已下载的文件并支持手动停止 (#94)
批量下载整套课本时,若上一轮有部分文件下载失败,重新下载会把已经下载好的
文件再下一遍(并生成 “xxx (2).pdf”),导致总也下不完一整套;下载开始后也
没有停止的办法。

- 路径分配不再把 “已存在的目标文件” 当作命名冲突,批量下载时直接跳过该文件,
  只下载缺失与上次失败的资源;进度标签与结束提示中显示跳过数量。
  单文件下载仍由保存对话框确认覆盖,不受影响。
- 下载期间 “下载” 按钮变为 “停止下载”:排队中的任务不再发起请求,正在传输的
  任务立即收尾并删除未完成的 .tmp 文件,已完成的文件保留。

close #92

Co-authored-by: alperen <qwist1233@users.noreply.github.com>
2026-09-26 16:35:40 +08:00
肥宅水水呀 7d37b0e4de fix: 修复批量下载完成判断与资源勾选同步
- 提前登记整批下载任务,使用线程池并确保完成通知只触发一次
- 为共享 HTTP 会话设置默认超时,覆盖解析、目录及封面请求
- 保留搜索重建后的图片引用,避免封面与复选框消失
- 将分类勾选限定在当前筛选结果内
- 同步网址编辑与勾选状态,支持粘贴、删除和撤销
- 消除进度测试对执行顺序的依赖,补充下载、超时及界面回归测试
2026-09-09 14:28:52 +08:00
肥宅水水呀 baf3ba3fbc fix(ui): 修复回调类型注解与复选框锯齿
- 使用 Callable 标注解析、线程调度与主题回调,兼容 Python 3.10
- 对三态复选框应用抗锯齿绘制,并保留封面合成时的透明度
- 补充注解求值及浅色、深色主题下的图标回归测试
2026-09-09 14:10:47 +08:00
maohaodong f6859dd68b feat(ui): 优化资源列表支持复选框勾选与链接同步 (#90)
- 在资源树中添加复选框,支持多选和半选状态表示分类勾选情况
- 支持按分类层级展开勾选,自动同步更新 URL 输入框中的资源链接
- 新增勾选数量显示标签,提升勾选反馈信息
- 优化封面图标与复选框图标合成显示,支持主题切换动态更新
- 支持通过点击或空格键切换树项勾选状态,增强键盘操作体验
- 实现分类与资源链接的增减同步,避免重复和遗漏
- 新增链接的批量解析功能后台处理,提升界面响应速度
- 资源下载支持分类子目录归类,自动创建缺失目录
- 为网络请求添加超时设置,避免请求长时间阻塞
- 优化资源版别和分类目录提取,实现更细粒度的文件归类
2026-09-09 08:15:55 +08:00
晨叶梦春 79e16dd1a2 fix(auth): incorrect auth key name
Signed-off-by: 晨叶梦春 <wuziqian211@126.com>
2026-09-06 13:21:57 +08:00
肥宅水水呀 78938b1352 fix: 用全角标点替换文件名中的非法字符,避免 Windows 下载失败 (#86) 2026-08-31 20:35:13 +08:00
肥宅水水呀 e87c6a193e feat(auth): 强制登录凭据为三项 JSON,并兼容旧版回填
保存时必须提供 access_token、mac_key、diff,格式错误会提示失败;留空仍可清除。
旧版只存 Access Token 时,设置窗口回填为三项 JSON。
2026-08-17 17:48:01 +08:00
肥宅水水呀 cd4b6a070a fix: 按官网 MAC 签名私有下载,并避免 400 时连打镜像 (#81, #76)
2efcd89 无条件拼接 accessToken,Token 无效时会触发 #81。
现对每个 URL 现算 X-ND-AUTH;400 只在同地址退避重试,不再立刻切换 r2/r3。
2026-08-17 17:34:43 +08:00
肥宅水水呀 bb55628250 fix: 避免下载文件名过长及同名资源冲突 (#80)
* fix: 避免重复拼接资源标题 (#76)

* fix: 为同名下载任务分配唯一路径
2026-08-16 12:36:44 +08:00
肥宅水水呀 2efcd89fed fix: 修复私有资源下载鉴权与镜像重试 (#79)
* fix: 为私有资源请求附加访问令牌

* feat: 支持私有下载镜像自动重试

* fix: 完善私有资源鉴权错误提示
2026-08-16 11:54:25 +08:00
Mr-Neutr0n b4e26651e4 Fix #43: 建议添加音频下载
Signed-off-by: Mr-Neutr0n <64578610+Mr-Neutr0n@users.noreply.github.com>
2026-08-03 08:47:12 +00:00
肥宅水水呀 82416e8b35 fix(download): 修正失败原因的运算符优先级,避免非 401/403 错误被静默吞掉
条件表达式的优先级低于 +,原写法把「服务器返回 HTTP 状态码 N」也一起裹进了
if 分支,导致 401/403 之外的状态码得到空字符串。而完成时的失败汇总用
`if state["failed_reason"]` 过滤,空字符串是 falsy,于是 404、500 等失败被
整条丢弃:这条分支既不会创建 .tmp 文件,也不会提示,用户只看到「下载完成」,
去目标目录却找不到文件。

改为只把 Token 提示放进条件分支,并顺带把重复的 == 比较收敛为 in。
新增 tests/test_download.py 覆盖两种状态码(该测试在修复前会失败)。
2026-07-30 16:06:32 +08:00
肥宅水水呀 ac0a83e8ad refactor: 将单文件拆分为模块化包
原 src/tchmaterial_parser.py 已增长到 1608 行,其中 main() 占 541 行并声明
8 个 global,导致前面的函数反向依赖 main() 运行时才创建的对象;资源树部分
的 12 个闭包共享 8 个 nonlocal 变量;测试为取 3 个纯函数被迫拉起整个 GUI 栈。

现拆分为 15 个模块,最大 311 行,并保持原有的全局状态模型不变:每个全局
变量归属到拥有它的模块,由 app.py 在创建控件后通过 bind_* 函数写入。函数名、
参数、逻辑与注释均未改动,未启用的 fetch_lesson_list() 亦原样保留。

- 非 GUI 层:platform_utils、network、config、api、catalog、bookmarks、images
- 界面层:ui/runtime、theme、widgets、download_panel、token_window、resource_tree
- app.py 收容 main() 剩余部分,从 541 行降至 278 行且不再使用 global
- 资源树整体搬入 build_resource_tree(),闭包与 nonlocal 链保持原样
- 新增 runtime.scaled(),收敛全项目约 60 处 round(n * ui_scale)
- 入口改为包外的 src/main.py,spec 增加 pathex=['src']:PyInstaller 会把入口
  当作 __main__ 分析,包内脚本的相对导入在此情形下不成立
- resource_path() 上溯层级 +1;测试改为直接导入 catalog 与 images,不再连带
  拉起 tkinter/sv_ttk,headless CI 现在可以跑测试

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-30 16:00:45 +08:00
肥宅水水呀 717be19763 feat(ui): 优化教材封面展示 2026-07-30 15:13:22 +08:00
肥宅水水呀 5de8c9221a feat(ui): 添加资源搜索并优化教材名称展示 2026-07-30 15:01:18 +08:00