mirror of
https://github.com/AynaLivePlayer/miaosic.git
synced 2025-12-06 13:02:48 +08:00
27 lines
817 B
Go
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()
|
|
}
|