Fix external track streaming: normalize provider names to lowercase (squidwtf, deezer, qobuz)

This commit is contained in:
2026-02-05 11:40:45 -05:00
parent 629e95ac30
commit 8555b67a38

View File

@@ -986,14 +986,15 @@ public class AdminController : ControllerBase
{
// Store external mapping in cache (NO EXPIRATION - manual mappings are permanent)
var externalMappingKey = $"spotify:external-map:{decodedName}:{request.SpotifyId}";
var externalMapping = new { provider = request.ExternalProvider, id = request.ExternalId };
var normalizedProvider = request.ExternalProvider!.ToLowerInvariant(); // Normalize to lowercase
var externalMapping = new { provider = normalizedProvider, id = request.ExternalId };
await _cache.SetAsync(externalMappingKey, externalMapping);
// Also save to file for persistence across restarts
await SaveManualMappingToFileAsync(decodedName, request.SpotifyId, null, request.ExternalProvider!, request.ExternalId!);
await SaveManualMappingToFileAsync(decodedName, request.SpotifyId, null, normalizedProvider, request.ExternalId!);
_logger.LogInformation("Manual external mapping saved: {Playlist} - Spotify {SpotifyId} → {Provider} {ExternalId}",
decodedName, request.SpotifyId, request.ExternalProvider, request.ExternalId);
decodedName, request.SpotifyId, normalizedProvider, request.ExternalId);
}
// Clear all related caches to force rebuild
@@ -1083,7 +1084,8 @@ public class AdminController : ControllerBase
try
{
var metadataService = HttpContext.RequestServices.GetRequiredService<IMusicMetadataService>();
var externalSong = await metadataService.GetSongAsync(request.ExternalProvider!, request.ExternalId!);
var normalizedProvider = request.ExternalProvider!.ToLowerInvariant(); // Normalize to lowercase
var externalSong = await metadataService.GetSongAsync(normalizedProvider, request.ExternalId!);
if (externalSong != null)
{
@@ -1095,7 +1097,7 @@ public class AdminController : ControllerBase
else
{
_logger.LogWarning("Failed to fetch external track metadata for {Provider} ID {Id}",
request.ExternalProvider, request.ExternalId);
normalizedProvider, request.ExternalId);
}
}
catch (Exception ex)
@@ -1141,7 +1143,7 @@ public class AdminController : ControllerBase
artist = trackArtist ?? "Unknown",
album = trackAlbum ?? "Unknown",
isLocal = isLocalMapping,
externalProvider = hasExternalMapping ? request.ExternalProvider : null
externalProvider = hasExternalMapping ? request.ExternalProvider!.ToLowerInvariant() : null
};
return Ok(new