做了一个支持嗅探下载、YT-DLP 和在线音乐播放的桌面工具: XiaDown / 下蛋

5 月 26 日
 dreamusername

大家好,最近做了一个桌面媒体工具,叫 下蛋 / XiaDown,一款支持在线音乐的双引擎视频下载工具。

它是为内容创作者和重度素材用户做的。需要素材时,可以用 YT-DLP + 浏览器嗅探 两套下载能力保存视频、音频、字幕和封面;下载完成后可以继续转码、整理进资源库;平时工作时,它也可以作为一个桌面音乐播放器使用,支持本地音乐、YouTube Music 和 YouTube Live 。

项目地址:

目前支持 macOSWindows

为什么做这个工具

我自己经常遇到一个比较分散的工作流:

这些事情单独看都有工具可以做,但组合起来会比较割裂:下载工具是一套,转码工具是一套,文件管理是一套,音乐播放器又是一套。

所以我做了 XiaDown ,希望它更像一个桌面上的媒体工作台:下载、转码、资源库、在线音乐和一些个人化配置放在一起,减少来回切换。

它适合谁

我觉得它比较适合这些场景:

主要能力

1. 双引擎视频下载:YT-DLP + CDP 嗅探

XiaDown 里有两套下载能力。

第一套是 YT-DLP 下载。普通视频链接可以直接粘贴解析,保存视频、音频、字幕和封面。对于 YouTube 、哔哩哔哩等常见平台,它会尽量走更稳定的 YT-DLP 流程。

第二套是 基于 CDP 的浏览器嗅探下载。有些网页的资源并不会直接出现在静态链接里,可能是动态加载的,或者需要真实浏览器会话才能看到。这个时候可以启动嗅探模式,让 XiaDown 观察浏览器里出现的视频、音频、直播流、清单、图片、字幕、API 响应等资源,再把可下载的内容整理出来。

平台覆盖上,YT-DLP 这一侧主要面向 YouTube 、哔哩哔哩等常见在线视频站点,也可以跟随 yt-dlp 支持更多站点;嗅探这一侧更适合动态加载、结构复杂或者需要真实浏览器会话的网站,我平时主要用它处理 TikTok 、抖音、快手、小红书这类素材场景。

对于需要登录态的内容,应用支持通过连接配置保存 Cookies / Profile ,数据来自用户主动登录后的本地浏览器环境。

2. 下载后继续转码

下载完成之后,很多素材还不能直接拿来用。比如编码不合适、分辨率过高、音频格式不方便、剪辑软件导入不顺手。

XiaDown 内置了基于 FFmpeg 的转码能力,支持两种方式:

目前内置了常见的视频和音频预设,例如 H.264 、H.265 、VP9 、MP3 、AAC 、Opus 、FLAC 、WAV ,也支持原始尺寸、2160p 、1080p 、720p 、480p 等常见输出场景。

我把它定位在素材整理里最常见的那一段流程:下载完,顺手转成可用格式;专业转码软件里的复杂参数不会一开始全塞进来。

3. 多视图资源库

下载和转码多了之后,任务列表很快会变乱。所以 XiaDown 里做了资源库,分为任务视图和文件视图。

任务视图更适合看下载、转码的历史和状态;文件视图更适合直接管理最终生成的文件。资源库里可以统一管理下载文件、转码文件、字幕、封面和手动导入文件。

现在支持的操作包括:

4. 桌面音乐播放器

除了下载和转码,XiaDown 也做了桌面音乐播放能力。

这一块主要有三部分:

我把音乐播放放进这个工具里,是因为很多内容创作者的工作状态其实是“找素材 + 整理素材 + 听点东西”。它不一定是核心生产能力,但作为一个长期挂在桌面的工具,有播放器会自然很多。

一些我比较在意的设计点

依赖自动管理,不污染全局环境

XiaDown 依赖 yt-dlp 、ffmpeg 、bun 等工具,但我不希望用户为了用一个桌面应用,先去配置一堆命令行环境。

所以应用里做了依赖自动管理:安装、校验、升级都由应用处理,工具路径也由应用独立维护,不依赖用户机器上的全局命令,也尽量不影响用户原本的开发环境。

Cookies / Profile 与日常浏览器隔离

下载工具一旦涉及登录态,就很容易让人担心隐私和账号安全。

XiaDown 的做法是把连接配置独立出来:通过 CDP 调用本机浏览器能力,并持久化独立的 Profiles 和 Cookies 。数据来自用户主动登录,连接配置与日常浏览器使用场景相互隔离。

这样做的目标是:

外观和 Codex Pets

这个部分偏个人喜好,但我自己很喜欢。

XiaDown 支持主题包、明暗/自动模式、强调色、字体、字号、侧边栏样式等外观设置。除此之外还内置了 Codex Pets Gallery ,可以导入在线或本地 Pets ,作为桌面陪伴元素。

软件如果要长期放在桌面上,我也希望它能慢慢变成用户自己的东西。

技术栈

项目主要技术栈:

几个实现点:

当前状态和后续计划

下蛋是一款我每天都会用到的工具,目前功能已经基本成型,后续我会长期维护,请大家放心。

在已有功能上,我会持续打磨细节与性能;新功能会考虑是否契合工具的范围,这个范围就是内容创作者会用到的桌面媒体工具。功能越做越多很容易发散,所以后面会尽量围绕下载、转码、资源管理和工作时的音乐播放这些核心场景来推进。

大家在使用中如果遇到什么问题,可以通过 GitHub Issue ,或者直接给我发邮件,我会跟进处理。

如果你对这个工具感兴趣,或者也有类似的素材管理工作流,欢迎在 V2EX 里交流建议。我也很想知道大家更希望它优先打磨哪一块能力。

861 次点击
所在节点    分享创造
6 条回复
allen663
5 月 27 日
启动浏览器失败?
dreamusername
5 月 27 日
@allen663 你在配置-常规-默认浏览器里确认下当前浏览器,因为是采用 CDP 技术,所以只支持限定的浏览器。
allen663
5 月 27 日
@dreamusername 没有 firefox 也没有 helium,没有任何选项
dreamusername
5 月 27 日
@allen663 XiaDown 支持 Chromium 内核的浏览器,目前内置对 Chrome/Chromium/Microsoft Edge/Brave/Vivaldi/Opera/Opera GX/Arc/Yandex Browser 浏览器的支持,Helium 看起来是基于 Chromium 的反追踪浏览器,理论上支持,Firefox 是不支持的。但是目前项目是浏览器白名单制度,只会检测这几个浏览器,我后续会将浏览器支持这块完善到 Readme 中,也会验证扩充更多浏览器的支持。
dreamusername
3 天前
@allen663 最新版已经支持了 helium 。最近几天对下蛋进行签名与公证,所以包括添加 helium ,以及在网站/readme 公示支持的浏览器列表都一起发布了。
JetKwok
22 小时 26 分钟前
感谢大佬,很好用的工具

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1215687

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX