append metadata tags after saving tracks

also rewrite requests to monochrome using 2 helper methods
This commit is contained in:
2026-02-20 18:56:38 +03:00
parent 0b29406e6f
commit b42a556ec5
7 changed files with 136 additions and 32 deletions

33
main.go
View File

@@ -11,6 +11,8 @@ import (
"path"
"strconv"
"sync"
"go.senan.xyz/taglib"
)
func sendJSON(w http.ResponseWriter, data any, status int) {
@@ -58,7 +60,12 @@ func main() {
return
}
if err := os.Mkdir("./music/"+album.Title, 0777); err != nil {
albumCoverImg, err := mClient.AlbumCoverImage(album.CoverID)
if err != nil {
log.Printf("failed to download album cover: %v\n", err)
}
if err := os.Mkdir("./Music/"+album.Title, 0777); err != nil {
http.Error(w, fmt.Sprintf("failed to create album directory: %v", err), 500)
return
}
@@ -107,11 +114,33 @@ func main() {
return
}
if err := os.WriteFile(path.Join("./music/", album.Title, track.Item.Title+".flac"), data, 0644); err != nil {
fPath := path.Join("./Music/", album.Title, track.Item.Title+".flac")
if err := os.WriteFile(fPath, data, 0644); err != nil {
log.Printf("failed to save track file: %v\n", err)
return
}
artists := []string{}
for _, artist := range album.Artists {
artists = append(artists, artist.Name)
}
if err := taglib.WriteTags(fPath, map[string][]string{
taglib.Artist: {album.Artist.Name},
taglib.Artists: artists,
taglib.AlbumArtist: artists,
taglib.TrackNumber: {strconv.Itoa(track.Item.TrackNumber)},
taglib.Album: {album.Title},
taglib.Title: {track.Item.Title},
taglib.ReleaseDate: {album.ReleaseDate},
}, 0); err != nil {
log.Printf("failed to add metadata tags to track file: %v\n", err)
}
if err := taglib.WriteImage(fPath, albumCoverImg); err != nil {
log.Printf("failed to add album cover to track metadata: %v\n", err)
}
response.Lock()
response.count++
response.Unlock()