diff --git a/octo-fiesta/Controllers/SubSonicController.cs b/octo-fiesta/Controllers/SubSonicController.cs
index af51297..b82b118 100644
--- a/octo-fiesta/Controllers/SubSonicController.cs
+++ b/octo-fiesta/Controllers/SubSonicController.cs
@@ -89,7 +89,7 @@ public class SubsonicController : ControllerBase
}
///
- /// Endpoint search3 personnalisé - fusionne les résultats locaux et externes
+ /// Merges local and external search results.
///
[HttpGet, HttpPost]
[Route("rest/search3")]
@@ -100,10 +100,8 @@ public class SubsonicController : ControllerBase
var query = parameters.GetValueOrDefault("query", "");
var format = parameters.GetValueOrDefault("f", "xml");
- // 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
@@ -118,7 +116,6 @@ public class SubsonicController : ControllerBase
}
}
- // Lancer les deux recherches en parallèle
var subsonicTask = RelayToSubsonicSafe("rest/search3", parameters);
var externalTask = _metadataService.SearchAllAsync(
cleanQuery,
@@ -132,12 +129,11 @@ public class SubsonicController : ControllerBase
var subsonicResult = await subsonicTask;
var externalResult = await externalTask;
- // Fusionner les résultats
return MergeSearchResults(subsonicResult, externalResult, format);
}
///
- /// Endpoint stream personnalisé - télécharge à la volée si nécessaire
+ /// Downloads on-the-fly if needed.
///
[HttpGet, HttpPost]
[Route("rest/stream")]
@@ -156,21 +152,17 @@ public class SubsonicController : ControllerBase
if (!isExternal)
{
- // Chanson locale - relayer vers Subsonic
return await RelayStreamToSubsonic(parameters);
}
- // Chanson externe - vérifier si déjà téléchargée
var localPath = await _localLibraryService.GetLocalPathForExternalSongAsync(provider!, externalId!);
if (localPath != null && System.IO.File.Exists(localPath))
{
- // Fichier déjà disponible localement
var stream = System.IO.File.OpenRead(localPath);
return File(stream, GetContentType(localPath), enableRangeProcessing: true);
}
- // Télécharger et streamer à la volée
try
{
var downloadStream = await _downloadService.DownloadAndStreamAsync(provider!, externalId!, HttpContext.RequestAborted);
@@ -183,7 +175,7 @@ public class SubsonicController : ControllerBase
}
///
- /// Endpoint getSong personnalisé - retourne les infos d'une chanson externe si nécessaire
+ /// Returns external song info if needed.
///
[HttpGet, HttpPost]
[Route("rest/getSong")]
@@ -203,13 +195,11 @@ public class SubsonicController : ControllerBase
if (!isExternal)
{
- // Chanson locale - relayer vers Subsonic
var result = await RelayToSubsonic("rest/getSong", parameters);
var contentType = result.ContentType ?? $"application/{format}";
return File((byte[])result.Body, contentType);
}
- // Chanson externe - récupérer depuis le service de métadonnées
var song = await _metadataService.GetSongAsync(provider!, externalId!);
if (song == null)
@@ -221,7 +211,7 @@ public class SubsonicController : ControllerBase
}
///
- /// Endpoint getArtist personnalisé - fusionne les albums locaux et Deezer
+ /// Merges local and Deezer albums.
///
[HttpGet, HttpPost]
[Route("rest/getArtist")]
@@ -241,7 +231,6 @@ public class SubsonicController : ControllerBase
if (isExternal)
{
- // Artiste externe - récupérer depuis Deezer avec ses albums
var artist = await _metadataService.GetArtistAsync(provider!, externalId!);
if (artist == null)
{
@@ -252,7 +241,6 @@ public class SubsonicController : ControllerBase
return CreateSubsonicArtistResponse(format, artist, albums);
}
- // Artiste local - récupérer depuis Navidrome puis enrichir avec Deezer
var navidromeResult = await RelayToSubsonicSafe("rest/getArtist", parameters);
if (!navidromeResult.Success || navidromeResult.Body == null)
@@ -260,7 +248,6 @@ public class SubsonicController : ControllerBase
return CreateSubsonicError(format, 70, "Artist not found");
}
- // Parser la réponse Navidrome pour extraire le nom de l'artiste et les albums locaux
var navidromeContent = Encoding.UTF8.GetString(navidromeResult.Body);
string artistName = "";
var localAlbums = new List