كيف تتكامل أجزاء برنامج Mister Download Manager معا.
الصناديق (Crates)
| المسار | الصندوق (Crate) | الدور |
|---|---|---|
crates/engine |
mdm-engine |
ينزل ملفا واحدا عبر HTTP(S) أو FTP(S): فحص، مخطط تجزئة، عمال اتصال، حالة استئناف، قيود لكل مضيف، محدد سرعة، مجاميع اختبارية، نصوص وكيل |
crates/app |
mdm-app |
تطبيق سطح المكتب (misterdownloadmanager.exe، egui): القائمة، الفئات، قوائم الانتظار، المجدول، مربعات الحوار، علبة النظام، الإعدادات. |
crates/cli |
mdm-cli |
تنزيلات بدون واجهة رسومية مع عرض التقدم (get، resume). |
crates/mcp |
mdm-mcp |
خادم MCP (misterdownloadmanager-mcp): مساعدو الذكاء الاصطناعي يسردون ويضيفون ويتحكمون في تنزيلات التطبيق قيد التشغيل عبر واجهة برمجة تطبيقات الأتمتة. |
crates/nmhost |
mdm-nmhost |
مضيف الرسائل الأصلية للمتصفح: يأخذ التنزيلات الملتقطة من الإضافة ويسلمها إلى التطبيق. |
crates/ipc |
mdm-ipc |
قناة المثيل الواحد (مقبس محلي محمي برمز)، مجلد البيانات، وقواعد الالتقاط المشتركة بين التطبيق والمضيف. |
crates/tools |
mdm-tools |
صفحات الفيديو عبر yt-dlp و ffmpeg (تعمل كبرامج منفصلة). |
crates/crash |
mdm-crash |
تقارير الأعطال والتوقف: عملية المراقبة، تفريغات الذاكرة المصغرة خارج العملية، مكدسات الرموز، نص التقرير وسجلات الإصدار (crash-reports.md). |
crates/torrent |
mdm-torrent |
روابط BitTorrent والروابط المغناطيسية عبر librqbit. |
crates/labserver |
mdm-labserver |
خادم HTTP Range مع سجل طلبات وحقن أخطاء، وخادم FTP/FTPS بأخطائه الخاصة، للاختبارات والمعايير. |
extension/ |
— | إضافة Chromium (MV3) و Firefox. |
docs/ |
— | دليل المستخدم والبرامج التعليمية (تفتحها تعليمات)، هذا الملف، بيانات المعايير. |
website/ |
— | صفحات موقع إلكتروني مستقبلي (لم تنشر بعد) |
تتجه التبعيات إلى الداخل: app، cli، mcp و nmhost تستخدم engine و ipc؛ المحرك لا يعرف شيئا عن واجهة المستخدم. يرى التطبيق المحرك فقط من خلال أحداثه (التقدم، لقطات جدول التجزئة، الانتهاء، الفشل).
المحرك
Download
├─ probe() size, resumable?, validators (ETag / Last-Modified), file name
├─ Planner (pure) segment table: when a connection is free, the largest remaining
│ part is split in half (planner.rs, tested by random simulation)
├─ Worker × N one HTTP/1.1 connection each, reused across segments; slow ones
│ are dropped and their part re-split
│ └─ writes at its offset into <name>.mdm.part (created sparse)
├─ HostLimits learns how many connections each server accepts
├─ Limiter (shared) per-download and global token buckets
├─ State segment table saved atomically (craft-atomic) for crash-safe resume
└─ events → channel Progress, Done, Failed
عند الانتهاء من كل جزء، يتم فحص الملف الجزئي مقابل الحجم المتوقع وإعادة تسميته إلى مكانه؛ يمكن أن يتبع تاريخ الملف تاريخ الخادم.
يمر FTP و FTPS (ftp.rs) عبر نفس المخطط والعمال والحالة: التجزئة هي REST + RETR على جلسة تحكم بدلا من GET ذات النطاق، SIZE و MDTM تحل محل الرؤوس، ويتم تجميع الجلسات لكل تنزيل وإعادة استخدامها بين التجزئات.
التطبيق
نافذة egui واحدة مرسومة بإحداثيات بكسل ثابتة، بالإضافة إلى منفذ عرض فوري واحد لكل مربع حوار. app.rs يحتفظ بالحالة (التنزيلات، قوائم الانتظار، الإعدادات، تحديد القائمة) ويحول أوامر القائمة وشريط الأدوات والمفاتيح و IPC إلى إجراءات. كل مربع حوار هو وحدة خاصة به ويعيد Outcome (مفتوح، مغلق، منجز بقيمة). تقتصر المكالمات الخاصة بنظام Windows على win32.rs ونظيراتها في Linux و macOS على unix.rs (بدءا من الجلسة، مضيف المتصفحات، الأصوات، العرض في المجلد، معالج الأعطال)؛ كل ملف آخر هو Rust آمن ومحمول. تأتي الخطوط من النظام: مجلد Fonts في Windows، خطوط النظام في macOS، fontconfig في Linux (theme.rs).
يتم حفظ قائمة التنزيلات والإعدادات بشكل ذري في %APPDATA%\misterdownloadmanager\ (downloads.json). يقرأ مضيف المتصفح نفس الملف لقواعد الالتقاط، لذا فإن أي تغيير في الخيارات ينطبق على التنزيل الملتقط التالي.
تكامل المتصفح
page ──► extension ──native messaging──► mdm-nmhost ──ipc──► app
تطلب الإضافة من المضيف أنواع الملفات التي يجب أخذها، وتفحص كل تنزيل مقابلها، وتلغي تنزيل المتصفح فقط بعد أن يقبله التطبيق؛ وإلا فإن المتصفح يحتفظ به.
الترجمات
يمر كل نص تعرضه واجهة المستخدم عبر crate::i18n (كتالوجات craft-i18n، i18n/<locale>.tsv). tools/i18n/extract.py يعيد بناء i18n/en.tsv من المصدر، مع ملاحظة للمترجمين على كل نص (ما هو، أين يظهر، عناصره النائبة).
الاختبارات والمعايير
cargo testيشغل اختبارات الوحدات والتنزيلات الشاملة مقابل mdm-labserver مع أخطاء محقونة (اتصالات بطيئة، متقطعة ومرفوضة، خوادم بدون نطاقات، ملفات متغيرة). tools/bench يشغل مقارنة السرعة المنشورة؛ بياناتها الخام موجودة في docs/bench/.
مجاني، مفتوح المصدر، بدون إعلانات، بدون فترة تجريبية.
تنزيل Mister Download Manager