Cách các thành phần của Mister Download Manager kết hợp với nhau.
Crates
| Đường dẫn | Crate | Vai trò |
|---|---|---|
crates/engine |
mdm-engine |
Tải xuống một tệp qua HTTP(S) hoặc FTP(S): thăm dò, lập kế hoạch phân đoạn, các worker kết nối, trạng thái tiếp tục, giới hạn mỗi máy chủ, bộ giới hạn tốc độ, tổng kiểm tra, tập lệnh proxy |
crates/app |
mdm-app |
Ứng dụng máy tính để bàn (misterdownloadmanager.exe, egui): danh sách, danh mục, hàng đợi, bộ lập lịch, hộp thoại, khay hệ thống, cài đặt |
crates/cli |
mdm-cli |
Tải xuống không giao diện với tiến trình (get, resume) |
crates/mcp |
mdm-mcp |
Máy chủ MCP (misterdownloadmanager-mcp): danh sách trợ lý AI, thêm và kiểm soát các lượt tải xuống của ứng dụng đang chạy thông qua API tự động hóa |
crates/nmhost |
mdm-nmhost |
Máy chủ nhắn tin gốc của trình duyệt: lấy các lượt tải xuống đã bị chặn từ tiện ích mở rộng và chuyển chúng cho ứng dụng |
crates/ipc |
mdm-ipc |
Kênh một phiên bản (một socket cục bộ được bảo vệ bằng token), thư mục dữ liệu và các quy tắc chặn được chia sẻ bởi ứng dụng và máy chủ |
crates/tools |
mdm-tools |
Các trang video thông qua yt-dlp và ffmpeg (chạy dưới dạng các chương trình riêng biệt) |
crates/crash |
mdm-crash |
Báo cáo sự cố và treo: tiến trình giám sát, minidump ngoài tiến trình, các stack đã được biểu tượng hóa, văn bản báo cáo và nhật ký phát hành (crash-reports.md) |
crates/torrent |
mdm-torrent |
BitTorrent và liên kết magnet thông qua librqbit |
crates/labserver |
mdm-labserver |
Một máy chủ HTTP Range với nhật ký yêu cầu và lỗi được chèn, và một máy chủ FTP/FTPS với các lỗi riêng, để kiểm tra và đánh giá hiệu suất |
extension/ |
— | Tiện ích mở rộng Chromium (MV3) và Firefox |
docs/ |
— | Hướng dẫn sử dụng và hướng dẫn (Trợ giúp mở chúng), tệp này, dữ liệu đánh giá hiệu suất |
website/ |
— | Các trang web trong tương lai (chưa được xuất bản) |
Các phụ thuộc hướng vào trong: app, cli, mcp và nmhost sử dụng engine và ipc; engine không biết gì về giao diện người dùng. Ứng dụng chỉ thấy engine thông qua các sự kiện của nó (tiến trình, ảnh chụp nhanh bảng phân đoạn, hoàn thành, thất bại).
Engine
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
Khi mọi phân đoạn hoàn tất, tệp tạm thời được kiểm tra với kích thước dự kiến và đổi tên vào đúng vị trí; ngày của tệp có thể theo ngày của máy chủ.
FTP và FTPS (ftp.rs) đi qua cùng một bộ lập kế hoạch, worker và trạng thái: một phân đoạn là REST + RETR trên một phiên điều khiển thay vì một GET có phạm vi, SIZE và MDTM thay thế cho các tiêu đề, và các phiên được gộp theo mỗi lượt tải xuống và được tái sử dụng giữa các phân đoạn.
Ứng dụng
Một cửa sổ egui được vẽ theo tọa độ pixel cố định, cộng với một khung nhìn tức thời cho mỗi hộp thoại. app.rs giữ trạng thái (tải xuống, hàng đợi, cài đặt, lựa chọn danh sách) và biến các lệnh menu, thanh công cụ, phím và IPC thành hành động. Mỗi hộp thoại là một mô-đun riêng và trả về một Outcome (mở, đóng, hoàn thành với một giá trị). Các cuộc gọi chỉ dành cho Windows được giới hạn trong win32.rs và các đối tác Linux và macOS của chúng trong unix.rs (bắt đầu với phiên, máy chủ của trình duyệt, âm thanh, hiển thị trong thư mục, trình xử lý sự cố); mọi tệp khác đều an toàn, Rust di động. Phông chữ đến từ hệ thống: thư mục Phông chữ của Windows, phông chữ hệ thống của macOS, fontconfig trên Linux (theme.rs).
Danh sách tải xuống và cài đặt được lưu một cách nguyên tử vào %APPDATA%\misterdownloadmanager\ (downloads.json). Máy chủ trình duyệt đọc cùng một tệp cho các quy tắc chặn, vì vậy một thay đổi trong Tùy chọn sẽ áp dụng cho lượt tải xuống bị chặn tiếp theo.
Tích hợp trình duyệt
page ──► extension ──native messaging──► mdm-nmhost ──ipc──► app
Tiện ích mở rộng hỏi máy chủ loại tệp nào cần lấy, kiểm tra từng lượt tải xuống với chúng và chỉ hủy tải xuống của trình duyệt sau khi ứng dụng đã chấp nhận; nếu không, trình duyệt sẽ giữ nó.
Bản dịch
Mọi văn bản mà giao diện người dùng hiển thị đều đi qua crate::i18n (danh mục craft-i18n, i18n/<locale>.tsv). tools/i18n/extract.py xây dựng lại i18n/en.tsv từ nguồn, với một ghi chú cho người dịch trên mỗi văn bản (nó là gì, nó hiển thị ở đâu, các phần giữ chỗ của nó).
Kiểm tra và đánh giá hiệu suất
cargo testchạy các bài kiểm tra đơn vị và tải xuống end-to-end chống lại mdm-labserver với các lỗi được chèn (kết nối chậm, bị ngắt và bị từ chối, máy chủ không có phạm vi, tệp thay đổi). tools/bench chạy so sánh tốc độ đã xuất bản; dữ liệu thô của nó nằm trong docs/bench/.
Miễn phí, mã nguồn mở, không quảng cáo, không dùng thử.
Tải xuống Mister Download Manager