fix: relay empty search queries directly to Navidrome for browsing all songs

This commit is contained in:
V1ck3s
2025-12-08 23:29:03 +01:00
committed by Vickes
parent a2c0b13c21
commit a6db9a35bc

View File

@@ -100,15 +100,28 @@ public class SubsonicController : ControllerBase
var query = parameters.GetValueOrDefault("query", ""); var query = parameters.GetValueOrDefault("query", "");
var format = parameters.GetValueOrDefault("f", "xml"); var format = parameters.GetValueOrDefault("f", "xml");
if (string.IsNullOrWhiteSpace(query)) // Nettoyer la query (enlever les guillemets vides)
var cleanQuery = query.Trim().Trim('"');
// Si la query est vide, relayer directement vers Subsonic (browse all songs)
if (string.IsNullOrWhiteSpace(cleanQuery))
{
try
{
var result = await RelayToSubsonic("rest/search3", parameters);
var contentType = result.ContentType ?? $"application/{format}";
return File((byte[])result.Body, contentType);
}
catch
{ {
return CreateSubsonicResponse(format, "searchResult3", new { }); return CreateSubsonicResponse(format, "searchResult3", new { });
} }
}
// Lancer les deux recherches en parallèle // Lancer les deux recherches en parallèle
var subsonicTask = RelayToSubsonicSafe("rest/search3", parameters); var subsonicTask = RelayToSubsonicSafe("rest/search3", parameters);
var externalTask = _metadataService.SearchAllAsync( var externalTask = _metadataService.SearchAllAsync(
query, cleanQuery,
int.TryParse(parameters.GetValueOrDefault("songCount", "20"), out var sc) ? sc : 20, int.TryParse(parameters.GetValueOrDefault("songCount", "20"), out var sc) ? sc : 20,
int.TryParse(parameters.GetValueOrDefault("albumCount", "20"), out var ac) ? ac : 20, int.TryParse(parameters.GetValueOrDefault("albumCount", "20"), out var ac) ? ac : 20,
int.TryParse(parameters.GetValueOrDefault("artistCount", "20"), out var arc) ? arc : 20 int.TryParse(parameters.GetValueOrDefault("artistCount", "20"), out var arc) ? arc : 20