Files
ncmdump-go-wasm/README.md
T
2026-06-08 22:09:35 +08:00

92 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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