Skip to content

fix: 避免下载文件名过长及同名资源冲突 - #80

Merged
wuziqian211 merged 2 commits into
mainfrom
fix-download-filename-conflicts
Aug 16, 2026
Merged

fix: 避免下载文件名过长及同名资源冲突#80
wuziqian211 merged 2 commits into
mainfrom
fix-download-filename-conflicts

Conversation

@happycola233

Copy link
Copy Markdown
Owner

存在的问题

专题资源重复拼接标题

程序此前解析专题课程时,会直接按照以下格式组合专题父标题和内部资源标题:

父标题 - 子资源标题

但平台部分专题的父记录与内部 PDF 使用了完全相同的标题。例如 #76 中的:

体育与健康教师用书 基本运动技能(全一册)

原逻辑会生成:

体育与健康教师用书 基本运动技能(全一册) - 体育与健康教师用书 基本运动技能(全一册).pdf

下载时还会追加 .tmp,进一步增加文件名长度,可能超过文件系统限制并导致下载失败。

不同版别的同名教材写入相同路径

程序此前仅使用资源标题生成保存路径,没有将教材版别纳入文件名。例如同时下载:

  • 人教版《普通高中教科书·英语必修 第三册》
  • 北师大版《普通高中教科书·英语必修 第三册》

两项任务都会使用:

普通高中教科书·英语必修 第三册.pdf
普通高中教科书·英语必修 第三册.pdf.tmp

批量下载又是并行执行的,因此不同线程可能同时操作同一个 .tmp 文件,造成文件覆盖、内容损坏、临时文件被其他线程提前改名,或者最终仅保留其中一个版别。

修改内容

  • 对专题父标题和子资源标题折叠连续空白后再进行比较
  • 父子标题相同时,仅保留子资源的原始展示文本
  • 父子标题确实不同时,继续使用 父标题 - 子标题
  • 读取资源元数据中的教材版别
  • 在启动任何下载线程前,为全部批量下载任务统一分配目标路径
  • 同名资源优先添加易读的版别前缀,例如:
[人教版] 普通高中教科书·英语必修 第三册.pdf
[北师大版] 普通高中教科书·英语必修 第三册.pdf
  • 添加版别后仍然重名时,使用 (2)(3) 顺延
  • 目标文件或对应 .tmp 已存在时,同样顺延编号
  • 保留可辨识的 最终文件名.pdf.tmp 临时文件格式

@wuziqian211
wuziqian211 merged commit bb55628 into main Aug 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants