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
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