From 537f4a149097f85a9da3d9d27758582c20b82389 Mon Sep 17 00:00:00 2001 From: Rob Emery Date: Sun, 19 Jan 2025 18:23:11 +0000 Subject: [PATCH] Some metadata returned --- dlna/contenddirectoryservice.go | 49 +++++++++++++++++++++++++++++---- dlna/upnpav/upnpav.go | 4 +-- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/dlna/contenddirectoryservice.go b/dlna/contenddirectoryservice.go index 9aff8a0ec..af469df95 100644 --- a/dlna/contenddirectoryservice.go +++ b/dlna/contenddirectoryservice.go @@ -71,7 +71,7 @@ func (cds *contentDirectoryService) cdsObjectToUpnpavObject(cdsObject object, is // otherwise fall back to working out what it is from the file path. var mimeType = "audio/mp3" //TODO - obj.Class = "object.item.audioItem" + obj.Class = "object.item.audioItem.musicTrack" obj.Date = upnpav.Timestamp{Time: time.Now()} item := upnpav.Item{ @@ -237,16 +237,16 @@ func (cds *contentDirectoryService) doMediaFiles(tracks model.MediaFiles, basePa /* Love Takes Time - object.item.audioItem.musicTrack Mariah Carey 2000-01-01 - Mariah Carey + object.item.audioItem.musicTrack + Mariah Carey #1's Pop 2 - http://172.30.0.4:8200/MediaItems/17759.mp3 http://172.30.0.4:8200/AlbumArt/24179-17759.jpg + http://172.30.0.4:8200/MediaItems/17759.mp3 */ for _, track := range tracks { @@ -254,7 +254,46 @@ func (cds *contentDirectoryService) doMediaFiles(tracks model.MediaFiles, basePa Path: path.Join(basePath, track.Title), Id: path.Join(basePath, track.ID), } - ret = append(ret, cds.cdsObjectToUpnpavObject(child, false, host)) + title := track.Title + artist := track.Artist + //date := track.Date //TODO + album := track.Album + genre := track.Genre + trackNo := track.TrackNumber + + obj := upnpav.Object{ + ID: child.Id, + Restricted: 1, + ParentID: child.ParentID(), + Title: title, + } + + var mimeType = "audio/mp3" //TODO + + obj.Class = "object.item.audioItem.musicTrack" + obj.Date = upnpav.Timestamp{Time: time.Now()} + obj.Artist = artist + obj.Album = album + obj.Genre = genre + obj.OriginalTrackNumber = trackNo + + item := upnpav.Item{ + Object: obj, + Res: make([]upnpav.Resource, 0, 1), + } + + item.Res = append(item.Res, upnpav.Resource{ + URL: (&url.URL{ + Scheme: "http", + Host: host, + Path: path.Join(resPath, child.Path), + }).String(), + ProtocolInfo: fmt.Sprintf("http-get:*:%s:%s", mimeType, dlna.ContentFeatures{ + SupportRange: false, + }.String()), + Size: uint64(1048576), //TODO TRACKSIZE + }) + ret = append(ret, item) } return ret, nil diff --git a/dlna/upnpav/upnpav.go b/dlna/upnpav/upnpav.go index c6dc9dc4f..88790f1be 100644 --- a/dlna/upnpav/upnpav.go +++ b/dlna/upnpav/upnpav.go @@ -50,9 +50,9 @@ type Object struct { Album string `xml:"upnp:album,omitempty"` Genre string `xml:"upnp:genre,omitempty"` AlbumArtURI string `xml:"upnp:albumArtURI,omitempty"` - Searchable int `xml:"searchable,attr"` + Searchable int `xml:"searchable,attr"` // + OriginalTrackNumber int `xml:"originalTrackNumber,omitempty"` } - // Timestamp wraps time.Time for formatting purposes type Timestamp struct { time.Time