网易云音乐与 QQ 音乐命令行下载工具。支持歌曲、专辑、歌单的批量下载,自动嵌入元数据与歌词。
- 双平台支持 — 网易云音乐(
music.163.com)和 QQ 音乐(y.qq.com) - 智能 URL 解析 — 粘贴分享链接即可自动识别平台和资源类型,无需手动指定参数
- 批量并行下载 — 专辑和歌单支持多首歌曲同时下载,默认 5 并发,可通过
-C调整 - 七级音质 — 从标准到超清母带(Master),默认无损(Lossless)
- 元数据嵌入 — 下载后尝试写入歌曲名、歌手、专辑名、封面图和歌词;写入失败会警告但不影响音频下载
- 歌词支持 — 默认尝试内嵌歌词,使用
--save-lrc额外保存外部.lrc文件 - 终端 QR 码登录 — 使用半块字符(▀▄█)渲染二维码,白底黑字兼容各种终端主题
- 凭证自动管理 — 过期自动刷新,失效时主动提示重新登录
- Shell 补全 — 内置
completions子命令,支持 bash/zsh/fish 等
需要 Rust 1.85 及以上版本。
git clone https://github.com/<user>/nqdlm.git
cd nqdlm
cargo build --release编译产物位于 target/release/nqdlm,可直接复制到 PATH 中。
# 从分享链接下载单曲
nqdlm 'NETEASE_SONG_URL_HERE'
# 下载 QQ 音乐歌单
nqdlm 'TENCENT_PLAYLIST_URL_HERE'
# 指定输出目录
nqdlm -o ~/music 'NETEASE_ALBUM_URL_HERE'
# 跳过确认提示,直接下载
nqdlm -y 'NETEASE_PLAYLIST_URL_HERE'
# 降低音质以节省空间
nqdlm -q standard 'NETEASE_SONG_URL_HERE'
# 提高并发数加速下载
nqdlm -C 10 'NETEASE_ALBUM_URL_HERE'
# 额外保存外部 .lrc 歌词文件
nqdlm --save-lrc 'NETEASE_SONG_URL_HERE'
# 无 URL 时,通过 ID + 参数指定
nqdlm --platform netease -T song NETEASE_SONG_ID_HERE更多常见组合见 examples/README.md。
部分歌曲需要登录后才能获取下载链接。运行时如果未登录或凭证过期,程序会自动弹问;也可手动登录:
# 交互式选择平台
nqdlm login
# 直接指定平台
nqdlm login --platform netease
nqdlm login --platform tencent登录时会显示终端 QR 码,使用对应平台客户端扫码即可。
# 生成并安装(以 fish 为例)
nqdlm completions fish > ~/.config/fish/completions/nqdlm.fish支持的 shell:bash、zsh、fish、elvish、powershell。
| 选项 | 说明 | 默认值 |
|---|---|---|
-p, --platform |
平台(netease / tencent) |
从 URL 推断 |
-T, --type |
资源类型(song / album / playlist) |
从 URL 推断 |
-q, --quality |
音质 | lossless |
-C, --concurrency |
并发下载数 | 5 |
-o, --output |
输出目录 | .(当前目录) |
-y |
跳过下载确认 | false |
--save-lrc |
额外保存外部 .lrc 歌词文件 |
false |
从高到低:master → surround → stereo → hires → lossless → exhigh → standard
当所选音质不可用时,API 会自动降级返回可用音质。
./ # 当前目录(或 -o 指定)
├── 晴天 - 周杰伦.mp3 # 单曲:平铺
├── 晴天 - 周杰伦.lrc # 使用 --save-lrc 时额外保存
├── playlist-华语经典500首/ # 歌单:自动创建子目录
│ ├── 晴天 - 周杰伦.flac
│ ├── 晴天 - 周杰伦.lrc
│ └── ...
└── album-十一月的萧邦/ # 专辑:自动创建子目录
├── 夜曲 - 周杰伦.flac
└── ...
歌单/专辑目录名和歌曲文件名会自动过滤文件名非法字符。目标歌曲文件已存在时会跳过,不会覆盖。
登录凭证保存在 ~/.config/nqdlm/credentials.json,按平台独立存储。过期时自动尝试刷新,刷新失败则提示重新登录。未登录状态下,不需要登录的歌曲可以正常下载。