diff --git a/MapMaven.Core/Models/PlayerProfile.cs b/MapMaven.Core/Models/PlayerProfile.cs index 7e97b9a..51133dc 100644 --- a/MapMaven.Core/Models/PlayerProfile.cs +++ b/MapMaven.Core/Models/PlayerProfile.cs @@ -28,7 +28,7 @@ public PlayerProfile(ApiClients.ScoreSaber.Player player) LeaderboardProvider = LeaderboardProvider.ScoreSaber; var playerRankHistory = player.Histories - ?.Split(',') + ?.Split(',', StringSplitOptions.RemoveEmptyEntries) .Select(int.Parse) .Cast() .ToArray() ?? []; diff --git a/MapMaven.Core/Services/Leaderboards/ScoreSaberService.cs b/MapMaven.Core/Services/Leaderboards/ScoreSaberService.cs index 57ca0d0..039a6b4 100644 --- a/MapMaven.Core/Services/Leaderboards/ScoreSaberService.cs +++ b/MapMaven.Core/Services/Leaderboards/ScoreSaberService.cs @@ -67,13 +67,30 @@ public class ScoreSaberService : ILeaderboardProviderService do { - var scoreCollection = await _scoreSaber.ScoresAsync( - playerId: playerId, - limit: 100, - sort: Sort.Top, - page: page, - withMetadata: true - ); + PlayerScoreCollection scoreCollection; + + try + { + scoreCollection = await _scoreSaber.ScoresAsync( + playerId: playerId, + limit: 100, + sort: Sort.Top, + page: page, + withMetadata: true + ); + } + catch (ScoreSaberApiClient.ApiException exception) + { + // The ScoreSaber API returns 404 when player has no scores, so just return an empty list of PlayerScores. + if (exception.StatusCode == 404) + { + break; + } + else + { + throw; + } + } totalScores = scoreCollection.Metadata.Total;