- Overview
- Cross-Platform Compatibility
- Using as a Rust Library (mangofetch-core)
- Installation
- Technical Architecture
- How the Engine Works
- Command Reference
- Acknowledgments
- Contributing
- License
Overview
MangoFetch downloads media quickly across multiple platforms. It provides granular control over video and audio formats without complex configuration.
The mangofetch-core engine uses Tokio and Reqwest to handle YouTube, Torrents, SoundCloud, and Instagram. It wraps yt-dlp and ffmpeg to support over 1000 platforms.
The suite includes three frontends:
mangofetch-gui: A hardware-accelerated desktop application powered byegui. It uses the MonolithUI design system and provides persistent logs and telemetry.mangofetch tui: A terminal dashboard built withratatui. It supports mouse interaction, modal dialogs, and multiple color palettes.mangofetch cli: A scriptable command-line interface for batch processing.
Cross-Platform Compatibility
MangoFetch runs natively on multiple architectures and operating systems.
- Operating Systems: Windows (10/11), macOS (Intel and Apple Silicon), GNU/Linux, and BSD.
- Architectures: AMD64, ARM64, and ARMv7. It operates on desktops, MacBooks, and Raspberry Pi.
- Dependency Management: The engine detects missing binaries like
yt-dlp,ffmpeg, oraria2c. It automatically downloads the correct standalone version for your OS.
Using as a Rust Library (mangofetch-core)
Integrate mangofetch-core directly into Discord bots, web servers, or custom applications.
Add it to Cargo.toml:
[]
= { = "https://github.com/julesklord/mangofetch" }
Engine Capabilities:
- Simple Telemetry: Track progress via
tokio::sync::mpscchannels. - Unified Traits: Use the
PlatformDownloadertrait for links, torrents, and videos. - Dependency Automation: The engine manages
yt-dlpandffmpegbinaries. - Recovery: The download manager handles retries and network interruptions.
CLI/TUI Installation
Via Cargo (Recommended)
Install the CLI to your system path:
From Source
Run
Set MANGOFETCH_OFFLINE=1 to run tests without downloading external tools:
Technical Architecture
The modular design separates the core engine from the user interfaces.
graph TD
User([Terminal / App User]) -->|CLI / Events| Frontend(CLI / Bot / Custom GUI)
subgraph MangoFetch Workspace
Frontend -->|Dispatch & Read MPSC| Core(mangofetch-core)
subgraph Core Engine
Core --> Manager[Manager: Queue & Recovery]
Core --> Registry[Platform Registry]
Manager --> IO[Tokio Async I/O]
Registry --> Ext_Native[Native Extractors]
Registry --> Ext_Generic[Generic Extractor]
end
Frontend -.->|Dynamic Linking| SDK(mangofetch-plugin-sdk)
end
Ext_Generic -->|Wraps| YTDLP[yt-dlp Binary]
Ext_Native -->|Muxes Audio/Video| FFmpeg[FFmpeg Binary]
Ext_Native -->|BitTorrent / P2P| RQBit[librqbit]
YTDLP -.-> Network((Internet))
IO -.-> Network
IO --> Disk[(Local Storage)]
Core Components
mangofetch-core: Manages the download queue and platform extractors. It handles binary dependencies automatically.mangofetch: A terminal frontend usingclapandratatui.mangofetch-plugin-sdk: A toolkit for extending features at runtime.
How the Engine Works
The queue processes multiple items concurrently. It isolates failures and triggers automatic retries.
stateDiagram-v2
[*] --> Queued : Submit URL
Queued --> FetchingMetadata : Worker Thread Picks Item
FetchingMetadata --> Active : Media Info Resolved
FetchingMetadata --> Error : Network/Parse Failure
state Active {
[*] --> Allocating
Allocating --> Downloading : Progress Stream via MPSC
Downloading --> Muxing : Audio+Video Merge (FFmpeg)
Muxing --> [*]
}
Active --> Paused : User Pauses
Paused --> Active : User Resumes
Active --> Seeding : BitTorrent Complete
Seeding --> Complete : Seed Goal Reached
Active --> Complete : Success
Active --> Error : Interruption / Connection Drop
Error --> Queued : Retry Logic Triggered (Auto-Recovery)
Complete --> [*]
Internal Features
- Progress Reporting: Background channels provide updates without blocking the UI.
- Binary Provisioning: Locates and configures
ffmpegandyt-dlp. - Smart Parsing: Prioritizes native extraction over external wrappers.
Command Reference
View the Official Wiki for details.
| Command | Alias | Description |
|---|---|---|
mangofetch download <url> |
mango d |
Download a single link. |
mangofetch download-multiple |
mango dm |
Process links from a file. |
mangofetch info <url> |
mango i |
View metadata without downloading. |
mangofetch list |
mango ls |
View current queue. |
mangofetch clean |
mango c |
Clear history and cache. |
mangofetch config |
mango cfg |
Modify limits and paths. |
mangofetch check |
mango ch |
Verify external tool status. |
mangofetch update |
mango up |
Update external binaries. |
mangofetch logs |
mango log |
View debug logs. |
mangofetch about |
mango a |
Show version and license. |
Acknowledgments
Contributing
Submit pull requests for features or fixes. Open an issue first for major changes. See CONTRIBUTING.md for details.