diff --git a/server/subsonic/helpers.go b/server/subsonic/helpers.go index 595572c0c..a934ae3c1 100644 --- a/server/subsonic/helpers.go +++ b/server/subsonic/helpers.go @@ -324,7 +324,7 @@ func buildAlbumID3(ctx context.Context, album model.Album) responses.AlbumID3 { return dir } -func buildStructuredLyric(lyric model.Lyric) responses.StructuredLyric { +func buildStructuredLyric(mf *model.MediaFile, lyric model.Lyric) responses.StructuredLyric { lines := make([]responses.Line, len(lyric.Line)) for i, line := range lyric.Line { @@ -343,14 +343,21 @@ func buildStructuredLyric(lyric model.Lyric) responses.StructuredLyric { Synced: lyric.Synced, } + if structured.DisplayArtist == "" { + structured.DisplayArtist = mf.Artist + } + if structured.DisplayTitle == "" { + structured.DisplayTitle = mf.Title + } + return structured } -func buildStructuredLyrics(lyrics model.Lyrics) *responses.LyricsList { +func buildStructuredLyrics(mf *model.MediaFile, lyrics model.Lyrics) *responses.LyricsList { lyricList := make(responses.StructuredLyrics, len(lyrics)) for i, lyric := range lyrics { - lyricList[i] = buildStructuredLyric(lyric) + lyricList[i] = buildStructuredLyric(mf, lyric) } res := &responses.LyricsList{ diff --git a/server/subsonic/media_retrieval.go b/server/subsonic/media_retrieval.go index 18943e841..893986bd6 100644 --- a/server/subsonic/media_retrieval.go +++ b/server/subsonic/media_retrieval.go @@ -145,7 +145,7 @@ func (api *Router) GetLyricsBySongId(r *http.Request) (*responses.Subsonic, erro } response := newResponse() - response.LyricsList = buildStructuredLyrics(lyrics) + response.LyricsList = buildStructuredLyrics(mediaFile, lyrics) return response, nil }