From 37f72f2efcf2d59c9d196e3e37ec7990f059a950 Mon Sep 17 00:00:00 2001 From: Deluan Date: Mon, 21 Mar 2016 09:35:18 -0400 Subject: [PATCH] More metadata for directories (albums) --- api/browsing.go | 10 +++++++++- api/responses/responses.go | 12 ++++++------ engine/browser.go | 20 ++++++++++++++++---- 3 files changed, 31 insertions(+), 11 deletions(-) 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 {