Narzędzia projektu: narzędzie do rozdzielania i pobierania plików

To repozytorium zawiera dwa potężne skrypty Pythona przeznaczone do zarządzania dystrybucją i pobieraniem dużych plików za pośrednictwem GitHub Releases.

  1. split_and_hash.py: Narzędzie dla właścicieli repozytoriów umożliwiające dzielenie dużych plików na mniejsze części i generowanie kompletnego i weryfikowalnego manifestu sumy kontrolnej.

  2. download_all_packages.py: Solidne narzędzie dla użytkowników końcowych umożliwiające automatyczne pobieranie, weryfikowanie i ponowne składanie tych wieloczęściowych plików, zapewniając integralność danych od początku do końca.


1. Skrypt podziału pliku i generowania sumy kontrolnej (split_and_hash.py)

Ten skrypt jest przeznaczony dla opiekuna repozytorium. Przygotowuje duże pliki do dystrybucji na platformach takich jak GitHub Releases, które mają indywidualne limity rozmiaru plików.

Zamiar

Podstawowym celem jest pobranie jednego dużego pliku (np. vosk-model-de-0.21.zip) i wykonanie dwóch kluczowych akcji:

  1. Podziel plik na serię mniejszych, ponumerowanych części.

  2. Wygeneruj pojedynczy, kompleksowy plik manifestu (.sha256sums.txt), który zawiera sumy kontrolne dla zarówno oryginalnego, kompletnego pliku, jak i każdej pojedynczej części.

Ten kompletny manifest jest kluczem do zapewnienia użytkownikowi końcowemu 100% integralności danych.

Kluczowe funkcje

  • Standardowe dzielenie: Dzieli pliki na kawałki o wielkości 100MB (konfigurowalne w skrypcie).

  • Spójne nazewnictwo: Tworzy części z przedrostkiem Z_ (np. Z_vosk-model-de-0.21.zip.part.aa). Przedrostek Z_ zapewnia prawidłowe sortowanie i obsługę w różnych systemach.

  • Pełny manifest integralności: Wygenerowany plik .sha256sums.txt ma strukturę zapewniającą maksymalną niezawodność. Obejmuje:

  • Hash SHA256 oryginalnego, kompletnego pliku.

  • SHA256 każdej części, która została utworzona.

Użycie w przypadku wersji GitHub

  1. Umieść duży plik (np. vosk-model-de-0.21.zip) w katalogu ze skryptem split_and_hash.py.

  2. Uruchom skrypt na swoim terminalu: KOD_BLOKU_0

  3. Skrypt wygeneruje wszystkie pliki Z_...part.xx i odpowiadający im plik ...sha256sums.txt.

  4. Tworząc nową wersję GitHub, prześlij wszystkie wygenerowane pliki: pliki części i pojedynczy plik manifestu.

  5. Powtórz ten proces dla każdego dużego pliku, który chcesz rozpowszechnić.


2. Automatyczne pobieranie i weryfikacja pakietów (download_all_packages.py)

Ten skrypt jest przeznaczony dla użytkownika końcowego. Zapewnia proste rozwiązanie wymagające jednego polecenia, umożliwiające niezawodne pobieranie i ponowne składanie wszystkich pakietów oferowanych w wersji GitHub.

Zamiar

Automatyzuje złożony i podatny na błędy proces pobierania dziesiątek części plików, weryfikowania każdej z nich i prawidłowego ich ponownego składania. Wykorzystuje manifesty sum kontrolnych dostarczone w wydaniu, aby zagwarantować, że ostateczny, złożony plik jest doskonałą, nieuszkodzoną kopią oryginału.

Kluczowe funkcje

  • Automatyczne wykrywanie: Skrypt łączy się z interfejsem API GitHub, aby automatycznie znaleźć wszystkie dostępne „pakiety” w wydaniu, wyszukując pliki .sha256sums.txt. Nie jest wymagana ręczna konfiguracja nazw plików.

  • Proces oparty na integralności: Dla każdego pakietu najpierw pobiera plik manifestu, aby uzyskać listę wymaganych części i ich poprawne sumy kontrolne.

  • Weryfikacja część po części: pobiera jedną część na raz i natychmiast weryfikuje jej skrót SHA256.

  • Automatyczna ponowna próba w przypadku uszkodzenia: Jeśli pobrana część jest uszkodzona (hash nie pasuje), skrypt automatycznie ją usuwa i pobiera ponownie, zapewniając czyste pobieranie.

  • Inteligentne ponowne składanie: Po pobraniu i zweryfikowaniu wszystkich części pakietu następuje ich połączenie w odpowiedniej kolejności alfabetycznej (.aa, .ab, .ac…), aby zrekonstruować oryginalny duży plik.

  • Weryfikacja końcowa: Po ponownym złożeniu oblicza skrót SHA256 ostatecznego, kompletnego pliku i weryfikuje go względem głównego skrótu znalezionego w manifeście. Zapewnia to kompleksowe potwierdzenie sukcesu.

  • Odporny i tolerancyjny: skrypt jest odporny na drobne niespójności w nazewnictwie, takie jak Z_ vs. z_, zapewniając płynną obsługę użytkownika.

  • Automatyczne czyszczenie: Po pomyślnym zbudowaniu i zweryfikowaniu pakietu skrypt usuwa pobrane pliki części, aby zaoszczędzić miejsce na dysku.

Warunki wstępne

Użytkownik musi mieć zainstalowany Python oraz biblioteki requests i tqdm. Można je zainstalować za pomocą pip: KOD_BLOKU_1

Użycie

  1. Pobierz skrypt download_all_packages.py.

  2. Uruchom go z terminala bez argumentów: KOD_BLOKU_2

  3. Skrypt zajmie się resztą, wyświetlając paski postępu i komunikaty o statusie. Po zakończeniu użytkownik będzie miał wszystkie ostateczne, zweryfikowane pliki ZIP gotowe do użycia w tym samym katalogu.