作品 · 02
OmniDL · 全能下载器
泛在媒体获取引擎 —— 粘贴任意链接自动识别,1000+ 站点图片/视频一站下载。Android 本地运行 · 纯离线 · 零服务器,Kotlin + Python + yt-dlp 驱动。
查看仓库 ›为什么做它
起因是一次很具体的不爽:想保存一张图,要装一个 App;想保存一个视频,又要装另一个 App;遇到某些站点的水印视频,还得再找第三个工具。下载这件事不应该按站点碎片化——它应该是一个引擎加一层壳。
yt-dlp 已经证明了”一个引擎吃遍全网”是可能的,但它是个命令行工具。我要做的就是把这台引擎装进口袋:Android 本地运行,不经过任何服务器。
架构选择
- Kotlin 壳 + Python 引擎:UI 与任务管理用 Kotlin 原生实现;解析与下载核心直接复用 yt-dlp(Python)。两者通过进程桥接通信,各干各擅长的事。
- 纯离线:所有解析在本地完成,链接不经过第三方服务器。这既是隐私承诺,也意味着没有运维成本——项目可以安静地活很多年。
- 批量队列:下载不是单次动作而是流水线,支持整页图片批量抓取、断点续传。
难点在哪
最大的一次挑战是 Python 运行时在 Android 上的移植:不同机型的 ABI、存储权限、后台存活策略各有各的脾气。最终方案是把 Python 环境做成可自检的资源包,启动时逐项体检,缺什么补什么,而不是在主程序里堆 if-else。
现状
- 1000+ 站点的解析支持(跟随 yt-dlp 上游更新)
- 图片整页抓取 + 视频一键下载,队列化管理
- 纯离线运行,已服务我自己的日常下载两年