forked from spacebar/SplatNet-Backend
feat: add splatfest info in /boss route
This commit is contained in:
parent
d81d7d7293
commit
f7efea8729
1 changed files with 46 additions and 10 deletions
|
|
@ -37,6 +37,16 @@ RULE_NAMES = {
|
||||||
@cache(expire=3660)
|
@cache(expire=3660)
|
||||||
async def boss_rotation(request: Request):
|
async def boss_rotation(request: Request):
|
||||||
try:
|
try:
|
||||||
|
def format_stages(stage_list):
|
||||||
|
formatted = []
|
||||||
|
for s in stage_list:
|
||||||
|
mid = s.get("MapID")
|
||||||
|
formatted.append({
|
||||||
|
"mapID": mid,
|
||||||
|
"translatedNames": MAP_DATA.get(mid, {"en-US": "Unknown Stage"})
|
||||||
|
})
|
||||||
|
return formatted
|
||||||
|
|
||||||
with open("boss.yaml", "r") as f:
|
with open("boss.yaml", "r") as f:
|
||||||
yaml_data = yaml.safe_load(f)
|
yaml_data = yaml.safe_load(f)
|
||||||
|
|
||||||
|
|
@ -50,16 +60,6 @@ async def boss_rotation(request: Request):
|
||||||
for phase in yaml_data.get("Phases", []):
|
for phase in yaml_data.get("Phases", []):
|
||||||
ts_ms = str(int(current_rotation_start.timestamp() * 1000))
|
ts_ms = str(int(current_rotation_start.timestamp() * 1000))
|
||||||
|
|
||||||
def format_stages(stage_list):
|
|
||||||
formatted = []
|
|
||||||
for s in stage_list:
|
|
||||||
mid = s.get("MapID")
|
|
||||||
formatted.append({
|
|
||||||
"mapID": mid,
|
|
||||||
"translatedNames": MAP_DATA.get(mid, {"en-US": "Unknown Stage"})
|
|
||||||
})
|
|
||||||
return formatted
|
|
||||||
|
|
||||||
duration = phase.get("Time", 4)
|
duration = phase.get("Time", 4)
|
||||||
rotations[ts_ms] = {
|
rotations[ts_ms] = {
|
||||||
"startTime": current_rotation_start.isoformat(),
|
"startTime": current_rotation_start.isoformat(),
|
||||||
|
|
@ -79,6 +79,42 @@ async def boss_rotation(request: Request):
|
||||||
"rotations": rotations
|
"rotations": rotations
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open("fes_boss.yaml", "r") as f:
|
||||||
|
fes_yaml = yaml.safe_load(f)
|
||||||
|
|
||||||
|
if fes_yaml:
|
||||||
|
time_cfg = fes_yaml.get("Time", {})
|
||||||
|
|
||||||
|
def parse_iso(iso_str):
|
||||||
|
if not iso_str: return None
|
||||||
|
return int(datetime.fromisoformat(iso_str.replace('Z', '+00:00')).timestamp())
|
||||||
|
|
||||||
|
fest_start = parse_iso(time_cfg.get("Start"))
|
||||||
|
fest_end = parse_iso(time_cfg.get("End"))
|
||||||
|
fest_announce = parse_iso(time_cfg.get("Announce"))
|
||||||
|
fest_result = parse_iso(time_cfg.get("Result"))
|
||||||
|
|
||||||
|
teams = fes_yaml.get("Teams", [])
|
||||||
|
team_shortnames = []
|
||||||
|
for team in teams:
|
||||||
|
team_shortnames.append(team.get("ShortName", {}))
|
||||||
|
|
||||||
|
response_data["splatfestivalSplatfest"] = {
|
||||||
|
"stages": format_stages(fes_yaml.get("Stages", [])),
|
||||||
|
"mode": RULE_NAMES.get(fes_yaml.get("Rule"), "TurfWar"),
|
||||||
|
"teams": team_shortnames,
|
||||||
|
"time": {
|
||||||
|
"start": fest_start,
|
||||||
|
"end": fest_end,
|
||||||
|
"annoucement": fest_announce,
|
||||||
|
"results": fest_result
|
||||||
|
},
|
||||||
|
"festivalID": fes_yaml.get("FestivalId", 0)
|
||||||
|
}
|
||||||
|
except FileNotFoundError:
|
||||||
|
pass
|
||||||
|
|
||||||
return response_data
|
return response_data
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue