OmniGet 开源下载器 | 用 Rust 与 Tauri 串联媒体下载、转码和本地学习库

OmniGet 是一款把网页媒体下载、文件处理和本地学习资料管理放在同一窗口里的开源桌面应用。它以 yt-dlp 等工具作为下载引擎,通过图形界面管理链接、画质、登录会话与任务队列,再用插件连接课程、阅读和转码流程。对于希望研究跨平台下载器源码的开发者,它的价值还在于 Rust 后端、Tauri 桌面壳与 Svelte 界面之间的分工。

OmniGet 下载队列通向本地视频、音频和学习资料库的概念图
从媒体下载到本地归档的概念封面,AI 生成,非软件界面。

截至 2026 年 9 月 12 日,官方最新 Release 为 v0.9.2,发布于 9 月 11 日;根 package.json 与 Rust 主包也标记为 0.9.2。项目采用 GPL-3.0 许可证,提供 Windows、macOS 和 Linux 版本。下文依据官方 README、发布资产和源码配置介绍,未在本机实际运行或测试各站点下载。

从粘贴链接开始,下载队列负责后续过程

OmniGet 的基础流程是粘贴链接、识别站点、查看标题与可用画质,然后选择目标文件开始下载。首次设置会引导安装 yt-dlp 和 FFmpeg;普通使用者不必先配置 Python、Node.js 或命令行环境。视频、音频、字幕等输出选项仍取决于来源实际提供的内容。

真正区别于简单输入框的部分在 Downloads 页面:任务按运行、排队、完成和失败分类,显示当前处理阶段、速度与进度;官方文档还说明了中断续传、限流后的退避重试,以及保留实际 yt-dlp 命令供查看、调整和重试。这使图形操作与底层命令之间保留了可追踪的联系,排查问题时不必只盯着一条进度条。

OmniGet 官方下载队列界面,展示下载阶段、进度和任务状态
官方 README 提供的 Downloads 界面示例;图中速度、文件和任务状态是官方展示内容,不是本文实测数据。

README 宣称通过 yt-dlp 覆盖 1,800 多个站点,并为部分平台提供原生提取器。这个数字反映项目宣称的覆盖范围,不能理解为每个站点、每种内容在任何时候都能成功下载。站点接口、账号权限、地区限制与上游引擎更新仍会影响结果。

下载之后,插件把文件接入学习与处理流程

OmniGet 不只把任务终点设为“文件已保存”。官方文档列出 Courses、Study、Telegram 和 Convert 四类插件,把不同来源与后续用途拆开。对于保存课程并离线学习的人,这比下载完再手动寻找播放器、笔记软件和转码工具更集中;如果只偶尔保存一个视频,这些扩展能力也可能超出实际需要。

模块主要用途使用条件或边界
Courses列出已购课程,选择章节,保存课时与附件需要自己的有效平台会话;DRM 保护课时会被跳过并报告
Study本地课程播放器、电子书阅读、时间戳笔记与闪卡复习以本地资料为中心,课程目录可接入资料库
Telegram浏览已加入的频道或群组,按媒体类型选择下载需要登录自己的 Telegram 账号
Convert借助 FFmpeg 调整封装、编码、分辨率与码率GPU 加速取决于本机硬件和可用编码能力

Study 的设计值得单独留意:播放器可以恢复播放位置,观看时按 N 记录带时间戳的笔记;阅读器支持 PDF、EPUB 等格式;笔记和闪卡又连接到复习流程。它试图解决的是“下载了一堆资料却没有继续使用”的断点,而不仅仅是增加文件格式支持。

Tools 区域还提供本地转录等媒体处理能力。官方说明转录使用 whisper.cpp,模型按需下载;这与调用外部 AI 服务的摘要功能不同。前者可以在模型准备好后本地处理,后者需要配置 AI 提供商,不能把所有带 AI 名称的功能都视为离线运行。

源码由桌面界面、共享核心与插件接口组成

当前仓库主要实现语言为 Rust,前端采用 SvelteKit、Svelte 5 和 TypeScript,桌面集成使用 Tauri 2。Rust workspace 中包含主应用、omniget-core、omniget-plugin-sdk 和 omniget-cli 等成员;SQLite 用于本地数据,yt-dlp、FFmpeg、aria2、gallery-dl 等承担不同的下载与媒体工作。

  • 桌面主应用:负责窗口、系统托盘、通知、文件访问及界面与后端的交互。
  • omniget-core:提供供应用复用的核心能力,是追踪下载流程的一个源码入口。
  • omniget-plugin-sdk:承载插件与宿主之间的接口,插件源码分布在独立仓库中。
  • omniget-cli:提供获取链接信息、下载、批处理和导入 Cookie 的命令行入口,适合脚本化使用。

阅读源码时,可以先沿着“一条链接如何进入任务、后端如何调用引擎、进度如何返回界面”追踪,再研究插件扩展。仓库另有实验性聊天与游戏辅助等模块,但它们不是理解下载主链路的前置条件;例如 OmniDisc 聊天默认关闭,需要手动启用并添加服务器。

插件开发必须与宿主使用匹配的 Rust 工具链

根目录 rust-toolchain.toml 当前固定 1.97.0,这不是随意的开发偏好。文件注释说明,插件以动态库交换 Rust trait 对象,而 Rust 不保证跨编译器版本的 ABI 稳定;宿主与插件编译器不同可能导致不兼容,加载器会检查 rustc 指纹并拒绝不匹配的插件。因此二次开发时不能只更新主程序编译器,再继续使用旧插件产物。

使用安装包与从源码构建,是两条不同路径

只想使用软件,优先在官方 Release 中按系统和架构选包:Windows 提供 x64 安装版、便携版与 MSI;macOS 提供 Apple Silicon 和 Intel 的 DMG;Linux 提供 x86_64、ARM64 对应的 DEB、RPM 与 AppImage。不要因为源码中出现移动端图标目录,就把它当作已有 Android 或 iOS 正式版本。

macOS 发布说明明确提示应用尚未经过 Apple 公证,首次启动可能被 Gatekeeper 拦截。应先核实文件来自官方发布页,再按该版本说明处理;未公证不等同于已证明安全。Linux 遇到 AppImage 的 FUSE 依赖问题时,可按发行版选择 DEB 或 RPM 等原生包。

需要修改源码时,README 给出的开发入口如下。除 Rust 外,还需 Node.js 与 pnpm;根 package.json 固定 pnpm 10.29.3,实际环境也应满足当前前端依赖的要求。

git clone https://github.com/tonhowtf/omniget.git
cd omniget
pnpm install
pnpm tauri dev

Linux 还需要 WebKitGTK、OpenSSL、系统托盘、音频及编译工具等原生依赖,应照仓库对应清单准备。本地生产构建使用:

pnpm tauri build --config '{"bundle":{"createUpdaterArtifacts":false}}'

该参数关闭本地构建的更新器产物生成。官方发布使用维护者持有的私钥签署更新器产物,直接执行默认构建可能因缺少私钥而停止;关闭这一项并不等于获得官方签名,也不应把本地修改版冒充官方安装包。

Cookie、本地数据和许可证需要一起考虑

访问登录后内容时,OmniGet 可以通过浏览器扩展或 cookies.txt 导入会话。Cookie 能代表账号权限,应像账号凭据一样保护,不要跟随源码、日志或共享文件夹一起分发。Windows 便携模式会把设置、数据库、Cookie、插件与缓存等放到程序旁的 data 目录,备份或携带整个目录时尤其要注意会话也会随之移动。

官方表示没有针对下载内容的遥测,Cookie 与 API Key 保存在本地配置中。但“本地应用”不代表完全不联网:下载源站、GitHub 更新与插件入口、用户配置的 AI 服务,以及主动启用的其他联网功能仍有各自的数据流向。

项目的使用边界是下载自己的已登录会话有权访问的内容,不绕过 DRM 或付费墙;购买课程也不自动获得再分发权。代码按 GPL-3.0 使用和再分发,第三方组件仍需核对各自许可。此外,README 对吉祥物 Loop 原始美术另有限制,不能把代码许可证直接套到所有品牌与美术素材上。

适合把“下载、处理、学习”串起来的人

OmniGet 适合需要管理多来源媒体、希望用界面处理队列和会话,或想研究 Rust 桌面应用与插件架构的读者。已经熟练使用 yt-dlp 脚本、只需要一条命令输出文件的人,则未必需要把学习库和其他模块一起装进工作流。它最有辨识度的地方,是让下载结果继续进入播放器、阅读器和资料处理环节,而不是单纯用一个窗口包住命令行。

  • 官方源码仓库:https://github.com/tonhowtf/omniget
  • v0.9.2 发布与安装包:https://github.com/tonhowtf/omniget/releases/tag/v0.9.2
  • 官方使用及构建说明:https://github.com/tonhowtf/omniget/blob/main/README.md
  • 插件工具链约束:https://github.com/tonhowtf/omniget/blob/main/rust-toolchain.toml
  • 代码许可证:https://github.com/tonhowtf/omniget/blob/main/LICENSE
OmniGet 开源下载器 | 用 Rust 与 Tauri 串联媒体下载、转码和本地学习库 - 杂货喵
OmniGet 开源下载器 | 用 Rust 与 Tauri 串联媒体下载、转码和本地学习库
此内容为免费资源,请登录后查看
M币0
发布平台GitHub
编码语言Rust
运行方式桌面端
项目版本v0.9.2
项目许可GPL-3.0
支持系统Windows/macOS/Linux
免费资源
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像 - 杂货喵
欢迎您留下宝贵的见解!
提交
头像 - 杂货喵

昵称

取消
昵称图片快捷回复

    暂无评论内容