Small uv/Python CLI for downloading NetEase Cloud Music tracks.
Project description
ncm-dl
ncm-dl 是一个基于 uv/Python 的网易云音乐命令行下载工具。
运行时只用 Python 标准库,不依赖第三方包。配置优先读取环境变量,命令行参数可以覆盖环境变量。
用法
cd ~/ncm-dl
uv run ncm-dl search "晴天"
uv run ncm-dl download 186016 --output ~/音乐
uv run ncm-dl url 186016
download 也可以写成 dl:
uv run ncm-dl dl 186016
下载整个网易云歌单并生成 Navidrome 可导入的 M3U:
export MUSIC_U='your_cookie_value'
uv run ncm-dl playlist 你的歌单ID \
--music-root /opt/navidrome/music \
--level lossless \
--navidrome-scan \
--navidrome-import \
--navidrome-sudo \
--sync
先不下载、只确认歌单是否能读取:
uv run ncm-dl playlist 你的歌单ID --dry-run --limit 10
默认会把歌曲下载到:
/opt/navidrome/music/netease/<歌单名-歌单ID>/
并生成:
/opt/navidrome/music/playlists/<歌单名-歌单ID>.m3u
M3U 里的歌曲路径会相对 --music-root 写入,适合 Navidrome 扫描和 navidrome pls import。
如果你的音乐库里已经有按 [...] 标记网易云歌曲 ID 的文件,可以指定复用查找目录,避免重复下载:
uv run ncm-dl playlist 你的歌单ID \
--music-root /opt/navidrome/music \
--reuse-dir /opt/navidrome/music/netease
环境变量
支持这些环境变量:
| 变量 | 作用 |
|---|---|
MUSIC_U |
网易云 MUSIC_U cookie,用于付费/VIP/无损歌曲。 |
OUTPUT_DIR |
默认下载目录。 |
LEVEL |
默认音质:standard、higher、exhigh、lossless、hires。默认 exhigh。 |
LIMIT |
默认搜索结果数量。默认 10。 |
OVERWRITE |
设为 1、true 或 yes 时,默认覆盖同名文件。 |
CHECK_MD5 |
设为 0、false 或 no 时,默认关闭 MD5 校验。 |
NCM_REUSE_DIR |
playlist 命令按网易云歌曲 ID 查找已有文件的目录。默认 <music-root>/netease。 |
NAVIDROME_MUSIC_ROOT |
playlist 命令默认音乐库根目录。默认 /opt/navidrome/music。 |
NAVIDROME_BIN |
playlist --navidrome-import 使用的 Navidrome 可执行文件。默认 navidrome。 |
NAVIDROME_CONFIG |
Navidrome 配置文件。默认 /etc/navidrome/navidrome.toml。 |
NAVIDROME_USER |
导入歌单所属的 Navidrome 用户。默认第一个管理员。 |
NAVIDROME_SUDO |
设为 1、true 或 yes 时,导入步骤使用 sudo navidrome。 |
NAVIDROME_SYNC |
设为 1、true 或 yes 时,导入时加 --sync。 |
NCM_TIMEOUT |
下载超时时间,单位秒。默认 60。 |
NCM_USER_AGENT |
自定义请求 User-Agent。 |
示例:
export MUSIC_U='your_cookie_value'
export OUTPUT_DIR="$HOME/音乐"
export LEVEL=lossless
uv run ncm-dl dl 186016
说明
- 本工具不会把
MUSIC_U写入磁盘。 - 如果歌曲没有返回可播放 URL,通常需要设置有效网易云账号的
MUSIC_U。 - 网易云返回 MD5 时会默认校验下载文件;只有排查问题时才建议使用
--no-md5。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ncm_dl-0.1.2.tar.gz.
File metadata
- Download URL: ncm_dl-0.1.2.tar.gz
- Upload date:
- Size: 8.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c22fe7bd5106e4026b1fd8212e999a924f6cb28fd1033e22af465860ac391d5f
|
|
| MD5 |
5ba49b1b86d80bc214b3af4e83fc8e22
|
|
| BLAKE2b-256 |
16ac0010a114f514bb6b8f39b8f5dc8985bff20e9f8a32d534bfda1b42bd852f
|
File details
Details for the file ncm_dl-0.1.2-py3-none-any.whl.
File metadata
- Download URL: ncm_dl-0.1.2-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6391023d0b1a3eb74f218bd2395e0bfb2e5da27fea289be2a8be4184b59d99e2
|
|
| MD5 |
d5a8b32947e9c8a7549d3ac83d4bc29b
|
|
| BLAKE2b-256 |
2e079c3f6e77b6ed7b7c5f05eb97eb73ede46daa14306488c82264c5a8dc9d1b
|