feat(subsonic): return playCount in album responses

closes #458
This commit is contained in:
sentriz
2024-01-18 21:10:19 +00:00
parent 87943ea863
commit ec55f3b22a
18 changed files with 323 additions and 221 deletions

View File

@@ -339,6 +339,7 @@ type Album struct {
AlbumStar *AlbumStar AlbumStar *AlbumStar
AlbumRating *AlbumRating AlbumRating *AlbumRating
AverageRating float64 `sql:"default: null"` AverageRating float64 `sql:"default: null"`
Play *Play
} }
func (a *Album) SID() *specid.ID { func (a *Album) SID() *specid.ID {

View File

@@ -117,6 +117,8 @@ func (c *Controller) ServeGetAlbum(r *http.Request) *spec.Response {
}). }).
Preload("AlbumStar", "user_id=?", user.ID). Preload("AlbumStar", "user_id=?", user.ID).
Preload("AlbumRating", "user_id=?", user.ID). Preload("AlbumRating", "user_id=?", user.ID).
Preload("AlbumRating", "user_id=?", user.ID).
Preload("Play", "user_id=?", user.ID).
First(album, id.Value). First(album, id.Value).
Error Error
if errors.Is(err, gorm.ErrRecordNotFound) { if errors.Is(err, gorm.ErrRecordNotFound) {
@@ -199,6 +201,7 @@ func (c *Controller) ServeGetAlbumListTwo(r *http.Request) *spec.Response {
Preload("Artists"). Preload("Artists").
Preload("AlbumStar", "user_id=?", user.ID). Preload("AlbumStar", "user_id=?", user.ID).
Preload("AlbumRating", "user_id=?", user.ID). Preload("AlbumRating", "user_id=?", user.ID).
Preload("Play", "user_id=?", user.ID).
Find(&albums) Find(&albums)
sub := spec.NewResponse() sub := spec.NewResponse()
sub.AlbumsTwo = &spec.Albums{ sub.AlbumsTwo = &spec.Albums{
@@ -256,7 +259,8 @@ func (c *Controller) ServeSearchThree(r *http.Request) *spec.Response {
Preload("Artists"). Preload("Artists").
Preload("Genres"). Preload("Genres").
Preload("AlbumStar", "user_id=?", user.ID). Preload("AlbumStar", "user_id=?", user.ID).
Preload("AlbumRating", "user_id=?", user.ID) Preload("AlbumRating", "user_id=?", user.ID).
Preload("Play", "user_id=?", user.ID)
for _, s := range queries { for _, s := range queries {
q = q.Where(`tag_title LIKE ? OR tag_title_u_dec LIKE ?`, s, s) q = q.Where(`tag_title LIKE ? OR tag_title_u_dec LIKE ?`, s, s)
} }
@@ -517,7 +521,8 @@ func (c *Controller) ServeGetStarredTwo(r *http.Request) *spec.Response {
Order("album_stars.star_date DESC"). Order("album_stars.star_date DESC").
Preload("Artists"). Preload("Artists").
Preload("AlbumStar", "user_id=?", user.ID). Preload("AlbumStar", "user_id=?", user.ID).
Preload("AlbumRating", "user_id=?", user.ID) Preload("AlbumRating", "user_id=?", user.ID).
Preload("Play", "user_id=?", user.ID)
if m := getMusicFolder(c.musicPaths, params); m != "" { if m := getMusicFolder(c.musicPaths, params); m != "" {
q = q.Where("albums.root_dir=?", m) q = q.Where("albums.root_dir=?", m)
} }

View File

@@ -51,6 +51,9 @@ func NewAlbumByTags(a *db.Album, artists []*db.Artist) *Album {
for _, g := range a.Genres { for _, g := range a.Genres {
ret.Genres = append(ret.Genres, &GenreRef{Name: g.Name}) ret.Genres = append(ret.Genres, &GenreRef{Name: g.Name})
} }
if a.Play != nil {
ret.PlayCount = a.Play.Count
}
return ret return ret
} }

View File

@@ -144,6 +144,7 @@ type Album struct {
Name string `xml:"name,attr" json:"name"` Name string `xml:"name,attr" json:"name"`
TrackCount int `xml:"songCount,attr" json:"songCount"` TrackCount int `xml:"songCount,attr" json:"songCount"`
Duration int `xml:"duration,attr" json:"duration"` Duration int `xml:"duration,attr" json:"duration"`
PlayCount int `xml:"playCount,attr" json:"playCount"`
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"` Genres []*GenreRef `xml:"genres,omitempty" json:"genres,omitempty"`
Year int `xml:"year,attr,omitempty" json:"year,omitempty"` Year int `xml:"year,attr,omitempty" json:"year,omitempty"`

View File

@@ -20,7 +20,8 @@
"coverArt": "al-3", "coverArt": "al-3",
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-4", "id": "al-4",
@@ -35,7 +36,8 @@
"coverArt": "al-4", "coverArt": "al-4",
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-5", "id": "al-5",
@@ -50,7 +52,8 @@
"coverArt": "al-5", "coverArt": "al-5",
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-7", "id": "al-7",
@@ -65,7 +68,8 @@
"coverArt": "al-7", "coverArt": "al-7",
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-8", "id": "al-8",
@@ -80,7 +84,8 @@
"coverArt": "al-8", "coverArt": "al-8",
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-9", "id": "al-9",
@@ -95,7 +100,8 @@
"coverArt": "al-9", "coverArt": "al-9",
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-11", "id": "al-11",
@@ -110,7 +116,8 @@
"coverArt": "al-11", "coverArt": "al-11",
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-12", "id": "al-12",
@@ -125,7 +132,8 @@
"coverArt": "al-12", "coverArt": "al-12",
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-13", "id": "al-13",
@@ -140,7 +148,8 @@
"coverArt": "al-13", "coverArt": "al-13",
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
} }
] ]
} }

View File

@@ -20,7 +20,8 @@
"coverArt": "al-3", "coverArt": "al-3",
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-7", "id": "al-7",
@@ -35,7 +36,8 @@
"coverArt": "al-7", "coverArt": "al-7",
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-11", "id": "al-11",
@@ -50,7 +52,8 @@
"coverArt": "al-11", "coverArt": "al-11",
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-4", "id": "al-4",
@@ -65,7 +68,8 @@
"coverArt": "al-4", "coverArt": "al-4",
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-8", "id": "al-8",
@@ -80,7 +84,8 @@
"coverArt": "al-8", "coverArt": "al-8",
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-12", "id": "al-12",
@@ -95,7 +100,8 @@
"coverArt": "al-12", "coverArt": "al-12",
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-5", "id": "al-5",
@@ -110,7 +116,8 @@
"coverArt": "al-5", "coverArt": "al-5",
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-9", "id": "al-9",
@@ -125,7 +132,8 @@
"coverArt": "al-9", "coverArt": "al-9",
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-13", "id": "al-13",
@@ -140,7 +148,8 @@
"coverArt": "al-13", "coverArt": "al-13",
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
} }
] ]
} }

View File

@@ -20,7 +20,8 @@
"coverArt": "al-3", "coverArt": "al-3",
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-4", "id": "al-4",
@@ -35,7 +36,8 @@
"coverArt": "al-4", "coverArt": "al-4",
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-5", "id": "al-5",
@@ -50,7 +52,8 @@
"coverArt": "al-5", "coverArt": "al-5",
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-7", "id": "al-7",
@@ -65,7 +68,8 @@
"coverArt": "al-7", "coverArt": "al-7",
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-8", "id": "al-8",
@@ -80,7 +84,8 @@
"coverArt": "al-8", "coverArt": "al-8",
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-9", "id": "al-9",
@@ -95,7 +100,8 @@
"coverArt": "al-9", "coverArt": "al-9",
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-11", "id": "al-11",
@@ -110,7 +116,8 @@
"coverArt": "al-11", "coverArt": "al-11",
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-12", "id": "al-12",
@@ -125,7 +132,8 @@
"coverArt": "al-12", "coverArt": "al-12",
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
}, },
{ {
"id": "al-13", "id": "al-13",
@@ -140,7 +148,8 @@
"coverArt": "al-13", "coverArt": "al-13",
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
} }
] ]
} }

View File

@@ -7,51 +7,6 @@
"openSubsonic": true, "openSubsonic": true,
"albumList": { "albumList": {
"album": [ "album": [
{
"id": "al-12",
"created": "2019-11-30T00:00:00Z",
"artist": "artist-2",
"artists": null,
"displayArtist": "",
"title": "album-1",
"album": "album-1",
"parent": "al-10",
"isDir": true,
"coverArt": "al-12",
"name": "album-1",
"songCount": 3,
"duration": 300
},
{
"id": "al-8",
"created": "2019-11-30T00:00:00Z",
"artist": "artist-1",
"artists": null,
"displayArtist": "",
"title": "album-1",
"album": "album-1",
"parent": "al-6",
"isDir": true,
"coverArt": "al-8",
"name": "album-1",
"songCount": 3,
"duration": 300
},
{
"id": "al-3",
"created": "2019-11-30T00:00:00Z",
"artist": "artist-0",
"artists": null,
"displayArtist": "",
"title": "album-0",
"album": "album-0",
"parent": "al-2",
"isDir": true,
"coverArt": "al-3",
"name": "album-0",
"songCount": 3,
"duration": 300
},
{ {
"id": "al-9", "id": "al-9",
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
@@ -65,67 +20,8 @@
"coverArt": "al-9", "coverArt": "al-9",
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
}, "playCount": 0
{
"id": "al-4",
"created": "2019-11-30T00:00:00Z",
"artist": "artist-0",
"artists": null,
"displayArtist": "",
"title": "album-1",
"album": "album-1",
"parent": "al-2",
"isDir": true,
"coverArt": "al-4",
"name": "album-1",
"songCount": 3,
"duration": 300
},
{
"id": "al-5",
"created": "2019-11-30T00:00:00Z",
"artist": "artist-0",
"artists": null,
"displayArtist": "",
"title": "album-2",
"album": "album-2",
"parent": "al-2",
"isDir": true,
"coverArt": "al-5",
"name": "album-2",
"songCount": 3,
"duration": 300
},
{
"id": "al-13",
"created": "2019-11-30T00:00:00Z",
"artist": "artist-2",
"artists": null,
"displayArtist": "",
"title": "album-2",
"album": "album-2",
"parent": "al-10",
"isDir": true,
"coverArt": "al-13",
"name": "album-2",
"songCount": 3,
"duration": 300
},
{
"id": "al-11",
"created": "2019-11-30T00:00:00Z",
"artist": "artist-2",
"artists": null,
"displayArtist": "",
"title": "album-0",
"album": "album-0",
"parent": "al-10",
"isDir": true,
"coverArt": "al-11",
"name": "album-0",
"songCount": 3,
"duration": 300
}, },
{ {
"id": "al-7", "id": "al-7",
@@ -140,7 +36,120 @@
"coverArt": "al-7", "coverArt": "al-7",
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300 "duration": 300,
"playCount": 0
},
{
"id": "al-4",
"created": "2019-11-30T00:00:00Z",
"artist": "artist-0",
"artists": null,
"displayArtist": "",
"title": "album-1",
"album": "album-1",
"parent": "al-2",
"isDir": true,
"coverArt": "al-4",
"name": "album-1",
"songCount": 3,
"duration": 300,
"playCount": 0
},
{
"id": "al-12",
"created": "2019-11-30T00:00:00Z",
"artist": "artist-2",
"artists": null,
"displayArtist": "",
"title": "album-1",
"album": "album-1",
"parent": "al-10",
"isDir": true,
"coverArt": "al-12",
"name": "album-1",
"songCount": 3,
"duration": 300,
"playCount": 0
},
{
"id": "al-5",
"created": "2019-11-30T00:00:00Z",
"artist": "artist-0",
"artists": null,
"displayArtist": "",
"title": "album-2",
"album": "album-2",
"parent": "al-2",
"isDir": true,
"coverArt": "al-5",
"name": "album-2",
"songCount": 3,
"duration": 300,
"playCount": 0
},
{
"id": "al-3",
"created": "2019-11-30T00:00:00Z",
"artist": "artist-0",
"artists": null,
"displayArtist": "",
"title": "album-0",
"album": "album-0",
"parent": "al-2",
"isDir": true,
"coverArt": "al-3",
"name": "album-0",
"songCount": 3,
"duration": 300,
"playCount": 0
},
{
"id": "al-8",
"created": "2019-11-30T00:00:00Z",
"artist": "artist-1",
"artists": null,
"displayArtist": "",
"title": "album-1",
"album": "album-1",
"parent": "al-6",
"isDir": true,
"coverArt": "al-8",
"name": "album-1",
"songCount": 3,
"duration": 300,
"playCount": 0
},
{
"id": "al-13",
"created": "2019-11-30T00:00:00Z",
"artist": "artist-2",
"artists": null,
"displayArtist": "",
"title": "album-2",
"album": "album-2",
"parent": "al-10",
"isDir": true,
"coverArt": "al-13",
"name": "album-2",
"songCount": 3,
"duration": 300,
"playCount": 0
},
{
"id": "al-11",
"created": "2019-11-30T00:00:00Z",
"artist": "artist-2",
"artists": null,
"displayArtist": "",
"title": "album-0",
"album": "album-0",
"parent": "al-10",
"isDir": true,
"coverArt": "al-11",
"name": "album-0",
"songCount": 3,
"duration": 300,
"playCount": 0
} }
] ]
} }

View File

@@ -20,6 +20,7 @@
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -35,6 +36,7 @@
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -50,6 +52,7 @@
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -65,6 +68,7 @@
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -80,6 +84,7 @@
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -95,6 +100,7 @@
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -110,6 +116,7 @@
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -125,6 +132,7 @@
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -140,6 +148,7 @@
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
} }
] ]

View File

@@ -20,6 +20,7 @@
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -35,6 +36,7 @@
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -50,6 +52,7 @@
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -65,6 +68,7 @@
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -80,6 +84,7 @@
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -95,6 +100,7 @@
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -110,6 +116,7 @@
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -125,6 +132,7 @@
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -140,6 +148,7 @@
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
} }
] ]

View File

@@ -20,6 +20,7 @@
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -35,6 +36,7 @@
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -50,6 +52,7 @@
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -65,6 +68,7 @@
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -80,6 +84,7 @@
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -95,6 +100,7 @@
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -110,6 +116,7 @@
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -125,6 +132,7 @@
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -140,6 +148,7 @@
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
} }
] ]

View File

@@ -7,51 +7,6 @@
"openSubsonic": true, "openSubsonic": true,
"albumList2": { "albumList2": {
"album": [ "album": [
{
"id": "al-7",
"created": "2019-11-30T00:00:00Z",
"artistId": "ar-2",
"artist": "artist-1",
"artists": [{ "id": "ar-2", "name": "artist-1" }],
"displayArtist": "artist-1",
"title": "album-0",
"album": "album-0",
"coverArt": "al-7",
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-4",
"created": "2019-11-30T00:00:00Z",
"artistId": "ar-1",
"artist": "artist-0",
"artists": [{ "id": "ar-1", "name": "artist-0" }],
"displayArtist": "artist-0",
"title": "album-1",
"album": "album-1",
"coverArt": "al-4",
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-12",
"created": "2019-11-30T00:00:00Z",
"artistId": "ar-3",
"artist": "artist-2",
"artists": [{ "id": "ar-3", "name": "artist-2" }],
"displayArtist": "artist-2",
"title": "album-1",
"album": "album-1",
"coverArt": "al-12",
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{ {
"id": "al-3", "id": "al-3",
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
@@ -65,36 +20,7 @@
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"year": 2021 "playCount": 0,
},
{
"id": "al-8",
"created": "2019-11-30T00:00:00Z",
"artistId": "ar-2",
"artist": "artist-1",
"artists": [{ "id": "ar-2", "name": "artist-1" }],
"displayArtist": "artist-1",
"title": "album-1",
"album": "album-1",
"coverArt": "al-8",
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-9",
"created": "2019-11-30T00:00:00Z",
"artistId": "ar-2",
"artist": "artist-1",
"artists": [{ "id": "ar-2", "name": "artist-1" }],
"displayArtist": "artist-1",
"title": "album-2",
"album": "album-2",
"coverArt": "al-9",
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021 "year": 2021
}, },
{ {
@@ -110,21 +36,23 @@
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
"id": "al-13", "id": "al-8",
"created": "2019-11-30T00:00:00Z", "created": "2019-11-30T00:00:00Z",
"artistId": "ar-3", "artistId": "ar-2",
"artist": "artist-2", "artist": "artist-1",
"artists": [{ "id": "ar-3", "name": "artist-2" }], "artists": [{ "id": "ar-2", "name": "artist-1" }],
"displayArtist": "artist-2", "displayArtist": "artist-1",
"title": "album-2", "title": "album-1",
"album": "album-2", "album": "album-1",
"coverArt": "al-13", "coverArt": "al-8",
"name": "album-2", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
}, },
{ {
@@ -140,6 +68,87 @@
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"year": 2021
},
{
"id": "al-12",
"created": "2019-11-30T00:00:00Z",
"artistId": "ar-3",
"artist": "artist-2",
"artists": [{ "id": "ar-3", "name": "artist-2" }],
"displayArtist": "artist-2",
"title": "album-1",
"album": "album-1",
"coverArt": "al-12",
"name": "album-1",
"songCount": 3,
"duration": 300,
"playCount": 0,
"year": 2021
},
{
"id": "al-7",
"created": "2019-11-30T00:00:00Z",
"artistId": "ar-2",
"artist": "artist-1",
"artists": [{ "id": "ar-2", "name": "artist-1" }],
"displayArtist": "artist-1",
"title": "album-0",
"album": "album-0",
"coverArt": "al-7",
"name": "album-0",
"songCount": 3,
"duration": 300,
"playCount": 0,
"year": 2021
},
{
"id": "al-13",
"created": "2019-11-30T00:00:00Z",
"artistId": "ar-3",
"artist": "artist-2",
"artists": [{ "id": "ar-3", "name": "artist-2" }],
"displayArtist": "artist-2",
"title": "album-2",
"album": "album-2",
"coverArt": "al-13",
"name": "album-2",
"songCount": 3,
"duration": 300,
"playCount": 0,
"year": 2021
},
{
"id": "al-4",
"created": "2019-11-30T00:00:00Z",
"artistId": "ar-1",
"artist": "artist-0",
"artists": [{ "id": "ar-1", "name": "artist-0" }],
"displayArtist": "artist-0",
"title": "album-1",
"album": "album-1",
"coverArt": "al-4",
"name": "album-1",
"songCount": 3,
"duration": 300,
"playCount": 0,
"year": 2021
},
{
"id": "al-9",
"created": "2019-11-30T00:00:00Z",
"artistId": "ar-2",
"artist": "artist-1",
"artists": [{ "id": "ar-2", "name": "artist-1" }],
"displayArtist": "artist-1",
"title": "album-2",
"album": "album-2",
"coverArt": "al-9",
"name": "album-2",
"songCount": 3,
"duration": 300,
"playCount": 0,
"year": 2021 "year": 2021
} }
] ]

View File

@@ -18,6 +18,7 @@
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021, "year": 2021,

View File

@@ -15,7 +15,8 @@
"album": "", "album": "",
"name": "", "name": "",
"songCount": 0, "songCount": 0,
"duration": 0 "duration": 0,
"playCount": 0
} }
} }
} }

View File

@@ -23,6 +23,7 @@
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021
@@ -40,6 +41,7 @@
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021
@@ -57,6 +59,7 @@
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021

View File

@@ -23,6 +23,7 @@
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021
@@ -40,6 +41,7 @@
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021
@@ -57,6 +59,7 @@
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021

View File

@@ -23,6 +23,7 @@
"name": "album-0", "name": "album-0",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021
@@ -40,6 +41,7 @@
"name": "album-1", "name": "album-1",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021
@@ -57,6 +59,7 @@
"name": "album-2", "name": "album-2",
"songCount": 3, "songCount": 3,
"duration": 300, "duration": 300,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021

View File

@@ -20,6 +20,7 @@
"name": "album-0", "name": "album-0",
"songCount": 0, "songCount": 0,
"duration": 0, "duration": 0,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021
@@ -37,6 +38,7 @@
"name": "album-1", "name": "album-1",
"songCount": 0, "songCount": 0,
"duration": 0, "duration": 0,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021
@@ -54,6 +56,7 @@
"name": "album-2", "name": "album-2",
"songCount": 0, "songCount": 0,
"duration": 0, "duration": 0,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021
@@ -71,6 +74,7 @@
"name": "album-0", "name": "album-0",
"songCount": 0, "songCount": 0,
"duration": 0, "duration": 0,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021
@@ -88,6 +92,7 @@
"name": "album-1", "name": "album-1",
"songCount": 0, "songCount": 0,
"duration": 0, "duration": 0,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021
@@ -105,6 +110,7 @@
"name": "album-2", "name": "album-2",
"songCount": 0, "songCount": 0,
"duration": 0, "duration": 0,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021
@@ -122,6 +128,7 @@
"name": "album-0", "name": "album-0",
"songCount": 0, "songCount": 0,
"duration": 0, "duration": 0,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021
@@ -139,6 +146,7 @@
"name": "album-1", "name": "album-1",
"songCount": 0, "songCount": 0,
"duration": 0, "duration": 0,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021
@@ -156,6 +164,7 @@
"name": "album-2", "name": "album-2",
"songCount": 0, "songCount": 0,
"duration": 0, "duration": 0,
"playCount": 0,
"genre": "Unknown Genre", "genre": "Unknown Genre",
"genres": [{ "name": "Unknown Genre" }], "genres": [{ "name": "Unknown Genre" }],
"year": 2021 "year": 2021