ncmdump

package module
v0.3.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 23, 2020 License: Apache-2.0 Imports: 9 Imported by: 2

README

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

简介

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

如何使用?

  • 使用命令行程序ncmdump-xxx-release

    1. 命令行执行:

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

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

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

    1. 拖拽执行:

    拖拽文件或者文件夹到程序ncmdump-xxx

  • 代码中使用

    下载:

  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 -

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Decode

func Decode(fp *os.File) ([]byte, error)

func Dump

func Dump(fp *os.File) ([]byte, error)

func DumpCover

func DumpCover(fp *os.File) ([]byte, error)

func NCMFile

func NCMFile(fp *os.File) (bool, error)

Types

type Album

type Album struct {
	Id       float64 `json:"albumId"`
	Name     string  `json:"album"`
	CoverUrl string  `json:"albumPic"`
}

type Artist

type Artist struct {
	Name string
	Id   float64
}

type Meta

type Meta struct {
	Id       float64 `json:"musicId"`
	Name     string  `json:"musicName"`
	*Album   `json:",inline"`
	Artists  []Artist `json:"artist"`
	BitRate  float64  `json:"bitrate"`
	Duration float64  `json:"duration"`
	Format   string   `json:"format"`
	Comment  string   `json:"-"`
}

@ref https://music.163.com/#/song?id={id}

func DumpMeta

func DumpMeta(fp *os.File) (Meta, error)

Directories

Path Synopsis
cmd
ncmdump command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL