Add legacy Spotify playlist format support with position control

This commit is contained in:
2026-02-03 01:39:33 -05:00
parent 12db8370a3
commit 4c3709113f

View File

@@ -120,14 +120,16 @@ builder.Services.Configure<SpotifyImportSettings>(options =>
// Parse SPOTIFY_IMPORT_PLAYLISTS env var (JSON array format) // Parse SPOTIFY_IMPORT_PLAYLISTS env var (JSON array format)
// Format: [["Name","Id","first|last"],["Name2","Id2","first|last"]] // Format: [["Name","Id","first|last"],["Name2","Id2","first|last"]]
var playlistsEnv = builder.Configuration.GetValue<string>("SpotifyImport:Playlists"); var playlistsEnv = builder.Configuration.GetValue<string>("SpotifyImport:Playlists");
if (!string.IsNullOrWhiteSpace(playlistsEnv) && options.Playlists.Count == 0) if (!string.IsNullOrWhiteSpace(playlistsEnv))
{ {
Console.WriteLine($"Found SPOTIFY_IMPORT_PLAYLISTS env var: {playlistsEnv.Length} chars");
try try
{ {
// Parse as JSON array of arrays // Parse as JSON array of arrays
var playlistArrays = System.Text.Json.JsonSerializer.Deserialize<string[][]>(playlistsEnv); var playlistArrays = System.Text.Json.JsonSerializer.Deserialize<string[][]>(playlistsEnv);
if (playlistArrays != null) if (playlistArrays != null && playlistArrays.Length > 0)
{ {
Console.WriteLine($"Parsed {playlistArrays.Length} playlists from JSON format");
foreach (var arr in playlistArrays) foreach (var arr in playlistArrays)
{ {
if (arr.Length >= 2) if (arr.Length >= 2)
@@ -142,16 +144,26 @@ builder.Services.Configure<SpotifyImportSettings>(options =>
: LocalTracksPosition.First : LocalTracksPosition.First
}; };
options.Playlists.Add(config); options.Playlists.Add(config);
Console.WriteLine($" Added: {config.Name} (ID: {config.Id}, Position: {config.LocalTracksPosition})");
} }
} }
} }
else
{
Console.WriteLine("JSON format was empty or invalid, will try legacy format");
}
} }
catch (System.Text.Json.JsonException ex) catch (System.Text.Json.JsonException ex)
{ {
Console.WriteLine($"Warning: Failed to parse SPOTIFY_IMPORT_PLAYLISTS: {ex.Message}"); Console.WriteLine($"Warning: Failed to parse SPOTIFY_IMPORT_PLAYLISTS: {ex.Message}");
Console.WriteLine("Expected format: [[\"Name\",\"Id\",\"first|last\"],[\"Name2\",\"Id2\",\"first|last\"]]"); Console.WriteLine("Expected format: [[\"Name\",\"Id\",\"first|last\"],[\"Name2\",\"Id2\",\"first|last\"]]");
Console.WriteLine("Will try legacy format instead");
} }
} }
else
{
Console.WriteLine("No SPOTIFY_IMPORT_PLAYLISTS env var found, will try legacy format");
}
// Legacy support: Parse old SPOTIFY_IMPORT_PLAYLIST_IDS/NAMES env vars // Legacy support: Parse old SPOTIFY_IMPORT_PLAYLIST_IDS/NAMES env vars
// Only used if new Playlists format is not configured // Only used if new Playlists format is not configured