Skip to content

julesklord/mangofetch

MangoFetch logo

mangofetch (TUI / Core)

Fast, Tropical, Pure Rust.
The core engine SDK and interactive Terminal User Interface (TUI) frontend of the mangoSuite.

Crates.io License GPL-3.0 Built with Rust Async Tokio


MangoFetch in action


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.

This repository contains:

  1. mangofetch (TUI): The interactive terminal frontend built with ratatui. Launches by default and supports mouse interaction, modal dialogs, and multiple color palettes.
  2. mangofetch-core: The headless download engine.
  3. mangofetch-plugin-sdk: The plugin SDK for extending the engine's capabilities.

The mangoSuite

MangoFetch has been modularized into separate repositories for maximum flexibility:

  • mangofetch (This repo): Core engine SDK and interactive Ratatui TUI.
  • mangofetch-cli: Scriptable, pure CLI frontend for headless execution and server batch jobs.
  • mangofetch-gui: Hardware-accelerated desktop GUI built with egui & eframe.

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, or aria2c. It automatically downloads the correct standalone version for your OS.

MangoFetch TUI demo


Using as a Rust Library (mangofetch-core)

Integrate mangofetch-core directly into Discord bots, web servers, or custom applications.

Add it to Cargo.toml:

[dependencies]
mangofetch-core = "<version>"

Engine Capabilities:

  • Simple Telemetry: Track progress via tokio::sync::mpsc channels.
  • Unified Traits: Use the PlatformDownloader trait for links, torrents, and videos.
  • Dependency Automation: The engine manages yt-dlp and ffmpeg binaries.
  • Recovery: The download manager handles retries and network interruptions.

TUI Installation & Run

Via Cargo (Recommended)

Install the TUI to your system path:

cargo install mangofetch

From Source

git clone https://github.com/julesklord/mangofetch.git
cd mangofetch
cargo build --release

Running the TUI

Simply run the binary without any arguments to launch the interactive TUI directly:

mangofetch

Note

You can still pass traditional CLI commands to this binary (e.g., mangofetch check, mangofetch info <url>), but executing it empty launches the TUI immediately.

Set MANGOFETCH_OFFLINE=1 to run tests without downloading external tools:

export MANGOFETCH_OFFLINE=1
cargo test -p mangofetch-core

Technical Architecture

The modular design separates the core engine from the user interfaces.

graph TD
    User([Terminal / App User]) -->|CLI / Events| Frontend(mangofetch TUI)

    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)]
Loading

Core Components

  • mangofetch-core: Manages the download queue and platform extractors. It handles binary dependencies automatically.
  • mangofetch (TUI): The interactive terminal frontend using ratatui.
  • 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 --> [*]
Loading

Internal Features

  • Progress Reporting: Background channels provide updates without blocking the UI.
  • Binary Provisioning: Locates and configures ffmpeg and yt-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

  • OmniGet — Inspired the original engine logic.
  • yt-dlp — Handles core extraction.

Contributing

Submit pull requests for features or fixes. Open an issue first for major changes. See CONTRIBUTING.md for details.

License

Built by Jules and Claude.
Released under the GPL-3.0 License.

About

tui/cli tool for fetch everythin' in internet (fork of omniget)

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors