## プロジェクト ユーティリティ: ファイル スプリッターとダウンローダー このリポジトリには、GitHub リリースを介した大きなファイルの配布とダウンロードを管理するために設計された 2 つの強力な Python スクリプトが含まれています。 1. **`split_and_hash.py`**: リポジトリ所有者が大きなファイルを小さな部分に分割し、完全で検証可能なチェックサム マニフェストを生成するためのユーティリティ。 2. **`download_all_packages.py`**: エンドユーザーがこれらのマルチパート ファイルを自動的にダウンロード、検証、再構築するための堅牢なツールで、最初から最後までデータの整合性を確保します。 --- ### 1. ファイル分割とチェックサム生成スクリプト (`split_and_hash.py`) このスクリプトは **リポジトリ管理者** を対象としています。個別のファイル サイズ制限がある GitHub リリースなどのプラットフォームで配布するための大きなファイルを準備します。 #### 目的 主な目標は、単一の大きなファイル (例: `vosk-model-de-0.21.zip`) を取得し、2 つの重要なアクションを実行することです。 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. ターミナルからスクリプトを実行します。 ```bash python split_and_hash.py ``` 3. スクリプトはすべての `Z_...part.xx` ファイルと、対応する `...sha256sums.txt` ファイルを生成します。 4. 新しい GitHub リリースを作成するときは、生成されたファイル**すべて** (パーツ ファイルと 1 つのマニフェスト ファイル) をアップロードします。 5. 配布する大きなファイルごとにこのプロセスを繰り返します。 --- ### 2. 自動パッケージ ダウンローダーおよび検証ツール (`download_all_packages.py`) このスクリプトは **エンドユーザー** を対象としています。 GitHub リリースで提供されるすべてのパッケージを確実にダウンロードして再アセンブルするための、シンプルな 1 つのコマンド ソリューションを提供します。 #### 目的 数十のファイル部分をダウンロードし、それぞれを検証し、正しく再構築するという複雑でエラーが発生しやすいプロセスを自動化します。リリースで提供されるチェックサム マニフェストを使用して、最終的に組み立てられたファイルがオリジナルの完全で破損していないコピーであることを保証します。 #### 主な機能 * **自動検出:** スクリプトは GitHub API に接続し、`.sha256sums.txt` ファイルを検索することで、リリース内で利用可能なすべての「パッケージ」を自動的に検索します。ファイル名を手動で設定する必要はありません。 * **整合性優先プロセス:** パッケージごとに、「最初に」マニフェスト ファイルをダウンロードして、必要なパーツとその正しいチェックサムのリストを取得します。 * **パーツごとの検証:** 一度に 1 つのパーツをダウンロードし、すぐに SHA256 ハッシュを検証します。 * **破損時の自動再試行:** ダウンロードされた部分が破損している (ハッシュが一致しない) 場合、スクリプトは自動的にその部分を削除して再ダウンロードし、クリーンなダウンロードを保証します。 * **インテリジェントな再アセンブリ:** パッケージのすべての部分がダウンロードされて検証されると、それらを正しいアルファベット順 (`.aa`、`.ab`、`.ac`...) でマージして、元の大きなファイルを再構築します。 * **最終検証:** 再アセンブリ後、最終的な完全なファイルの SHA256 ハッシュを計算し、マニフェストにあるマスター ハッシュと照合して検証します。これにより、エンドツーエンドで成功が確認されます。 * **回復力と耐性:** このスクリプトは、「Z_」と「z_」のような小さな名前の不一致に対して堅牢であり、スムーズなユーザー エクスペリエンスを保証します。 * **自動クリーンアップ:** パッケージが正常に構築され検証された後、スクリプトはダウンロードされたパーツ ファイルを削除してディスク領域を節約します。 #### 前提条件 ユーザーは Python と `requests` および `tqdm` ライブラリをインストールする必要があります。これらは pip でインストールできます。 ```bash pip install requests tqdm ``` #### 使用法 1. 「download_all_packages.py」スクリプトをダウンロードします。 2. ターミナルから引数なしで実行します。 ```bash python download_all_packages.py ``` 3. スクリプトが残りを処理し、進行状況バーとステータス メッセージを表示します。完了すると、ユーザーは、最終的に検証されたすべての ZIP ファイルを同じディレクトリで使用できるようになります。