diff --git a/server/ctrlsubsonic/handlers_by_tags.go b/server/ctrlsubsonic/handlers_by_tags.go index 82077f7..4509b18 100644 --- a/server/ctrlsubsonic/handlers_by_tags.go +++ b/server/ctrlsubsonic/handlers_by_tags.go @@ -74,6 +74,7 @@ func (c *Controller) ServeGetArtist(r *http.Request) *spec.Response { Group("albums.id") }). Preload("Albums.Artists"). + Preload("Albums.Genres"). Preload("ArtistStar", "user_id=?", user.ID). Preload("ArtistRating", "user_id=?", user.ID). First(artist, id.Value) diff --git a/server/ctrlsubsonic/spec/construct_by_tags.go b/server/ctrlsubsonic/spec/construct_by_tags.go index a959edb..c2f48de 100644 --- a/server/ctrlsubsonic/spec/construct_by_tags.go +++ b/server/ctrlsubsonic/spec/construct_by_tags.go @@ -15,7 +15,6 @@ func NewAlbumByTags(a *db.Album, artists []*db.Artist) *Album { Name: a.TagTitle, Year: a.TagYear, TrackCount: a.ChildCount, - Genre: strings.Join(a.GenreStrings(), ", "), Duration: a.Duration, AverageRating: formatRating(a.AverageRating), } @@ -41,6 +40,12 @@ func NewAlbumByTags(a *db.Album, artists []*db.Artist) *Album { Name: a.Name, }) } + if len(a.Genres) > 0 { + ret.Genre = a.Genres[0].Name + } + for _, g := range a.Genres { + ret.Genres = append(ret.Genres, g.Name) + } return ret } diff --git a/server/ctrlsubsonic/spec/spec.go b/server/ctrlsubsonic/spec/spec.go index 00fcc01..248c2d0 100644 --- a/server/ctrlsubsonic/spec/spec.go +++ b/server/ctrlsubsonic/spec/spec.go @@ -134,6 +134,7 @@ type Album struct { TrackCount int `xml:"songCount,attr" json:"songCount"` Duration int `xml:"duration,attr" json:"duration"` Genre string `xml:"genre,attr,omitempty" json:"genre,omitempty"` + Genres []string `xml:"genres,omitempty" json:"genres,omitempty"` Year int `xml:"year,attr,omitempty" json:"year,omitempty"` Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"` // star / rating diff --git a/server/ctrlsubsonic/testdata/test_get_album_with_cover b/server/ctrlsubsonic/testdata/test_get_album_with_cover index c9c8c4a..f065f17 100644 --- a/server/ctrlsubsonic/testdata/test_get_album_with_cover +++ b/server/ctrlsubsonic/testdata/test_get_album_with_cover @@ -17,6 +17,7 @@ "songCount": 3, "duration": 300, "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021, "song": [ { diff --git a/server/ctrlsubsonic/testdata/test_get_artist_id_one b/server/ctrlsubsonic/testdata/test_get_artist_id_one index 5b28be4..55f309a 100644 --- a/server/ctrlsubsonic/testdata/test_get_artist_id_one +++ b/server/ctrlsubsonic/testdata/test_get_artist_id_one @@ -22,6 +22,8 @@ "name": "album-0", "songCount": 3, "duration": 300, + "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 }, { @@ -36,6 +38,8 @@ "name": "album-1", "songCount": 3, "duration": 300, + "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 }, { @@ -50,6 +54,8 @@ "name": "album-2", "songCount": 3, "duration": 300, + "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 } ] diff --git a/server/ctrlsubsonic/testdata/test_get_artist_id_three b/server/ctrlsubsonic/testdata/test_get_artist_id_three index e759357..b96328d 100644 --- a/server/ctrlsubsonic/testdata/test_get_artist_id_three +++ b/server/ctrlsubsonic/testdata/test_get_artist_id_three @@ -22,6 +22,8 @@ "name": "album-0", "songCount": 3, "duration": 300, + "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 }, { @@ -36,6 +38,8 @@ "name": "album-1", "songCount": 3, "duration": 300, + "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 }, { @@ -50,6 +54,8 @@ "name": "album-2", "songCount": 3, "duration": 300, + "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 } ] diff --git a/server/ctrlsubsonic/testdata/test_get_artist_id_two b/server/ctrlsubsonic/testdata/test_get_artist_id_two index 98f59b4..33fb4d2 100644 --- a/server/ctrlsubsonic/testdata/test_get_artist_id_two +++ b/server/ctrlsubsonic/testdata/test_get_artist_id_two @@ -22,6 +22,8 @@ "name": "album-0", "songCount": 3, "duration": 300, + "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 }, { @@ -36,6 +38,8 @@ "name": "album-1", "songCount": 3, "duration": 300, + "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 }, { @@ -50,6 +54,8 @@ "name": "album-2", "songCount": 3, "duration": 300, + "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 } ] diff --git a/server/ctrlsubsonic/testdata/test_search_three_q_alb b/server/ctrlsubsonic/testdata/test_search_three_q_alb index 122add3..1db3507 100644 --- a/server/ctrlsubsonic/testdata/test_search_three_q_alb +++ b/server/ctrlsubsonic/testdata/test_search_three_q_alb @@ -19,6 +19,7 @@ "songCount": 0, "duration": 0, "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 }, { @@ -34,6 +35,7 @@ "songCount": 0, "duration": 0, "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 }, { @@ -49,6 +51,7 @@ "songCount": 0, "duration": 0, "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 }, { @@ -64,6 +67,7 @@ "songCount": 0, "duration": 0, "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 }, { @@ -79,6 +83,7 @@ "songCount": 0, "duration": 0, "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 }, { @@ -94,6 +99,7 @@ "songCount": 0, "duration": 0, "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 }, { @@ -109,6 +115,7 @@ "songCount": 0, "duration": 0, "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 }, { @@ -124,6 +131,7 @@ "songCount": 0, "duration": 0, "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 }, { @@ -139,6 +147,7 @@ "songCount": 0, "duration": 0, "genre": "Unknown Genre", + "genres": ["Unknown Genre"], "year": 2021 } ]