fix(subsonic): don't return concatenated genres strings for song/trackchilds

This commit is contained in:
sentriz
2023-10-10 16:40:10 +01:00
parent 422a4b88d7
commit f18151b755
5 changed files with 76 additions and 55 deletions

View File

@@ -264,14 +264,6 @@ func (t *Track) RelPath() string {
) )
} }
func (t *Track) GenreStrings() []string {
strs := make([]string, 0, len(t.Genres))
for _, genre := range t.Genres {
strs = append(strs, genre.Name)
}
return strs
}
type User struct { type User struct {
ID int `gorm:"primary_key"` ID int `gorm:"primary_key"`
CreatedAt time.Time CreatedAt time.Time

View File

@@ -2,7 +2,6 @@ package spec
import ( import (
"path/filepath" "path/filepath"
"strings"
"go.senan.xyz/gonic/db" "go.senan.xyz/gonic/db"
) )
@@ -69,7 +68,6 @@ func NewTCTrackByFolder(t *db.Track, parent *db.Album) *TrackChild {
), ),
ParentID: parent.SID(), ParentID: parent.SID(),
Duration: t.Length, Duration: t.Length,
Genre: strings.Join(t.GenreStrings(), ", "),
Year: parent.TagYear, Year: parent.TagYear,
Bitrate: t.Bitrate, Bitrate: t.Bitrate,
IsDir: false, IsDir: false,
@@ -92,6 +90,12 @@ func NewTCTrackByFolder(t *db.Track, parent *db.Album) *TrackChild {
if t.TrackRating != nil { if t.TrackRating != nil {
trCh.UserRating = t.TrackRating.Rating trCh.UserRating = t.TrackRating.Rating
} }
if len(t.Genres) > 0 {
trCh.Genre = t.Genres[0].Name
}
for _, g := range t.Genres {
trCh.Genres = append(trCh.Genres, &GenreRef{Name: g.Name})
}
return trCh return trCh
} }

View File

@@ -3,7 +3,6 @@ package spec
import ( import (
"path/filepath" "path/filepath"
"sort" "sort"
"strings"
"go.senan.xyz/gonic/db" "go.senan.xyz/gonic/db"
) )
@@ -68,7 +67,6 @@ func NewTrackByTags(t *db.Track, album *db.Album) *TrackChild {
), ),
Album: album.TagTitle, Album: album.TagTitle,
AlbumID: album.SID(), AlbumID: album.SID(),
Genre: strings.Join(t.GenreStrings(), ", "),
Duration: t.Length, Duration: t.Length,
Bitrate: t.Bitrate, Bitrate: t.Bitrate,
Type: "music", Type: "music",
@@ -90,6 +88,12 @@ func NewTrackByTags(t *db.Track, album *db.Album) *TrackChild {
}) })
ret.ArtistID = album.Artists[0].SID() ret.ArtistID = album.Artists[0].SID()
} }
if len(t.Genres) > 0 {
ret.Genre = t.Genres[0].Name
}
for _, g := range t.Genres {
ret.Genres = append(ret.Genres, &GenreRef{Name: g.Name})
}
return ret return ret
} }

View File

@@ -171,6 +171,7 @@ type TrackChild struct {
CreatedAt time.Time `xml:"created,attr,omitempty" json:"created,omitempty"` CreatedAt time.Time `xml:"created,attr,omitempty" json:"created,omitempty"`
Duration int `xml:"duration,attr,omitempty" json:"duration,omitempty"` Duration int `xml:"duration,attr,omitempty" json:"duration,omitempty"`
Genre string `xml:"genre,attr,omitempty" json:"genre,omitempty"` Genre string `xml:"genre,attr,omitempty" json:"genre,omitempty"`
Genres []*GenreRef `xml:"genres,omitempty" json:"genres,omitempty"`
IsDir bool `xml:"isDir,attr" json:"isDir"` IsDir bool `xml:"isDir,attr" json:"isDir"`
IsVideo bool `xml:"isVideo,attr" json:"isVideo"` IsVideo bool `xml:"isVideo,attr" json:"isVideo"`
ParentID *specid.ID `xml:"parent,attr,omitempty" json:"parent,omitempty"` ParentID *specid.ID `xml:"parent,attr,omitempty" json:"parent,omitempty"`

View File

@@ -19,6 +19,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-3", "parent": "al-3",
@@ -42,6 +43,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-3", "parent": "al-3",
@@ -65,6 +67,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-3", "parent": "al-3",
@@ -88,6 +91,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-4", "parent": "al-4",
@@ -111,6 +115,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-4", "parent": "al-4",
@@ -134,6 +139,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-4", "parent": "al-4",
@@ -157,6 +163,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-5", "parent": "al-5",
@@ -180,6 +187,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-5", "parent": "al-5",
@@ -203,6 +211,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-5", "parent": "al-5",
@@ -226,6 +235,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-7", "parent": "al-7",
@@ -249,6 +259,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-7", "parent": "al-7",
@@ -272,6 +283,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-7", "parent": "al-7",
@@ -295,6 +307,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-8", "parent": "al-8",
@@ -318,6 +331,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-8", "parent": "al-8",
@@ -341,6 +355,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-8", "parent": "al-8",
@@ -364,6 +379,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-9", "parent": "al-9",
@@ -387,6 +403,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-9", "parent": "al-9",
@@ -410,6 +427,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-9", "parent": "al-9",
@@ -433,6 +451,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-11", "parent": "al-11",
@@ -456,6 +475,7 @@
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"duration": 100, "duration": 100,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }],
"isDir": false, "isDir": false,
"isVideo": false, "isVideo": false,
"parent": "al-11", "parent": "al-11",