No description
This repository has been archived on 2026-01-29. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
  • Go 93.6%
  • Shell 6.4%
Find a file
2020-12-28 09:57:40 +08:00
asserts 增加对应的插图以及说明 2019-05-10 17:43:38 +08:00
cmd/ncmdump 递归扫描输入文件夹下所有文件 #18 2020-12-28 09:57:40 +08:00
tag 修复title,album tag的写入 #17 2020-12-23 15:04:02 +08:00
.editorconfig 增加 Meta 文件 2019-05-05 17:01:48 +08:00
.gitignore 增加 Meta 文件 2019-05-05 17:01:48 +08:00
build.sh 优化代码 2020-12-18 18:03:27 +08:00
go.mod Add interface for tagging audio file; 2020-04-28 16:59:37 +08:00
LICENSE 增加 Meta 文件 2019-05-05 17:01:48 +08:00
ncmdump.go 优化代码 2020-12-18 18:03:27 +08:00
ncmdump_test.go Add HOME directory 2019-05-06 12:02:07 +08:00
README.md Update README.md 2020-12-25 18:32:41 +08:00
struct.go 优化代码 2020-12-18 18:03:27 +08:00
utils.go 优化代码 2020-12-18 18:03:27 +08:00

ncmdump.go - 导出网易云音乐 NCM 格式

简介

用于导出网易云音乐 NCM 格式的相关内容,核心转换功能参考 anonymous5l/ncmdump,并使用 golang 实现,起初是为了能在 Windows 下快速编译和运行。有任何BUG在这里提交。

特性

  • 转换ncm文件
  • 为音频(flac和mp3)文件补充tag信息包含标题、歌手、专辑、封面等
  • 保留163key使播放器能识别转换后的文件

如何使用?

  • 下载程序ncmdump

    1. 拖拽方式执行:

    拖拽ncm文件或者包含ncm文件夹到执行程序 ncmdump-xxx上,等待程序运行完成

    1. 命令行方式执行:

    ncmdump-xxx [files.../dirs...] 参数支持:

    --output 输出文件夹,为空时默认输出文件夹为音频文件的原文件夹
    --tag    是否使用ncm的元信息来为音频文件补充tag默认true
    

    参数需要放到输入文件、文件夹之前,如 ncmdump-xxx --output=D:\music_dump\ D:\music D:\music\name.ncm

  • 代码中使用

    下载:

  go get -u github.com/yoki123/ncmdump

导入:

  import "github.com/yoki123/ncmdump"

顺便提一句,为了转换以及处理方便,使用 ncmdump.Dump(fp) 会将已经解出来的原音乐格式放入内存中,如果想直接写入文件建议修改 writer 的指向即可。

格式分析

NCM 实际上不是音频格式是容器格式,封装了对应格式的 Meta 以及封面等信息,主要的格式如下:

ncm.png

因此,需要解开原格式信息的关键就是拿到 AES 的 KEY好在每个 NCM 的加密的 KEY 都是一致的(出于性能考虑?)。所以,我们只要拿到 AES 的 KEY 以后,就可以根据格式解开对应的资源。

已知问题

新版的云音乐已经不在 NCM 嵌入图片以及 Meta 等信息,因此使用 ncmdump.DumpMeta 去调用的时候,需要检查 Meta 信息的完整性。如果您需要 Meta 等信息,建议不要使用最新的客户端。

相关链接

- eof -