From f9d5cb11ec1d5c5c09432323f88a381365430884 Mon Sep 17 00:00:00 2001 From: WeebDataHoarder <57538841+WeebDataHoarder@users.noreply.github.com> Date: Mon, 1 Aug 2022 14:40:49 +0200 Subject: [PATCH] Allow numeric title/album/artist on queue entries --- queue.go | 52 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/queue.go b/queue.go index 36379c3..30d4e48 100644 --- a/queue.go +++ b/queue.go @@ -33,10 +33,10 @@ type QueueTrackEntry struct { QueueIdentifier queue.QueueIdentifier Path string Metadata struct { - Title string `json:"title"` - Album string `json:"album"` - Artist string `json:"artist"` - Art string `json:"art"` + Title interface{} `json:"title"` + Album interface{} `json:"album"` + Artist interface{} `json:"artist"` + Art string `json:"art"` ReplayGain struct { TrackPeak float64 `json:"track_peak"` TrackGain float64 `json:"track_gain"` @@ -50,6 +50,36 @@ type QueueTrackEntry struct { original map[string]interface{} } +func (e *QueueTrackEntry) Title() string { + if strVal, ok := e.Metadata.Title.(string); ok { + return strVal + } else if intVal, ok := e.Metadata.Title.(int); ok { + return strconv.Itoa(intVal) + } + + return "" +} + +func (e *QueueTrackEntry) Album() string { + if strVal, ok := e.Metadata.Album.(string); ok { + return strVal + } else if intVal, ok := e.Metadata.Album.(int); ok { + return strconv.Itoa(intVal) + } + + return "" +} + +func (e *QueueTrackEntry) Artist() string { + if strVal, ok := e.Metadata.Artist.(string); ok { + return strVal + } else if intVal, ok := e.Metadata.Artist.(int); ok { + return strconv.Itoa(intVal) + } + + return "" +} + func (e *QueueTrackEntry) Load() error { if e.source != nil { return nil @@ -105,16 +135,16 @@ func (e *QueueTrackEntry) Load() error { //apply tags found on file if meta != nil { - if e.Metadata.Title == "" { + if e.Title() == "" { e.Metadata.Title = meta.Title() } - if e.Metadata.Album == "" { + if e.Album() == "" { e.Metadata.Album = meta.Album() } - if e.Metadata.Artist == "" { + if e.Artist() == "" { e.Metadata.Artist = meta.Artist() } - if e.Metadata.Artist == "" { + if e.Artist() == "" { e.Metadata.Artist = meta.AlbumArtist() } @@ -752,10 +782,10 @@ func (q *Queue) HandleRadioRequest(writer http.ResponseWriter, request *http.Req return requestDone.Error } if metadataPacket, ok := packet.(*QueueMetadataPacket); ok { - if len(metadataPacket.TrackEntry.Metadata.Artist) > 0 { - metadataToSend["StreamTitle"] = fmt.Sprintf("%s - %s", metadataPacket.TrackEntry.Metadata.Artist, metadataPacket.TrackEntry.Metadata.Title) + if len(metadataPacket.TrackEntry.Artist()) > 0 { + metadataToSend["StreamTitle"] = fmt.Sprintf("%s - %s", metadataPacket.TrackEntry.Artist(), metadataPacket.TrackEntry.Title()) } else { - metadataToSend["StreamTitle"] = metadataPacket.TrackEntry.Metadata.Title + metadataToSend["StreamTitle"] = metadataPacket.TrackEntry.Title() } if len(metadataPacket.TrackEntry.Metadata.Art) > 0 { metadataToSend["StreamURL"] = metadataPacket.TrackEntry.Metadata.Art