Skip to content

Commit

Permalink
fix rank bugs when rank data is missing
Browse files Browse the repository at this point in the history
  • Loading branch information
CNDRD committed Apr 20, 2022
1 parent b89f066 commit 3fa7ff2
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 40 deletions.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

setup(
name="siegeapi",
version="3.0.0",
version="3.0.2",
url="https://github.com/CNDRD/siege-api",
description="Rainbow Six Siege API interface",
author="CNDRD",
Expand Down
6 changes: 3 additions & 3 deletions siegeapi/constants/seasons.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
seasons = {
-1: {
"name": "Invalid",
"hex": "#ff0000",
-10000: {
"name": "No data",
"hex": "#xdxdxd",
"code": "Y0S0",
"start_date": "1970-01-01"
},
Expand Down
70 changes: 35 additions & 35 deletions siegeapi/player.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,14 +205,14 @@ async def load_ranked(self, season: int = -1, region: str = "emea") -> Rank:
if self.ranks.get(season, {}).get(region):
return self.ranks[season][region]

data = await self._auth.get(self._url_builder.boards(season, "ranked", region))
if data["players"] == {}:
raise InvalidRequest(f"There is no such data for the given combination of season ({season}) and region ({region})")
data = await self._auth.get(self._url_builder.skill_records(str(season), "pvp_ranked", region))
season_id = data["seasons_player_skill_records"][0]["season_id"]
data = data["seasons_player_skill_records"][0]["regions_player_skill_records"][0]["boards_player_skill_records"][0]["players_skill_records"]
rank_obj = Rank(data[0]) if data else Rank({})

rank_obj = Rank(data["players"][self.id])
self.ranks.setdefault(season, {})
self.ranks[season][region] = rank_obj if ((rank_obj.wins + rank_obj.losses) != 0) else None
return self.ranks[season][region]
self.ranks.setdefault(season_id, {})
self.ranks[season_id][region] = rank_obj
return self.ranks[season_id][region]

async def load_casual(self, season: int = -1, region: str = "emea") -> Rank:
if season <= 17 and region == "global":
Expand All @@ -222,14 +222,14 @@ async def load_casual(self, season: int = -1, region: str = "emea") -> Rank:
if self.ranks.get(season, {}).get(region):
return self.ranks[season][region]

data = await self._auth.get(self._url_builder.boards(season, "casual", region))
if data["players"] == {}:
raise InvalidRequest(f"There is no such data for the given combination of season ({season}) and region ({region})")
data = await self._auth.get(self._url_builder.skill_records(str(season), "pvp_casual", region))
season_id = data["seasons_player_skill_records"][0]["season_id"]
data = data["seasons_player_skill_records"][0]["regions_player_skill_records"][0]["boards_player_skill_records"][0]["players_skill_records"]
rank_obj = Rank(data[0]) if data else Rank({})

rank_obj = Rank(data["players"][self.id])
self.casuals.setdefault(season, {})
self.casuals[season][region] = rank_obj if ((rank_obj.wins + rank_obj.losses) != 0) else None
return self.casuals[season][region]
self.casuals.setdefault(season_id, {})
self.casuals[season_id][region] = rank_obj
return self.casuals[season_id][region]

async def load_newcomer(self, season: int = -1, region: str = "emea") -> Rank:
if season <= 17 and region == "global":
Expand All @@ -239,14 +239,14 @@ async def load_newcomer(self, season: int = -1, region: str = "emea") -> Rank:
if self.ranks.get(season, {}).get(region):
return self.ranks[season][region]

data = await self._auth.get(self._url_builder.boards(season, "newcomer", region))
if data["players"] == {}:
raise InvalidRequest(f"There is no such data for the given combination of season ({season}) and region ({region})")
data = await self._auth.get(self._url_builder.skill_records(str(season), "pvp_newcomer", region))
season_id = data["seasons_player_skill_records"][0]["season_id"]
data = data["seasons_player_skill_records"][0]["regions_player_skill_records"][0]["boards_player_skill_records"][0]["players_skill_records"]
rank_obj = Rank(data[0]) if data else Rank({})

rank_obj = Rank(data["players"][self.id])
self.newcomers.setdefault(season, {})
self.newcomers[season][region] = rank_obj if ((rank_obj.wins + rank_obj.losses) != 0) else None
return self.newcomers[season][region]
self.newcomers.setdefault(season_id, {})
self.newcomers[season_id][region] = rank_obj
return self.newcomers[season_id][region]

async def load_events(self, season: int = -1, region: str = "emea") -> Rank:
if season <= 17 and region == "global":
Expand All @@ -256,14 +256,14 @@ async def load_events(self, season: int = -1, region: str = "emea") -> Rank:
if self.ranks.get(season, {}).get(region):
return self.ranks[season][region]

data = await self._auth.get(self._url_builder.boards(season, "event", region))
if data["players"] == {}:
raise InvalidRequest(f"There is no such data for the given combination of season ({season}) and region ({region})")
data = await self._auth.get(self._url_builder.skill_records(str(season), "pvp_event", region))
season_id = data["seasons_player_skill_records"][0]["season_id"]
data = data["seasons_player_skill_records"][0]["regions_player_skill_records"][0]["boards_player_skill_records"][0]["players_skill_records"]
rank_obj = Rank(data[0]) if data else Rank({})

rank_obj = Rank(data["players"][self.id])
self.events.setdefault(season, {})
self.events[season][region] = rank_obj if ((rank_obj.wins + rank_obj.losses) != 0) else None
return self.events[season][region]
self.events.setdefault(season_id, {})
self.events[season_id][region] = rank_obj
return self.events[season_id][region]

async def load_deathmatch(self, season: int = -1, region: str = "emea") -> Rank:
if season <= 17 and region == "global":
Expand All @@ -273,14 +273,14 @@ async def load_deathmatch(self, season: int = -1, region: str = "emea") -> Rank:
if self.ranks.get(season, {}).get(region):
return self.ranks[season][region]

data = await self._auth.get(self._url_builder.boards(season, "warmup", region))
if data["players"] == {}:
raise InvalidRequest(f"There is no such data for the given combination of season ({season}) and region ({region})")
data = await self._auth.get(self._url_builder.skill_records(str(season), "pvp_warmup", region))
season_id = data["seasons_player_skill_records"][0]["season_id"]
data = data["seasons_player_skill_records"][0]["regions_player_skill_records"][0]["boards_player_skill_records"][0]["players_skill_records"]
rank_obj = Rank(data[0]) if data else Rank({})

rank_obj = Rank(data["players"][self.id])
self.deathmatch.setdefault(season, {})
self.deathmatch[season][region] = rank_obj if ((rank_obj.wins + rank_obj.losses) != 0) else None
return self.deathmatch[season][region]
self.deathmatch.setdefault(season_id, {})
self.deathmatch[season_id][region] = rank_obj
return self.deathmatch[season_id][region]

async def load_trends(self, block_duration: TrendBlockDuration = TrendBlockDuration.WEEKLY) -> Trends:
self.trends = Trends(await self._auth.get(self._url_builder.trends(block_duration)))
Expand Down
2 changes: 1 addition & 1 deletion siegeapi/ranks.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def __init__(self, data):
self.wins: int = data.get("wins", 0)
self.losses: int = data.get("losses", 0)
self.rank_id: int = data.get("rank", 0)
self.season: int = data.get("season", -1)
self.season: int = data.get("season", -10000)
_rank_definitions = _get_rank_constants(self.season)
self.rank: str = _rank_definitions[self.rank_id]["name"]
self.max_rank_id: int = data.get("max_rank", 0)
Expand Down

0 comments on commit 3fa7ff2

Please sign in to comment.