Files
miaosic/tag/writer_id3v2.go
2025-08-06 00:29:00 +08:00

27 lines
817 B
Go

package tag
import (
"fmt"
"github.com/bogem/id3v2/v2"
"os"
)
func WriteID3v2Tags(f *os.File, meta Metadata) error {
tag, err := id3v2.ParseReader(f, id3v2.Options{Parse: true})
if err != nil {
return fmt.Errorf("error parsing mp3 file: %w", err)
}
tag.SetTitle(meta.Title)
tag.SetArtist(meta.Artist)
tag.SetAlbum(meta.Album)
for _, lyric := range meta.Lyrics {
uslf := id3v2.UnsynchronisedLyricsFrame{Encoding: id3v2.EncodingUTF8, Language: lyric.Lang[:min(3, len(lyric.Lang))], Lyrics: lyric.Lyrics}
tag.AddUnsynchronisedLyricsFrame(uslf)
}
for _, pic := range meta.Pictures {
picFrame := id3v2.PictureFrame{Encoding: id3v2.EncodingUTF8, MimeType: pic.Mimetype, PictureType: pic.Type, Description: pic.Description, Picture: pic.Data}
tag.AddAttachedPicture(picFrame)
}
return tag.Save()
}