append metadata tags after saving tracks
also rewrite requests to monochrome using 2 helper methods
This commit is contained in:
33
main.go
33
main.go
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user