diff --git a/api/browsing.go b/api/browsing.go
index 2b2ffe383..5c861857c 100644
--- a/api/browsing.go
+++ b/api/browsing.go
@@ -83,7 +83,15 @@ func (c *BrowsingController) GetDirectory() {
}
func (c *BrowsingController) buildDirectory(d *engine.DirectoryInfo) *responses.Directory {
- dir := &responses.Directory{Id: d.Id, Name: d.Name}
+ dir := &responses.Directory{
+ Id: d.Id,
+ Name: d.Name,
+ Parent: d.Parent,
+ PlayCount: d.PlayCount,
+ }
+ if !d.Starred.IsZero() {
+ dir.Starred = &d.Starred
+ }
dir.Child = make([]responses.Child, len(d.Entries))
for i, entry := range d.Entries {
diff --git a/api/responses/responses.go b/api/responses/responses.go
index 1a3b7056a..89237b388 100644
--- a/api/responses/responses.go
+++ b/api/responses/responses.go
@@ -104,15 +104,15 @@ type Child struct {
}
type Directory struct {
- Child []Child `xml:"child" json:"child,omitempty"`
- Id string `xml:"id,attr" json:"id"`
- Name string `xml:"name,attr" json:"name"`
+ Child []Child `xml:"child" json:"child,omitempty"`
+ Id string `xml:"id,attr" json:"id"`
+ Name string `xml:"name,attr" json:"name"`
+ Parent string `xml:"parent,attr,omitempty" json:"parent,omitempty"`
+ Starred *time.Time `xml:"starred,attr,omitempty" json:"starred,omitempty"`
+ PlayCount int32 `xml:"playCount,attr,omitempty" json:"playcount,omitempty"`
/*
-
-
-
*/
}
diff --git a/engine/browser.go b/engine/browser.go
index 2c534e5db..2b2f5d763 100644
--- a/engine/browser.go
+++ b/engine/browser.go
@@ -54,9 +54,12 @@ func (b browser) Indexes(ifModifiedSince time.Time) (domain.ArtistIndexes, time.
}
type DirectoryInfo struct {
- Id string
- Name string
- Entries Entries
+ Id string
+ Name string
+ Entries Entries
+ Parent string
+ Starred time.Time
+ PlayCount int32
}
func (c browser) Directory(id string) (*DirectoryInfo, error) {
@@ -90,12 +93,21 @@ func (c browser) buildArtistDir(a *domain.Artist, albums domain.Albums) *Directo
dir.Entries = make(Entries, len(albums))
for i, al := range albums {
dir.Entries[i] = FromAlbum(&al)
+ dir.PlayCount += int32(al.PlayCount)
}
return dir
}
func (c browser) buildAlbumDir(al *domain.Album, tracks domain.MediaFiles) *DirectoryInfo {
- dir := &DirectoryInfo{Id: al.Id, Name: al.Name}
+ dir := &DirectoryInfo{
+ Id: al.Id,
+ Name: al.Name,
+ Parent: al.ArtistId,
+ PlayCount: int32(al.PlayCount),
+ }
+ if al.Starred {
+ dir.Starred = al.UpdatedAt
+ }
dir.Entries = make(Entries, len(tracks))
for i, mf := range tracks {