项目实用程序:文件分割器和下载器

该存储库包含两个功能强大的 Python 脚本,旨在通过 GitHub Releases 管理大文件的分发和下载。

  1. split_and_hash.py:存储库所有者将大文件分割成较小部分并生成完整且可验证的校验和清单的实用程序。

  2. download_all_packages.py:一个强大的工具,供最终用户自动下载、验证和重新组装这些多部分文件,从头到尾确保数据完整性。


1.文件分割和校验和生成脚本(split_and_hash.py

该脚本适用于存储库维护者。它准备大文件以便在 GitHub Releases 等平台上分发,这些平台有单独的文件大小限制。

#### 目的

主要目标是获取单个大文件(例如“vosk-model-de-0.21.zip”)并执行两个关键操作:

  1. 将文件拆分为一系列较小的、编号的部分。

  2. 生成一个完整的清单文件 (.sha256sums.txt),其中包含原始完整文件和每个单独部分的校验和。

这份完整的清单是确保最终用户 100% 数据完整性的关键。

主要特点

  • 标准化拆分: 将文件拆分为 100MB 的块(可在脚本中配置)。

  • 一致命名: 创建带有“Z_”前缀的部件(例如“Z_vosk-model-de-0.21.zip.part.aa”)。 “Z_”前缀确保在各种系统中正确排序和处理。

  • 完整的完整性清单: 生成的“.sha256sums.txt”文件的结构可实现最大可靠性。它包括:

  • 原始完整文件的 SHA256 哈希值。

  • 创建的每个部分的 SHA256 哈希值。

GitHub 版本的用法

  1. 将大文件(例如“vosk-model-de-0.21.zip”)放入包含“split_and_hash.py”脚本的目录中。

  2. 从终端运行脚本: 代码_块_0

  3. 该脚本将生成所有“Z_…part.xx”文件以及相应的“…sha256sums.txt”文件。

  4. 创建新的 GitHub 版本时,上传所有生成的文件:零件文件和单个清单文件。

  5. 对您要分发的每个大文件重复此过程。


2. 自动包下载器和验证器 (download_all_packages.py)

该脚本适用于 最终用户。它提供了一种简单的单命令解决方案,可以可靠地下载和重新组装 GitHub 版本中提供的所有包。

#### 目的

它可以自动完成下载数十个文件部分、验证每个部分并正确重新组装这些部分的复杂且容易出错的过程。它使用版本中提供的校验和清单来保证最终的组装文件是原始文件的完美、未损坏的副本。

主要特点

  • 自动发现: 该脚本连接到 GitHub API,通过查找“.sha256sums.txt”文件自动查找版本中的所有可用“包”。不需要手动配置文件名。

  • 完整性优先过程: 对于每个包,它首先下载清单文件以获取所需部件的列表及其正确的校验和。

  • 逐部分验证: 它一次下载一个部分并立即验证其 SHA256 哈希值。

  • 损坏时自动重试: 如果下载的部分损坏(哈希值不匹配),脚本会自动删除它并重新下载,确保下载干净。

  • 智能重组: 下载并验证包的所有部分后,它会按正确的字母顺序(.aa.ab.ac…)合并它们,以重建原始大文件。

  • 最终验证: 重组后,它计算最终完整文件的 SHA256 哈希值,并根据清单中找到的主哈希值对其进行验证。这提供了成功的端到端确认。

  • 弹性和宽容: 该脚本对于轻微的命名不一致(例如“Z_”与“z_”)具有强大的鲁棒性,确保流畅的用户体验。

  • 自动清理: 成功构建并验证包后,脚本将删除下载的部分文件以节省磁盘空间。

先决条件

用户必须安装 Python 以及“requests”和“tqdm”库。它们可以通过 pip 安装: 代码_块_1

#### 用法

  1. 下载 download_all_packages.py 脚本。

  2. 从终端运行它,不带任何参数: 代码_块_2

  3. 脚本将处理其余的事情,显示进度条和状态消息。完成后,用户将在同一目录中准备好所有最终的、经过验证的 ZIP 文件以供使用。