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 }