2.2 KiB
2.2 KiB
ncmdump-go
基于 ncmdump 的 Golang 移植版,支持网易云音乐 .ncm 文件解密为 MP3 / FLAC。
提供两种使用方式:Web 图形界面 和 命令行工具。
Web 界面(WASM,推荐)
所有加解密在浏览器本地完成,不会上传你的文件到任何服务器。解密引擎使用 Go 编译为 WebAssembly,性能接近原生。
使用
- 打开网页
- 选择包含
.ncm文件的输入文件夹 - 选择输出文件夹
- 点击「开始转换」
歌曲名、歌手、专辑信息以及封面图片会自动写入转换后的文件中。
要求:Chrome / Edge 浏览器,通过
localhost或 HTTPS 访问。
Docker 部署
docker compose up -d --build
然后浏览器访问 http://localhost:8080。
本地开发
./build-wasm.sh # 编译 WASM + 前端 + 服务器
./ncmdump-web --port 8080
命令行
安装
go install git.taurusxin.com/taurusxin/ncmdump-go@latest
使用
# 单文件
ncmdump-go song.ncm
# 批量处理目录(不递归子目录)
ncmdump-go -d source_dir
# 递归处理 + 指定输出目录
ncmdump-go -d source_dir -r -o output_dir
作为库使用
go get -u git.taurusxin.com/taurusxin/ncmdump-go
import "git.taurusxin.com/taurusxin/ncmdump-go/ncmcrypt"
ncm, _ := ncmcrypt.NewNeteaseCloudMusic("song.ncm")
ncm.Dump("/path/to/output")
ncm.FixMetadata(true)
fmt.Println(ncm.GetDumpFilePath())
项目结构
├── main.go # CLI 命令行入口
├── ncmcrypt/ # 核心加解密库
│ ├── ncmcrypt.go # NCM 格式解析 / RC4 解密
│ ├── metadata.go # 元数据解析(歌名/歌手/封面URL)
│ └── embed.go # 内存写入 ID3 / FLAC 标签
├── utils/ # AES / 文件工具
├── cmd/
│ ├── wasm/main.go # WASM 编译入口(浏览器端)
│ └── server/main.go # 静态文件服务器
├── web/ # 前端(React + Tailwind)
└── Dockerfile # 多阶段构建
License
MIT