## प्रोजेक्ट यूटिलिटीज़: फ़ाइल स्प्लिटर और डाउनलोडर इस रिपॉजिटरी में GitHub रिलीज़ के माध्यम से बड़ी फ़ाइलों के वितरण और डाउनलोड को प्रबंधित करने के लिए डिज़ाइन की गई दो शक्तिशाली पायथन स्क्रिप्ट शामिल हैं। 1. **`split_and_hash.py`**: रिपॉजिटरी मालिकों के लिए बड़ी फ़ाइलों को छोटे भागों में विभाजित करने और एक पूर्ण और सत्यापन योग्य चेकसम मेनिफेस्ट उत्पन्न करने की एक उपयोगिता। 2. **`download_all_packages.py`**: अंतिम उपयोगकर्ताओं के लिए इन बहु-भाग फ़ाइलों को स्वचालित रूप से डाउनलोड करने, सत्यापित करने और पुन: संयोजन करने के लिए एक मजबूत उपकरण, शुरू से अंत तक डेटा अखंडता सुनिश्चित करता है। --- ### 1. फ़ाइल विभाजन और चेकसम जनरेशन स्क्रिप्ट (`split_and_hash.py`) यह स्क्रिप्ट **रिपॉजिटरी मेंटेनर** के लिए है। यह GitHub रिलीज़ जैसे प्लेटफ़ॉर्म पर वितरण के लिए बड़ी फ़ाइलें तैयार करता है, जिनकी व्यक्तिगत फ़ाइल आकार सीमाएँ होती हैं। #### उद्देश्य प्राथमिक लक्ष्य एक बड़ी फ़ाइल लेना है (उदाहरण के लिए, `vosk-model-de-0.21.zip`) और दो महत्वपूर्ण क्रियाएं करना: 1. फ़ाइल को छोटे, क्रमांकित भागों की श्रृंखला में विभाजित करें। 2. एक एकल, व्यापक मेनिफेस्ट फ़ाइल (`.sha256sums.txt`) तैयार करें जिसमें **मूल, पूर्ण फ़ाइल और प्रत्येक व्यक्तिगत भाग** दोनों के चेकसम शामिल हों। यह संपूर्ण मैनिफ़ेस्ट अंतिम-उपयोगकर्ता के लिए 100% डेटा अखंडता सुनिश्चित करने की कुंजी है। #### प्रमुख विशेषताऐं * **मानकीकृत विभाजन:** फ़ाइलों को 100एमबी खंडों में विभाजित करता है (स्क्रिप्ट के भीतर कॉन्फ़िगर करने योग्य)। * **संगत नामकरण:** `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. अपने टर्मिनल से स्क्रिप्ट चलाएँ: __CODE_ब्लॉक_0__ 3. स्क्रिप्ट सभी `Z_...part.xx` फ़ाइलें और संबंधित `...sha256sums.txt` फ़ाइल उत्पन्न करेगी। 4. नई GitHub रिलीज़ बनाते समय, जेनरेट की गई **सभी** फ़ाइलें अपलोड करें: पार्ट फ़ाइलें और एकल मेनिफेस्ट फ़ाइल। 5. इस प्रक्रिया को हर उस बड़ी फ़ाइल के लिए दोहराएँ जिसे आप वितरित करना चाहते हैं। --- ### 2. स्वचालित पैकेज डाउनलोडर और सत्यापनकर्ता (`download_all_packages.py`) यह स्क्रिप्ट **अंतिम-उपयोगकर्ता** के लिए है। यह GitHub रिलीज़ में पेश किए गए सभी पैकेजों को विश्वसनीय रूप से डाउनलोड करने और पुन: संयोजन करने के लिए एक सरल, एक-कमांड समाधान प्रदान करता है। #### उद्देश्य यह दर्जनों फ़ाइल भागों को डाउनलोड करने, प्रत्येक को सत्यापित करने और उन्हें सही ढंग से पुन: संयोजित करने की अन्यथा जटिल और त्रुटि-प्रवण प्रक्रिया को स्वचालित करता है। यह यह गारंटी देने के लिए रिलीज़ में दिए गए चेकसम मैनिफ़ेस्ट का उपयोग करता है कि अंतिम, इकट्ठी फ़ाइल मूल की एक आदर्श, अदूषित प्रतिलिपि है। #### प्रमुख विशेषताऐं * **स्वचालित खोज:** स्क्रिप्ट `.sha256sums.txt` फ़ाइलों की तलाश करके रिलीज़ में सभी उपलब्ध "पैकेजों" को स्वचालित रूप से ढूंढने के लिए GitHub API से कनेक्ट होती है। फ़ाइल नामों की किसी मैन्युअल कॉन्फ़िगरेशन की आवश्यकता नहीं है. * **अखंडता-प्रथम प्रक्रिया:** प्रत्येक पैकेज के लिए, यह आवश्यक भागों की सूची और उनके सही चेकसम प्राप्त करने के लिए *पहले* मेनिफेस्ट फ़ाइल डाउनलोड करता है। * **भाग-दर-भाग सत्यापन:** यह एक समय में एक भाग डाउनलोड करता है और तुरंत अपने SHA256 हैश को सत्यापित करता है। * **भ्रष्टाचार पर स्वत: पुनः प्रयास:** यदि कोई डाउनलोड किया गया भाग दूषित है (हैश मेल नहीं खाता है), तो स्क्रिप्ट स्वचालित रूप से इसे हटा देती है और इसे फिर से डाउनलोड करती है, जिससे एक साफ डाउनलोड सुनिश्चित होता है। * **इंटेलिजेंट रीअसेंबली:** एक बार पैकेज के सभी हिस्सों को डाउनलोड और सत्यापित कर लिया जाता है, तो यह मूल बड़ी फ़ाइल को फिर से बनाने के लिए उन्हें सही वर्णमाला क्रम (`.aa`, `.ab`, `.ac`...) में मर्ज कर देता है। * **अंतिम सत्यापन:** पुनः संयोजन के बाद, यह अंतिम, पूर्ण फ़ाइल के SHA256 हैश की गणना करता है और इसे मेनिफेस्ट में पाए गए मास्टर हैश के विरुद्ध सत्यापित करता है। यह सफलता की शुरू से अंत तक पुष्टि प्रदान करता है। * **लचीला और सहनशील:** स्क्रिप्ट मामूली नामकरण विसंगतियों, जैसे `Z_` बनाम `z_` के खिलाफ मजबूत है, जो एक सहज उपयोगकर्ता अनुभव सुनिश्चित करती है। * **स्वचालित सफाई:** एक पैकेज सफलतापूर्वक निर्मित और सत्यापित होने के बाद, स्क्रिप्ट डिस्क स्थान को बचाने के लिए डाउनलोड की गई भाग फ़ाइलों को हटा देती है। #### पूर्वापेक्षाएँ उपयोगकर्ता के पास पायथन और `अनुरोध` और `tqdm` लाइब्रेरी स्थापित होनी चाहिए। उन्हें पाइप के साथ स्थापित किया जा सकता है: __CODE_ब्लॉक_1__ #### उपयोग 1. `download_all_packages.py` स्क्रिप्ट डाउनलोड करें। 2. इसे बिना किसी तर्क के टर्मिनल से चलाएँ: __CODE_ब्लॉक_2__ 3. स्क्रिप्ट बाकी काम संभाल लेगी, प्रगति बार और स्थिति संदेश प्रदर्शित करेगी। पूरा होने पर, उपयोगकर्ता के पास सभी अंतिम, सत्यापित ज़िप फ़ाइलें उसी निर्देशिका में उपयोग के लिए तैयार होंगी।