أدوات المشروع: مقسم الملفات وأداة التنزيل¶
يتضمن هذا المستودع نصين برمجيين قويين من نوع Python مصممين لإدارة توزيع وتنزيل الملفات الكبيرة عبر إصدارات GitHub.
split_and_hash.py: أداة مساعدة لأصحاب المستودعات لتقسيم الملفات الكبيرة إلى أجزاء أصغر وإنشاء بيان المجموع الاختباري الكامل والقابل للتحقق.download_all_packages.py: أداة قوية للمستخدمين النهائيين لتنزيل هذه الملفات متعددة الأجزاء والتحقق منها وإعادة تجميعها تلقائيًا، مما يضمن سلامة البيانات من البداية إلى النهاية.---
1. البرنامج النصي لتقسيم الملفات وإنشاء المجموع الاختباري (split_and_hash.py)¶
هذا البرنامج النصي مخصص لـ مشرف المستودع. يقوم بإعداد الملفات الكبيرة للتوزيع على منصات مثل إصدارات GitHub، والتي لها حدود فردية لحجم الملف.
#### غاية
الهدف الأساسي هو أخذ ملف واحد كبير (على سبيل المثال، vosk-model-de-0.21.zip) وتنفيذ إجراءين مهمين:
قم بتقسيم الملف إلى سلسلة من الأجزاء الأصغر المرقمة.
قم بإنشاء ملف بيان واحد وشامل (
.sha256sums.txt) يحتوي على المجاميع الاختبارية لـ كل من الملف الأصلي والكامل وكل جزء على حدة.
يعد هذا البيان الكامل هو المفتاح لضمان سلامة البيانات بنسبة 100% للمستخدم النهائي.
#### الميزات الرئيسية
التقسيم الموحد: يقسم الملفات إلى أجزاء بحجم 100 ميجابايت (قابلة للتكوين داخل البرنامج النصي).
التسمية المتسقة: تنشئ أجزاء ببادئة
Z_(على سبيل المثال،Z_vosk-model-de-0.21.zip.part.aa). تضمن البادئةZ_الفرز والتعامل المناسب في الأنظمة المختلفة.بيان النزاهة الكاملة: تم تصميم الملف
.sha256sums.txtالذي تم إنشاؤه لتحقيق أقصى قدر من الموثوقية. ويشمل: * تجزئة SHA256 للملف ** الأصلي الكامل **. * تجزئة SHA256 لكل جزء تم إنشاؤه.#### الاستخدام لإصدار GitHub
ضع الملف الكبير (على سبيل المثال،
vosk-model-de-0.21.zip) في دليل باستخدام البرنامج النصيsplit_and_hash.py.قم بتشغيل البرنامج النصي من جهازك الطرفي:
python split_and_hash.py <your-large-file.zip>
سيقوم البرنامج النصي بإنشاء كافة ملفات
Z_...part.xxوالملف المقابل...sha256sums.txt.عند إنشاء إصدار GitHub جديد، قم بتحميل جميع الملفات التي تم إنشاؤها: الملفات الجزئية وملف البيان الفردي.
كرر هذه العملية لكل ملف كبير تريد توزيعه.
---
2. أداة تنزيل الحزم والتحقق منها تلقائيًا (download_all_packages.py)¶
هذا البرنامج النصي مخصص للمستخدم النهائي. فهو يوفر حلاً بسيطًا بأمر واحد لتنزيل جميع الحزم المقدمة في إصدار GitHub وإعادة تجميعها بشكل موثوق.
#### غاية
فهو يقوم بأتمتة العملية المعقدة والمعرضة للأخطاء المتمثلة في تنزيل العشرات من أجزاء الملف، والتحقق من كل جزء منها، وإعادة تجميعها بشكل صحيح. ويستخدم بيانات المجموع الاختباري المتوفرة في الإصدار لضمان أن الملف النهائي المجمع هو نسخة مثالية وغير تالفة من الملف الأصلي.
#### الميزات الرئيسية
الاكتشاف التلقائي: يتصل البرنامج النصي بواجهة برمجة تطبيقات GitHub للعثور تلقائيًا على جميع “الحزم” المتوفرة في الإصدار من خلال البحث عن ملفات
.sha256sums.txt. ليست هناك حاجة إلى تكوين يدوي لأسماء الملفات.عملية النزاهة أولاً: بالنسبة لكل حزمة، يتم تنزيل ملف البيان أولاً للحصول على قائمة الأجزاء المطلوبة ومجاميعها الاختبارية الصحيحة.
التحقق جزء بجزء: يقوم بتنزيل جزء واحد في كل مرة ويتحقق على الفور من تجزئة SHA256 الخاصة به.
إعادة المحاولة تلقائيًا عند حدوث تلف: إذا كان الجزء الذي تم تنزيله تالفًا (التجزئة غير متطابقة)، فسيحذفه البرنامج النصي تلقائيًا ويعيد تنزيله، مما يضمن تنزيلًا نظيفًا.
إعادة التجميع الذكية: بمجرد تنزيل جميع أجزاء الحزمة والتحقق منها، يتم دمجها بالترتيب الأبجدي الصحيح (‘.aa
،.ab،.ac`…) لإعادة بناء الملف الكبير الأصلي.التحقق النهائي: بعد إعادة التجميع، يقوم بحساب تجزئة SHA256 للملف النهائي الكامل والتحقق منه مقابل التجزئة الرئيسية الموجودة في البيان. وهذا يوفر تأكيدًا شاملاً للنجاح.
المرونة والتسامح: يتميز البرنامج النصي بالقوة ضد حالات التضارب البسيطة في التسمية، مثل
Z_مقابلz_، مما يضمن تجربة مستخدم سلسة.التنظيف الآلي: بعد إنشاء الحزمة والتحقق منها بنجاح، يقوم البرنامج النصي بحذف ملفات الأجزاء التي تم تنزيلها لتوفير مساحة على القرص.
#### المتطلبات الأساسية
يجب أن يكون المستخدم مثبتًا عليه لغة Python ومكتبات “الطلبات” و”tqdm”. يمكن تثبيتها بالنقطة:
pip install requests tqdm
#### الاستخدام
قم بتنزيل البرنامج النصي
download_all_packages.py.قم بتشغيله من الوحدة الطرفية بدون وسيطات:
python download_all_packages.pyسيتعامل البرنامج النصي مع الباقي، ويعرض أشرطة التقدم ورسائل الحالة. عند الانتهاء، سيكون لدى المستخدم جميع ملفات ZIP النهائية التي تم التحقق منها جاهزة للاستخدام في نفس الدليل.