Allow numeric title/album/artist on queue entries
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
DataHoarder 2022-08-01 14:40:49 +02:00
parent f47ba3da89
commit f9d5cb11ec
Signed by: DataHoarder
SSH key fingerprint: SHA256:OLTRf6Fl87G52SiR7sWLGNzlJt4WOX+tfI2yxo0z7xk

View file

@ -33,10 +33,10 @@ type QueueTrackEntry struct {
QueueIdentifier queue.QueueIdentifier QueueIdentifier queue.QueueIdentifier
Path string Path string
Metadata struct { Metadata struct {
Title string `json:"title"` Title interface{} `json:"title"`
Album string `json:"album"` Album interface{} `json:"album"`
Artist string `json:"artist"` Artist interface{} `json:"artist"`
Art string `json:"art"` Art string `json:"art"`
ReplayGain struct { ReplayGain struct {
TrackPeak float64 `json:"track_peak"` TrackPeak float64 `json:"track_peak"`
TrackGain float64 `json:"track_gain"` TrackGain float64 `json:"track_gain"`
@ -50,6 +50,36 @@ type QueueTrackEntry struct {
original map[string]interface{} 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 { func (e *QueueTrackEntry) Load() error {
if e.source != nil { if e.source != nil {
return nil return nil
@ -105,16 +135,16 @@ func (e *QueueTrackEntry) Load() error {
//apply tags found on file //apply tags found on file
if meta != nil { if meta != nil {
if e.Metadata.Title == "" { if e.Title() == "" {
e.Metadata.Title = meta.Title() e.Metadata.Title = meta.Title()
} }
if e.Metadata.Album == "" { if e.Album() == "" {
e.Metadata.Album = meta.Album() e.Metadata.Album = meta.Album()
} }
if e.Metadata.Artist == "" { if e.Artist() == "" {
e.Metadata.Artist = meta.Artist() e.Metadata.Artist = meta.Artist()
} }
if e.Metadata.Artist == "" { if e.Artist() == "" {
e.Metadata.Artist = meta.AlbumArtist() e.Metadata.Artist = meta.AlbumArtist()
} }
@ -752,10 +782,10 @@ func (q *Queue) HandleRadioRequest(writer http.ResponseWriter, request *http.Req
return requestDone.Error return requestDone.Error
} }
if metadataPacket, ok := packet.(*QueueMetadataPacket); ok { if metadataPacket, ok := packet.(*QueueMetadataPacket); ok {
if len(metadataPacket.TrackEntry.Metadata.Artist) > 0 { if len(metadataPacket.TrackEntry.Artist()) > 0 {
metadataToSend["StreamTitle"] = fmt.Sprintf("%s - %s", metadataPacket.TrackEntry.Metadata.Artist, metadataPacket.TrackEntry.Metadata.Title) metadataToSend["StreamTitle"] = fmt.Sprintf("%s - %s", metadataPacket.TrackEntry.Artist(), metadataPacket.TrackEntry.Title())
} else { } else {
metadataToSend["StreamTitle"] = metadataPacket.TrackEntry.Metadata.Title metadataToSend["StreamTitle"] = metadataPacket.TrackEntry.Title()
} }
if len(metadataPacket.TrackEntry.Metadata.Art) > 0 { if len(metadataPacket.TrackEntry.Metadata.Art) > 0 {
metadataToSend["StreamURL"] = metadataPacket.TrackEntry.Metadata.Art metadataToSend["StreamURL"] = metadataPacket.TrackEntry.Metadata.Art