MangoFetch:一个用 Rust 写的 CLI/TUI 高性能的下载工具

你是否曾经需要从多个视频平台下载高清无水印的视频?无论是 YouTube、B站、抖音、快手,还是其他主流视频平台,如何快速且高效地下载这些视频?今天,我们将通过介绍一个准现成的工具,用 Rust 实现直接一键下载多个平台的无水印视频的愿望。

MangoFetch 是一个用 Rust 写的下载工具项目,定位不只是普通 CLI 下载器,而是把下载核心(引擎)和界面(UI)彻底解耦:底层是 mangofetch-core,上层提供 mangofetch-cli 则仅作为一个轻量级的渲染层(TUI/CLI)。这个模块化工作空间结构,可以确保严格的职责分离,使得核心引擎具有良好的可移植性和可扩展性。

传送门:github.com/julesklord/...

注:MangoFetch 是 tonhowft 基于 OmniGet 项目开发的独立终端版本,作者做了大量重构和优化工作,以适应纯命令行界面 (CLI) 使用,性能有了很大提升。

MangoFetch 最显著的技术特征在于其全栈Rust实现,它的核心引擎mangofetch-core是基于 Tokio 和 Reqwest构建的,提供 headless、UI-agnostic 的下载能力,并通过 traits 统一处理 direct link、magnet URI、YouTube、SoundCloud、Instagram,以及通过动态集成 yt-dlp 和 ffmpeg, 支持的 1000+ 平台视频批量队列下载,同时还支持BT下载和P2P传输。

对终端用户来说,MangoFetch 自带mangofetch-cli一个便捷的终端用户界面 (TUI),它提供基于 ratatui 的全屏 TUI、11 套 Tropical Fruit 主题、鼠标支持、Vim-style 命令缓冲区、批量下载队列、P2P / torrents、自动管理外部依赖、重试和限速处理等能力。

对开发者来说,mangofetch-core 可以嵌入到自己的 Rust 项目里,比如 Discord bot、Web server 或自定义 GUI。它用 tokio::sync::mpsc 做进度上报,不把下载逻辑绑死在某个界面框架上。

技术架构

MangoFetch 的结构非常清晰,设计简洁和模块化,使得核心引擎易于移植、测试,并且与UI层 是完全解耦的。

核心组件

  • mangofetch-core这是一个与用户界面无关的引擎。它管理异步下载队列、处理连接池,并包含特定于平台的提取器(例如 YouTube、Instagram、TikTok 等的原生解析器)。它还能为你管理yt-dlpffmpeg下载这些网站的内容,即使它们不在你的系统上。
  • mangofetch-cli一个使用和构建的简单前端ratatui。它速度快、外观漂亮,并能实时显示所有正在发生的下载信息。
  • mangofetch-plugin-sdk一个用于在 MangoFetch 运行时为其添加新功能的工具包。

核心优势:

自动化依赖管理(Self-Healing机制) :MangoFetch最具特色的功能是其依赖管理器 。它会自动检测系统的依赖环境,并按需自动拉取和管理yt-dlp (媒体提取引擎)和ffmpeg (音视频处理工具链)。这意味着用户无需繁琐地手动安装、配置这些复杂的媒体处理工具------只需一个mangofetch check命令即可完成环境状态的诊断。

对于需要支持大量媒体网站(目前支持1000+站点)的下载引擎而言,这一设计极大降低了运维成本和用户入门门槛。

核心功能(命令参考)

MangoFetch 目前提供了一套完整mangofetch命令,虽然清晰易懂,但即将发布的版本将为提供新的mango命令,作为超短别名,进一步优化用户体验。

完全指挥 简称 (即将推出) 描述
mangofetch download <url> mango d <url> 单个文件下载和解压
mangofetch download-multiple links.txt --concurrent 5 mango dm <file> 批量下载模式,支持指定并发数
mangofetch info <url> mango i <url> 预览媒体文件的元数据(大小、时长、分辨率等)
mangofetch list mango ls 查看当前队列和历史下载状态
mangofetch clean mango c 清除下载历史记录并清除缓存
mangofetch config mango cfg 管理应用程序设置(连接、路径)
mangofetch check mango ch 诊断依赖环境状态(yt-dlp、ffmpeg)
mangofetch update mango up 将内部依赖二进制文件更新至最新版本
mangofetch logs mango log 查看应用程序的原始日志以进行调试
mangofetch about mango a 显示版本、许可证和血统信息

有关命令的完整列表以及如何使用 TUI,请查看官方 Wiki(github.com/julesklord/...

值得一提的是,MangoFetch 项目当前还规划了TUI Dashboard、插件商店、P2P文件共享等高级功能,目标是逐步构建一个完整的终端下载生态。对于热爱终端的 Rust 开发者而言,是一个值得学习的好项目。

安装与快速上手

MangoFetch提供了两种安装方式:

方式一:Cargo直接安装(最快)

cmd 复制代码
cargo install mangofetch-cli

方式二:源码编译安装

当然,对于想要体验最前沿技术或希望修改核心代码的开发者,也可以下载源码,,亲自编译一番,才算圆满(配得上程序员的逼格)。

cmd 复制代码
git clone https://github.com/julesklord/mangofetch-cli.git
cd mangofetch-cli
cargo build --release
# 二进制可执行文件位于 target/release/mangofetch,可执行文件需要需要手动配置Path路径。

安装完成后,只需一条命令即可开启下载:

cmd 复制代码
# mangofetch <command> <link>
mangofetch download "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

总结

MangoFetch 本质上是一个支持超过1000个网站 的通用下载引擎,你可以一键从 YouTube、X 、TikTok 、抖音、快手、B站等视频平台下载高清无水印的视频

MangoFetch适合什么样的用户?

重度CLI用户和终端爱好者 :追求高效、无界面的工具,希望在单手键盘操作下完成复杂的下载任务。

视频/音频归档者 :需要批量下载多平台媒体内容并自动处理依赖。

Rust开发者 :希望学习或借鉴Tokio + Reqwest + ratatui组合构建的实际项目案例。

希望集成下载能力的应用开发者:MangoFetch提供SDK级别的扩展能力,可嵌入自己的Rust项目,开发和部署你自己的视频下载器网站。

MangoFetch 凭借其纯Rust带来的高性能与内存安全、异步 Tokio 驱动的高并发网络能力、以及自动化依赖管理的智慧设计,在众多下载工具中开辟了属于自己的差异化赛道。对于热爱终端的开发者而言,它是一个不容错过的优秀项目。如果你是Rust爱好者,不妨访问其GitHub仓库crates.io页面,去探索或贡献,一起"构建终端最好的下载引擎(Build the best downloader for the terminal)"

相关推荐
程序员清风1 小时前
AI开发岗该如何准备面试?
java·后端·面试
扬帆破浪1 小时前
sidecar崩溃后前端怎么续命 重启策略与状态保留
前端·人工智能·架构·开源·知识图谱
折哥的程序人生 · 物流技术专研1 小时前
《Java 100 天进阶之路》第20篇:Java初始化、构造器、对象创建的过程
java·开发语言·后端·面试
Lee川1 小时前
从输入框到智能匹配:一文读懂搜索功能的完整实现
前端·后端
三无推导3 小时前
OpenHuman 开源项目详解:个人 AI 助手架构与核心技术拆解
人工智能·性能优化·架构·开源·ai助手
薛定猫AI3 小时前
【深度解析】Hermes Agent 与 Hermes Desktop:长期记忆、技能沉淀与多端网关的开源 AI Agent 实战
人工智能·开源
传说之后3 小时前
深入浅出 Raft:万字解析分布式共识的核心设计
后端
小小小小宇3 小时前
Go 后端高并发架构:从外到内的立体防御体系
后端