夜雨聆风学习资料网

ARTICLE · 1101618

一个应用搞定全网下载!这个开源神器太顶了

一个应用搞定全网下载!这个开源神器太顶了

一款支持1800+网站的开源下载管理器,无需终端操作,覆盖视频、课程、音乐、电子书,所有文件本地存储,跨平台支持。

项目亮点

🎯 一个应用,全平台通吃

OmniGet 是一款基于 Tauri 2.0 + Rust + SvelteKit 打造的桌面下载管理器。它能帮你下载 1800+ 网站上的视频、音频、课程、电子书……从 B 站到 YouTube,从 Udemy 到 TikTok,一个应用全部搞定。

简单说,它就是下载界的"万能遥控器"——你不需要为每个网站装一个工具,也不用打开终端敲命令。

✨ 核心功能一览

  • 全平台覆盖:
    YouTube、Bilibili、TikTok、Instagram、Twitter/X、Reddit、Twitch、Vimeo、SoundCloud、Pinterest、Telegram 等,还支持 Udemy、Hotmart、Kiwify、Skool、Teachable 等在线课程平台
  • 浏览器扩展加持:
    Chrome 和 Firefox 扩展能实时嗅探网页上的视频/音频流(MP4、HLS、DASH、WebM 都不在话下),一键推送到桌面应用下载
  • Cookie 管理:
    自动携带 Cookie、Referer 和认证头,那些需要登录才能看的课程和会员内容也能轻松搞定
  • 内置播放器:
    下载完的视频、音乐、电子书直接在应用内播放/阅读,不用再切到别的软件
  • 跨平台支持:
    Windows、macOS、Linux 全覆盖,基于 GPL-3.0 开源协议

解决什么痛点?

🤔 场景一:网课下载的噩梦

小王报了一门 Udemy 课程,想下载下来离线学习。结果发现:官方 App 不支持下载,用 yt-dlp 要敲一堆命令还得配置 Cookie,装个浏览器插件又只能下 YouTube……

OmniGet 解决的就是这个问题。打开应用,粘贴课程链接,点击下载——就这么简单。它会自动处理认证、Cookie、视频分片合并,你只需要等进度条走完。

🎯 场景二:内容创作者的素材收集

做视频的小李需要从 TikTok、Instagram、Twitter 收集素材。以前他要在不同的网站间切换,用不同的工具下载,文件名还乱七八糟。

现在,他只需要装一个浏览器扩展。浏览网页时,扩展会自动检测页面上的所有视频流,按会话分组显示。点击一下,所有素材直接进 OmniGet 的下载队列,统一命名、统一管理。

💡 场景三:只想安安静静看个视频

有时候你只想把 B 站的视频存到本地,方便在地铁上看。但传统的下载工具要么需要命令行,要么塞满了广告。

OmniGet 的界面设计遵循"简洁优先"原则——没有花里胡哨的功能按钮堆砌,打开就是输入框,粘贴链接就能下载。所有文件都保存在你自己的电脑上,不上传任何云端。


手把手教程

➤ 环境准备

首先,你需要安装两个基础工具:

Rust(后端语言):

# 访问 https://rustup.rs/ 安装 Rust 稳定版curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Node.js 18+ 和 pnpm 10+:

# 安装 pnpmnpm install -g pnpm

Linux 用户还需要安装 Tauri 的系统依赖:

sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file \  libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev patchelf

➤ 获取项目

git clonehttps://github.com/OpenSelena/omniget.gitcd omniget

➤ 安装依赖并启动

# 安装前端依赖pnpm install# 启动完整应用(Rust 后端 + 前端)cargo tauri dev

如果你想分别调试:

# 只启动 SvelteKit 开发服务器pnpm dev# 只做 Rust 类型检查(不构建)cargo check# 前端类型检查pnpm check

➤ 浏览器扩展配置

OmniGet 的浏览器扩展(支持 Chrome 和 Firefox)需要通过本地 HTTP 桥接与桌面应用通信。

桌面端:首次启动时会在 127.0.0.1 的 47720-47729 端口范围内启动一个本地 HTTP 服务,并生成一个配对令牌。

扩展端:安装扩展后,选项页面会自动探测本地端口,你只需要粘贴桌面应用显示的令牌即可完成配对。

配对成功后,浏览任意支持网站时,扩展图标会从灰色变为彩色。点击图标,就能把当前页面的媒体推送到 OmniGet 下载。

快捷键:Alt+O 一键发送当前页面到 OmniGet。

➤ 从源码构建发布版

# 构建前端 + Rust 后端cargo tauri build

生成的安装包会放在 src-tauri/target/release/bundle/ 目录下。


技术架构速览

虽然 OmniGet 用起来简单,但它的技术栈相当硬核:

  • 后端:
    Rust + Tauri 2.x,使用 tokio 异步运行时、reqwest HTTP 客户端、sqlx(SQLite)做数据持久化
  • 前端:
    SvelteKit 2 + Svelte 5(runes 语法),TypeScript 严格模式
  • 样式:
    Scoped CSS + CSS 自定义属性,不用 Tailwind,不用 CSS-in-JS
  • i18n:
    sveltekit-i18n,支持多语言(中、英、俄、葡、日、法、德等)
  • 平台提取器:
    采用 trait-based 插件系统,所有平台实现统一的 PlatformDownloader trait,核心逻辑已移植到 omniget-core 库,与 Tauri 框架解耦

同类项目对比

维度
OmniGet
yt-dlp
4K Video Downloader
Motrix
功能
视频/音频/课程/电子书下载 + 内置播放器 + 浏览器扩展
命令行下载器,功能极强但需终端操作
主打视频下载,支持部分网站
通用下载器,支持 BT/磁力
平台支持
1800+ 网站,覆盖主流视频平台和课程平台
1800+ 网站(OmniGet 底层可能调用 yt-dlp)
主要覆盖 YouTube 等主流视频站
依赖用户提供下载链接
性能
Rust 后端,原生性能,低内存占用
Python,性能优秀但启动稍慢
商业软件,性能稳定
Electron,资源占用较高
生态
GPL-3.0 开源,社区活跃(曾在 course-downloader、bilibili-downloader 等分类中 star 数排名第一)
开源,生态最成熟,社区插件丰富
闭源商业软件,免费版有功能限制
开源,界面美观
使用门槛
图形界面,零配置,支持浏览器扩展一键下载
需要命令行基础,配置参数较多
图形界面,操作简单
图形界面,但需自行获取下载链接

一些细节设计

🎨 设计哲学

OmniGet 的界面设计遵循"少即是多":一个蓝色强调色、13px 正文字号、通过字重和字号建立层级、用分隔线和色调变化表达深度(而不是阴影)。整体风格向 macOS 原生应用看齐。

🔧 稳定性保障

项目在开发过程中非常注重质量:所有测试通过真实 SIGKILL 验证队列恢复能力(不是模拟),使用 WAL(预写日志)确保下载队列在崩溃后能完整恢复。

🌍 国际化

应用本身和浏览器扩展都支持多语言,翻译文件采用 JSON 格式,社区可以通过 Weblate 平台贡献翻译。

📦 模块化架构

平台提取器采用 trait-based 插件系统,所有平台实现统一的 PlatformDownloader 接口。核心逻辑已抽离到 omniget-core 库中,与 Tauri 框架解耦,方便未来移植到 CLI 工具或其他 GUI 框架。


最后说两句

OmniGet 最打动人的地方在于:它把复杂的技术细节全部藏在了背后,留给用户的只有一个干净的输入框和一个下载按钮。

你不用懂 HLS 分片合并,不用配置 Cookie 提取规则,不用研究 yt-dlp 的 200 个参数——粘贴链接,点击下载,完事。

如果你也受够了在各种下载工具之间反复横跳,不妨试试这个项目。开源免费,所有文件保存在本地,用着放心。

🔗 项目地址:https://github.com/OpenSelena/omniget.git

试试看,然后在评论区告诉我你的使用体验~

相关学习资料