omit album and artist from LrcLib search if unknown/emtpy

This commit is contained in:
Drew Weymouth
2025-09-22 18:45:00 -07:00
parent bf39a9e179
commit 2fa0234321
+18 -2
View File
@@ -80,10 +80,26 @@ func (l *LrcLibFetcher) fetchFromServer(name, artist, album string, durationSecs
req.Header.Add("Accept", "application/json") req.Header.Add("Accept", "application/json")
req.Header.Add("User-Agent", "Supersonic") req.Header.Add("User-Agent", "Supersonic")
// Navidrome and Gonic substitute "[Unknown Album]" and "Unknown Album", respectively,
// for an empty album name. This will break LrcLib matching.
// TODO: if OpenSubsonic later clarifies that servers should not do this, remove this workaround.
// N.B.: This workaround will break if servers decide to internationalize the default album name
if strings.Contains(album, "Unknown Album") {
album = ""
}
if strings.Contains(artist, "Unknown Artist") {
artist = ""
}
q := req.URL.Query() q := req.URL.Query()
addIf := func(key, value string) {
if value != "" {
q.Add(key, value)
}
}
q.Add("track_name", name) q.Add("track_name", name)
q.Add("artist_name", artist) addIf("artist_name", artist)
q.Add("album_name", album) addIf("album_name", album)
q.Add("duration", strconv.Itoa(durationSecs)) q.Add("duration", strconv.Itoa(durationSecs))
req.URL.RawQuery = q.Encode() req.URL.RawQuery = q.Encode()