GNU General Public License v3.0

项目介绍

julesklord/mangofetch 是一个托管在 GitHub 上的开源项目,主要使用 Rust 编写,采用 GNU General Public License v3.0 许可证,目前获得 184 个 Star、10 次 Fork。

仓库全名
julesklord/mangofetch
开源许可证
GNU General Public License v3.0
Star 数
184
Fork 数
10
未关闭 Issue
1

README 摘要

mangofetch (TUI / Core) Fast, Tropical, Pure Rust. The core engine SDK and interactive Terminal User Interface (TUI) frontend of the mangoSuite. Overview The mangoSuite Cross-Platform Compatibility Using as a Rust Library (mangofetch-core) TUI Installation & Run Via Cargo (Recommended) From Source Running the TUI Technical Architecture How the Engine Works Command Reference Acknowledgments Contributing License…

完整内容见 GitHub 原始 README 或本页 。

常见问题

mangofetch 用什么语言开发?

主要使用 Rust 编写,采用 GNU General Public License v3.0 许可证,目前有 184 个 Star。

mangofetch 可以免费商用吗?

仓库标注的许可证为 GNU General Public License v3.0,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 mangofetch 的源码?

可以直接克隆仓库:git clone https://github.com/julesklord/mangofetch.git,默认分支为 main;安装与运行步骤见仓库 README。

mangofetch 最近还在维护吗?

仓库最近一次更新为 8月8日,当前有 1 个未关闭 Issue;Star 数为 184,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

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

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
204
价值分
113
活跃状态
活跃

语言占比

Python
Rust

Release

README

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

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

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 --> [*]

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.

评论

暂无评论