完成Web ASM
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package ncmcrypt
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
func EmbedMetadata(audio []byte, format NcmFormat, title, artist, album string, coverData []byte) ([]byte, error) {
|
||||
tmpFile, err := os.CreateTemp("", "ncmdump-embed-*")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("create temp file: %w", err)
|
||||
}
|
||||
tmpPath := tmpFile.Name()
|
||||
defer os.Remove(tmpPath)
|
||||
|
||||
if _, err := tmpFile.Write(audio); err != nil {
|
||||
tmpFile.Close()
|
||||
return nil, fmt.Errorf("write temp: %w", err)
|
||||
}
|
||||
tmpFile.Close()
|
||||
|
||||
ncm := &NeteaseCloudMusic{
|
||||
mPng: [8]byte{0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A},
|
||||
mFormat: format,
|
||||
mDumpFilePath: tmpPath,
|
||||
mImageData: coverData,
|
||||
mMetadata: &NeteaseClousMusicMetadata{
|
||||
mName: title,
|
||||
mArtist: artist,
|
||||
mAlbum: album,
|
||||
},
|
||||
}
|
||||
|
||||
if _, err := ncm.FixMetadata(false); err != nil {
|
||||
return nil, fmt.Errorf("write metadata: %w", err)
|
||||
}
|
||||
|
||||
result, err := os.ReadFile(tmpPath)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("read result: %w", err)
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
Reference in New Issue
Block a user