
平时在喜马拉雅听书、听课程时,如果想把自己有权访问的内容保存到本地,操作起来并不算方便。最近看到一个还在持续开发中的开源项目——Ximalaya-Downloader-Next,它把单曲、专辑和区间下载整合到了一起,同时提供 WebUI、命令行和 Python API 三种使用方式,整体完成度已经比较不错。
需要先说明的是,这个项目不是付费内容破解工具,也不会绕过登录或账号授权。最终能下载哪些音频,仍然取决于当前登录账号本身拥有的访问权限。
项目简介
Ximalaya-Downloader-Next 可以理解为一款“重启版”的喜马拉雅音频下载器。项目使用 Python 开发,目前仓库状态仍标记为 WIP,也就是还在开发和完善阶段。
它比较适合下面几种需求:
- 下载自己有权访问的单条音频;
- 批量保存整张专辑;
- 只下载专辑中的指定集数;
- 下载中断后继续未完成的任务;
- 通过网页界面管理任务,不想一直敲命令;
- 在自己的 Python 项目中调用下载功能。
主要功能
1. 支持单曲和整张专辑
工具既可以识别音频链接,也可以直接使用 trackId 或 albumId。除了单条音频,还可以批量下载整张专辑。
如果不想把专辑全部下载下来,也可以指定集数范围,例如下载第 1 到第 20 集、第 5 集以后,或者只下载某一集。
2. 提供 WebUI 图形界面
这是我觉得比较实用的一点。启动 xdl web 后,会在本机打开 WebUI,默认地址是:
http://127.0.0.1:8787
登录账号、新建下载任务、选择音质和集数范围、恢复任务、删除任务以及调整设置,都可以直接在网页中完成。对于不熟悉命令行的用户来说,上手会轻松很多。
3. 支持断点续传和任务恢复
下载过程中生成的未完成文件会使用 .part 保存。再次运行时,工具可以通过 HTTP Range 从中断的位置继续下载,不需要每次都重新开始。
如果下载时按下 Ctrl-C,程序会先保存当前进度再退出,之后运行:
xdl resume
就可以继续之前没有完成的任务。
4. 可选择音质
项目提供 high、standard 和 low 三档音质选项。如果目标音频没有指定音质,程序会自动回退到当前可用的规格。
在正式下载前,也可以先查看某条音频有哪些可用格式:
xdl track -F <链接或ID>
5. 提供多种音源后端
项目目前提供 http、pc、apk 和 chrome 四种音源后端。
http:默认方式,本地生成签名并调用网页端接口;pc:使用桌面客户端接口,项目说明中提到批量解析更稳定,并可处理账号有权限访问的 VIP 音频;apk:使用 Android APK 协议,拥有独立的设备身份和短信验证码登录流程;chrome:浏览器兼容路径,更适合作为其他方式不可用时的临时排查方案。
这里的“支持 VIP 音频”并不代表可以破解或免费下载付费内容,仍然需要登录具备相应权限的账号。
6. 带有基础风控处理
专辑下载和任务恢复默认只使用 1 个并发,主要是为了降低请求过快触发平台风控的概率。遇到已识别的风控信号时,工具会暂停整批任务并保留进度,等恢复后再继续。
虽然可以手动提高并发数,但请求量也会随之增加。实际使用时没有必要盲目追求速度,保持默认配置通常更稳妥。
7. 支持 Python API
除了 WebUI 和命令行,项目还提供了同步形式的 Python API,开发者可以直接集成:
from xdl import Facade
app = Facade.from_config()
app.download_track("<链接或ID>", quality="standard")
app.download_album("<链接或ID>", quality="standard", range_="1-20")
app.resume()
安装与使用
项目要求 Python 3.10 或更高版本。如果需要通过浏览器完成登录,还要提前安装 Google Chrome 或 Microsoft Edge;只使用 APK 后端时不需要浏览器。
下载项目源码后,在项目目录中执行:
pip install -e .
xdl web
浏览器会自动打开本地管理页面。点击顶部的“尚未登录”,按提示完成账号登录,之后就可以创建下载任务。
如果习惯命令行,也可以直接使用:
xdl login
xdl track <链接或trackId>
xdl album <链接或albumId>
默认文件会保存到当前目录下的 downloads 文件夹。
下载专辑中的指定范围:
xdl album <链接或ID> --range 1-20
选择高音质:
xdl album <链接或ID> --quality high
指定下载目录:
xdl --download-dir D:\Audio album <链接或ID>
需要注意,全局参数必须写在 track、album、login 等子命令前面。
使用时要注意什么
首先,WebUI 默认只监听本机地址,而且项目本身没有提供远程访问认证,因此不要直接把 8787 端口暴露到公网。
其次,项目会在 ~/.xdl 目录保存浏览器 Profile、Cookie、设备信息、任务数据库和风控记录。其中 Cookie 属于敏感数据,不要把整个目录随意分享给别人,也不要提交到公开仓库。
另外,这个项目目前仍处于 WIP 阶段,平台接口、登录流程或者风控规则发生变化后,都可能导致部分功能暂时不可用。使用前建议先查看仓库中的最新说明和 Issues。
总结
Ximalaya-Downloader-Next 的定位很明确:帮助用户保存自己有权访问的喜马拉雅内容。它不是简单的一条下载脚本,而是把登录、单曲与专辑解析、区间下载、音质选择、断点续传、任务恢复和风控处理做成了一套相对完整的工具。
对普通用户来说,WebUI 降低了使用门槛;对喜欢折腾的用户来说,CLI、多音源后端和 Python API 也保留了足够的可玩性。如果你正好有备份个人已购内容、离线收听或整理音频资料的需求,可以关注一下这个项目。
项目地址:https://github.com/sld272/Ximalaya-Downloader-Next
开源协议:AGPL-3.0
评论