mirror of
https://github.com/SoPat712/allstarr.git
synced 2026-02-09 23:55:10 -05:00
Fix external track streaming: normalize provider names to lowercase (squidwtf, deezer, qobuz)
This commit is contained in:
@@ -986,14 +986,15 @@ public class AdminController : ControllerBase
|
|||||||
{
|
{
|
||||||
// Store external mapping in cache (NO EXPIRATION - manual mappings are permanent)
|
// Store external mapping in cache (NO EXPIRATION - manual mappings are permanent)
|
||||||
var externalMappingKey = $"spotify:external-map:{decodedName}:{request.SpotifyId}";
|
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);
|
await _cache.SetAsync(externalMappingKey, externalMapping);
|
||||||
|
|
||||||
// Also save to file for persistence across restarts
|
// 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}",
|
_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
|
// Clear all related caches to force rebuild
|
||||||
@@ -1083,7 +1084,8 @@ public class AdminController : ControllerBase
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var metadataService = HttpContext.RequestServices.GetRequiredService<IMusicMetadataService>();
|
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)
|
if (externalSong != null)
|
||||||
{
|
{
|
||||||
@@ -1095,7 +1097,7 @@ public class AdminController : ControllerBase
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Failed to fetch external track metadata for {Provider} ID {Id}",
|
_logger.LogWarning("Failed to fetch external track metadata for {Provider} ID {Id}",
|
||||||
request.ExternalProvider, request.ExternalId);
|
normalizedProvider, request.ExternalId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -1141,7 +1143,7 @@ public class AdminController : ControllerBase
|
|||||||
artist = trackArtist ?? "Unknown",
|
artist = trackArtist ?? "Unknown",
|
||||||
album = trackAlbum ?? "Unknown",
|
album = trackAlbum ?? "Unknown",
|
||||||
isLocal = isLocalMapping,
|
isLocal = isLocalMapping,
|
||||||
externalProvider = hasExternalMapping ? request.ExternalProvider : null
|
externalProvider = hasExternalMapping ? request.ExternalProvider!.ToLowerInvariant() : null
|
||||||
};
|
};
|
||||||
|
|
||||||
return Ok(new
|
return Ok(new
|
||||||
|
|||||||
Reference in New Issue
Block a user