# ncmdump-go 基于 [ncmdump](https://github.com/taurusxin/ncmdump) 的 Golang 移植版,支持网易云音乐 `.ncm` 文件解密为 MP3 / FLAC。 提供两种使用方式:**Web 图形界面** 和 **命令行工具**。 ## Web 界面(WASM,推荐) 所有加解密在浏览器本地完成,**不会上传你的文件到任何服务器**。解密引擎使用 Go 编译为 WebAssembly,性能接近原生。 ### 使用 1. 打开网页 2. 选择包含 `.ncm` 文件的**输入文件夹** 3. 选择**输出文件夹** 4. 点击「开始转换」 歌曲名、歌手、专辑信息以及封面图片会自动写入转换后的文件中。 > 要求:Chrome / Edge 浏览器,通过 `localhost` 或 HTTPS 访问。 ### Docker 部署 ```shell docker compose up -d --build ``` 然后浏览器访问 `http://localhost:8080`。 ### 本地开发 ```shell ./build-wasm.sh # 编译 WASM + 前端 + 服务器 ./ncmdump-web --port 8080 ``` ## 命令行 ### 安装 ```shell go install git.taurusxin.com/taurusxin/ncmdump-go@latest ``` ### 使用 ```shell # 单文件 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 ``` ```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