From 5cd2985e6b0626e04a78aeb3c331b712eecbb2af Mon Sep 17 00:00:00 2001 From: Deluan Date: Wed, 27 Dec 2023 18:30:58 -0500 Subject: [PATCH] Add fallback artist/title to structured lyrics --- server/subsonic/helpers.go | 13 ++++++++++--- server/subsonic/media_retrieval.go | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) 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 }