{"id":49737446,"url":"https://github.com/julesklord/mangofetch","last_synced_at":"2026-05-12T19:06:18.396Z","repository":{"id":352355254,"uuid":"1212112501","full_name":"julesklord/mangofetch","owner":"julesklord","description":"cli tool for fetch everythin' in internet (fork of omniget)","archived":false,"fork":false,"pushed_at":"2026-05-06T09:38:36.000Z","size":11556,"stargazers_count":7,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-06T10:27:24.453Z","etag":null,"topics":["cli","download-tool","tui"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"tonhowtf/omniget","license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/julesklord.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-16T04:26:46.000Z","updated_at":"2026-05-06T08:16:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/julesklord/mangofetch","commit_stats":null,"previous_names":["julesklord/omniget-cli","julesklord/mangofetch-cli","julesklord/mangofetch"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/julesklord/mangofetch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julesklord%2Fmangofetch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julesklord%2Fmangofetch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julesklord%2Fmangofetch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julesklord%2Fmangofetch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/julesklord","download_url":"https://codeload.github.com/julesklord/mangofetch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julesklord%2Fmangofetch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32816610,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"online","status_checked_at":"2026-05-09T02:00:06.633Z","response_time":123,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","download-tool","tui"],"created_at":"2026-05-09T11:01:04.350Z","updated_at":"2026-05-12T19:06:18.371Z","avatar_url":"https://github.com/julesklord.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ctable border=\"0\"\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"200\" align=\"center\" valign=\"top\"\u003e\n      \u003cimg src=\"docs/assets/logo.svg\" width=\"180\" alt=\"MangoFetch logo\"\u003e\n    \u003c/td\u003e\n    \u003ctd valign=\"top\"\u003e\n      \u003ch1\u003emangofetch\u003c/h1\u003e\n      \u003cp\u003e\u003cstrong\u003eFast, Tropical, Pure Rust.\u003c/strong\u003e\u003cbr/\u003e\n      \u003cem\u003eTUI/CLI app for fetch everything you want from internet\u003c/em\u003e\u003c/p\u003e\n      \u003cp\u003e\n        \u003ca href=\"https://crates.io/crates/mangofetch-cli\"\u003e\u003cimg src=\"https://img.shields.io/crates/v/mangofetch-cli?style=plastic\u0026color=orange\" alt=\"Crates.io\"\u003e\u003c/a\u003e\n        \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-GPL--3.0-blue?style=plastic\" alt=\"License GPL-3.0\"\u003e\u003c/a\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Built%20With-Rust-red?style=plastic\u0026logo=rust\" alt=\"Built with Rust\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Architecture-Asynchronous-brightgreen?style=plastic\" alt=\"Async\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Concurrency-Tokio-purple?style=plastic\" alt=\"Tokio\"\u003e\n      \u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/shot.png\" alt=\"MangoFetch in action\" width=\"900\" /\u003e\n\u003c/p\u003e\n\n___\n\n\u003c!--toc:start--\u003e\n- [🥭 mangofetch](#🥭-mangofetch)\n  - [Overview](#overview)\n  - [🛠️ Installation](#🛠️-installation)\n    - [Via Cargo (Recommended)](#via-cargo-recommended)\n    - [From Source](#from-source)\n  - [✨ Key Features (v0.5.1)](#key-features-v050)\n  - [🏗️ Technical Architecture](#🏗️-technical-architecture)\n    - [Core Components](#core-components)\n  - [⚙️ The Core Engine Lifecycle](#️-the-core-engine-lifecycle)\n    - [Key Engineering Milestones](#key-engineering-milestones)\n  - [🕹️ Command Reference](#🕹️-command-reference)\n  - [🗺️ Roadmap \u0026 Milestones](#🗺️-roadmap-milestones)\n  - [🤝 Acknowledgments](#🤝-acknowledgments)\n  - [Contributing](#contributing)\n  - [License](#license)\n\u003c!--toc:end--\u003e\n\n## Overview\n\n**MangoFetch** represents a paradigm shift in terminal-based media acquisition. Engineered with uncompromising standards for memory safety and concurrency, it eschews bloated graphical interfaces in favor of a raw, low-latency execution environment. Built upon the robust foundations of **Tokio** and **Reqwest**, the engine is explicitly designed to saturate network throughput and orchestrate massive archival batches seamlessly, completely decoupling asynchronous I/O operations from the main thread.\n\nWith the release of **v0.5.1**, MangoFetch transcends traditional CLI tools by introducing a professional-grade **TUI (Terminal User Interface)**. This interface blends hardcore operational efficiency with striking visual ergonomics, featuring dynamic settings management, fluid mouse event propagation, and a suite of 11 bespoke Tropical Fruit color palettes.\n\nAs of **v0.5.1**, MangoFetch features a professional-grade **TUI (Terminal User Interface)** with tropical fruit themes, mouse support, and an advanced dynamic settings engine.\n\n___\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/mangofetch_demo.webp\" alt=\"MangoFetch demo\" width=\"680\" /\u003e\n\u003c/p\u003e\n\n---\n\n## 🛠️ Installation\n\n### Via Cargo (Recommended)\n\nThe fastest way to install the CLI directly to your system path:\n\n```zsh\ncargo install mangofetch-cli\n```\n\n### From Source\n\nFor developers who want the absolute bleeding edge or wish to modify the core:\n\n```zsh\ngit clone https://github.com/julesklord/mangofetch-cli.git\ncd mangofetch-cli\ncargo build --release\n# The compiled binary will be available at: target/release/mangofetch\n```\n\n---\n\n## ✨ Key Features (v0.5.1)\n\n*   **1000+ Platforms**: Deep, zero-overhead integration with `yt-dlp` to support virtually any media portal on the internet.\n*   **Interactive TUI**: A highly responsive, full-screen dashboard powered by `ratatui`, featuring **11 Tropical Fruit Themes** (Mango, Pitaya, Guayaba, Passionfruit, and more).\n*   **Fluid Mouse Support**: Full support for pointer events—scroll through sprawling download queues and actuate tabs directly via mouse telemetry.\n*   **Vim-Style Commands**: For the ultimate power user, actuate ultra-fast, non-blocking operations via the `:` command buffer.\n*   **P2P \u0026 Torrents**: Native protocol implementations for magnet links and peer-to-peer decentralized file sharing.\n*   **Intelligent Extraction Engine**: Features multi-segment HTTP downloads, staggered connection starts to bypass rate limits, and zero-copy metadata embedding.\n\n---\n\n## 🏗️ Technical Architecture\n\nMangoFetch is rigorously organized as a modular workspace, enforcing strict separation of concerns. This architectural decision ensures the core engine remains portable, highly testable, and isolated from the rendering layer.\n\n```mermaid\ngraph TD\n    User([Terminal User]) --\u003e|CLI Commands| CLI(mangofetch-cli)\n\n    subgraph MangoFetch Workspace\n        CLI --\u003e|Dispatch \u0026 Render| Core(mangofetch-core)\n\n        subgraph Core Engine\n            Core --\u003e Queue[Async Download Queue]\n            Core --\u003e Registry[Platform Registry]\n            Queue --\u003e IO[Tokio Async I/O]\n            Registry --\u003e Ext_Native[Native Extractors]\n            Registry --\u003e Ext_Generic[Generic Extractor]\n        end\n\n        CLI -.-\u003e|Dynamic Linking| SDK(mangofetch-plugin-sdk)\n    end\n\n    Ext_Generic --\u003e|Wraps| YTDLP[yt-dlp Binary]\n    Ext_Native --\u003e|Muxes Audio/Video| FFmpeg[FFmpeg Binary]\n    YTDLP -.-\u003e Network((Internet))\n    IO -.-\u003e Network\n    IO --\u003e Disk[(Local Storage)]\n```\n\n### Core Components\n\n- **`mangofetch-core`**: The UI-agnostic heartbeat of the system. It governs the asynchronous download queue, orchestrates connection pooling, and houses the platform-specific native extractors (YouTube, Instagram, TikTok, etc.). It intelligently encapsulates `yt-dlp` and `ffmpeg` for complex stream muxing, automatically provisioning these binaries if omitted from the host `$PATH`.\n- **`mangofetch-cli`**: A hyper-lightweight frontend built with `clap`. It acts as a highly optimized dispatcher consuming the core library, rendering real-time telemetry via a brutalist, information-dense ANSI interface or the interactive TUI.\n- **`mangofetch-plugin-sdk`**: A robust FFI-compatible SDK engineered to extend MangoFetch's capabilities dynamically at runtime via shared libraries (`.so` / `.dll`).\n\n---\n\n## ⚙️ The Core Engine Lifecycle\n\nThe `mangofetch-core` queue is intrinsically fault-tolerant. Operating on a resilient asynchronous loop, if a single task in a 10,000-item batch encounters a network anomaly, the queue isolates the failure, initiates exponential backoff retries, and continues processing the matrix without stalling.\n\n```mermaid\nstateDiagram-v2\n    [*] --\u003e Queued : User Submits URL\n    Queued --\u003e FetchingMetadata : Worker Thread Picks Item\n    FetchingMetadata --\u003e Active : Media Info Resolved\n    FetchingMetadata --\u003e Error : Network/Parse Failure\n\n    state Active {\n        [*] --\u003e Allocating\n        Allocating --\u003e Downloading : Progress Stream via MPSC\n        Downloading --\u003e Muxing : Audio+Video Merge (FFmpeg)\n        Muxing --\u003e [*]\n    }\n\n    Active --\u003e Complete : Success\n    Active --\u003e Error : Interruption / Connection Drop\n    Error --\u003e Queued : Retry Logic Triggered\n    Complete --\u003e [*]\n```\n\n### Key Engineering Milestones\n\n- **Asynchronous I/O Pipeline:** Built upon `tokio::sync::mpsc` channels for non-blocking progress reporting. The UI rendering thread is completely decoupled from the heavy I/O threads, guaranteeing fluid terminal refreshes.\n- **Self-Healing Dependencies:** Automatic checksum validation, resolution, downloading, and path-linking of external binaries (`ffmpeg`, `yt-dlp`).\n- **Intelligent Parser Heuristics:** The Platform Registry attempts to natively parse media using zero-cost abstractions, falling back to generic extractors only when mathematically necessary.\n\n---\n\n## 🕹️ Command Reference\n\nFor a comprehensive breakdown of all execution flags, API arguments, and TUI keybindings, please consult our **[Official Engineering Wiki](docs/wiki/Home.md)**.\n\n*   🚀 **[Installation Guide](docs/wiki/Installation.md)**\n*   🛠️ **[CLI Command Reference](docs/wiki/CLI-Guide.md)**\n*   🖥️ **[TUI Interactive Guide](docs/wiki/TUI-Experience.md)**\n*   🏗️ **[Technical Architecture](docs/wiki/Architecture.md)**\n\n| Full Command                          | Short Alias _(Upcoming)_ | Description                                             |\n| :------------------------------------ | :----------------------- | :------------------------------------------------------ |\n| `mangofetch download \u003curl\u003e`           | `mango d \u003curl\u003e`          | Single file payload extraction and download.            |\n| `mangofetch download-multiple \u003cfile\u003e` | `mango dm \u003cfile\u003e`        | High-throughput batch archival from a manifest file.    |\n| `mangofetch info \u003curl\u003e`               | `mango i \u003curl\u003e`          | Perform media metadata telemetry without touching disk. |\n| `mangofetch list`                     | `mango ls`               | Inspect current active queue and historical matrix.     |\n| `mangofetch clean`                    | `mango c`                | Clear persistent download history and purge cache.      |\n| `mangofetch config`                   | `mango cfg`              | Manage engine parameters, connection limits, and paths. |\n| `mangofetch check`                    | `mango ch`               | Verify cryptographic integrity of system dependencies.  |\n| `mangofetch update`                   | `mango up`               | Upgrade internal dependency binaries to latest hashes.  |\n| `mangofetch logs`                     | `mango log`              | Tail raw asynchronous application logs for debugging.   |\n| `mangofetch about`                    | `mango a`                | Display engine version, license, and telemetry data.    |\n\n---\n\n\n## 🗺️ Roadmap \u0026 Milestones\n\n| Version    | Status | Milestone                                                       |\n| ---------- | ------ | --------------------------------------------------------------- |\n| **v0.1.0** | ✅     | Initial release and asynchronous architecture setup             |\n| **v0.2.0** | ✅     | Standalone rewrite — GUI stripped, core engine highly optimized |\n| **v0.3.1** | ✅     | Rebranding cleanup, test matrix fixes, and documentation        |\n| **v0.4.0** | ✅     | **The TUI Release:** Full-screen interactive terminal interface |\n| **v0.5.1** | ✅     | **UX \u0026 Polish:** Tropical themes, pointer support, dynamic UI   |\n| **v0.6.0** | ⏳     | Plugin management and community extractors via FFI SDK          |\n| **v0.7.0** | ⏳     | Decentralized P2P swarm integration                             |\n\n---\n\n## 🤝 Acknowledgments\n\n- **[OmniGet](https://github.com/tonhowtf/omniget)** — The absolute backbone of this project. A huge shoutout to _tonhowft_ for architecting the original extraction logic and queue engine that MangoFetch builds upon.\n- **[yt-dlp](https://github.com/yt-dlp/yt-dlp)** — The incredible extraction engine handling the heavy lifting for over a thousand unsupported platforms.\n\n## Contributing\n\nPull requests are fiercely welcomed. We adhere to rigorous engineering standards. For major architectural permutations, please open an RFC issue first to discuss your algorithm and approach. See `CONTRIBUTING.md` for guidelines.\n\n## License\n\n\u003cp align=\"center\"\u003e\n  Engineered with 🦀 and 🥭 by \u003ca href=\"https://github.com/julesklord\"\u003eJules Martins\u003c/a\u003e.\u003cbr\u003e\n  Released under the terms of the GPL-3.0 License.\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjulesklord%2Fmangofetch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjulesklord%2Fmangofetch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjulesklord%2Fmangofetch/lists"}