Skip to content

AstronW/nqdlm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nqdlm

网易云音乐与 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 码,使用对应平台客户端扫码即可。

Shell 补全

# 生成并安装(以 fish 为例)
nqdlm completions fish > ~/.config/fish/completions/nqdlm.fish

支持的 shell:bashzshfishelvishpowershell

选项

选项 说明 默认值
-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

音质等级

从高到低:mastersurroundstereohireslosslessexhighstandard

当所选音质不可用时,API 会自动降级返回可用音质。

输出结构

./                                  # 当前目录(或 -o 指定)
├── 晴天 - 周杰伦.mp3                # 单曲:平铺
├── 晴天 - 周杰伦.lrc                # 使用 --save-lrc 时额外保存
├── playlist-华语经典500首/           # 歌单:自动创建子目录
│   ├── 晴天 - 周杰伦.flac
│   ├── 晴天 - 周杰伦.lrc
│   └── ...
└── album-十一月的萧邦/               # 专辑:自动创建子目录
    ├── 夜曲 - 周杰伦.flac
    └── ...

歌单/专辑目录名和歌曲文件名会自动过滤文件名非法字符。目标歌曲文件已存在时会跳过,不会覆盖。

凭证存储

登录凭证保存在 ~/.config/nqdlm/credentials.json,按平台独立存储。过期时自动尝试刷新,刷新失败则提示重新登录。未登录状态下,不需要登录的歌曲可以正常下载。

技术栈

  • clap — 命令行参数解析与补全
  • tokio — 异步运行时,驱动并行下载
  • netease-qq-music-api — 平台 API 交互
  • lofty — 音频元数据读写(ID3v2 / Vorbis Comment)
  • indicatif — 多进度条展示
  • image — QR 码 PNG 解码与缩放
  • dialoguer — 交互式确认与平台选择

About

Netease and QQ Music command-line downloader

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages