last changes (#1334)
This commit is contained in:
+30
-23
@@ -53,10 +53,11 @@ def build_event_log(game: dict[str, Any]) -> dict[str, Any]:
|
||||
"""Return the raw event slices the website needs for per-unit state."""
|
||||
events = _decompress_events(game.get("events", {}))
|
||||
if not isinstance(events, dict):
|
||||
return {"kills": [], "damage": []}
|
||||
return {"kills": [], "damage": [], "chat": list(game.get("chat") or [])}
|
||||
return {
|
||||
"kills": list(events.get("kills") or []),
|
||||
"damage": list(events.get("damage") or []),
|
||||
"chat": list(game.get("chat") or []),
|
||||
}
|
||||
|
||||
|
||||
@@ -70,17 +71,23 @@ def _strip_tag(tag: str) -> str:
|
||||
def build_match_logs(game: dict[str, Any]) -> tuple[list[str], list[str]]:
|
||||
"""Return (chat_log, battle_log) as pre-formatted string lists."""
|
||||
players = game.get("players", {}) or {}
|
||||
winner_winged = str(game.get("winner") or "")
|
||||
loser_winged = str(game.get("loser") or "")
|
||||
winner_sq = _strip_tag(winner_winged)
|
||||
loser_sq = _strip_tag(loser_winged)
|
||||
tss = game.get("tss") or {}
|
||||
winner_slot = str(game.get("winner") or "")
|
||||
loser_slot = str(game.get("loser") or "")
|
||||
|
||||
def _team_name(slot: str) -> str:
|
||||
raw = tss.get(slot)
|
||||
if isinstance(raw, dict) and raw.get("name"):
|
||||
return str(raw["name"])
|
||||
return f"Team {slot}" if slot else ""
|
||||
|
||||
uid_lookup: dict[str, dict[str, str]] = {}
|
||||
for uid_str, p in players.items():
|
||||
tag = p.get("tag", "") or ""
|
||||
slot = str(p.get("team") or "")
|
||||
uid_lookup[str(uid_str)] = {
|
||||
"name": p.get("name", "") or "",
|
||||
"tag_stripped": tag[1:-1] if tag else "",
|
||||
"team_slot": slot,
|
||||
"team_name": _team_name(slot),
|
||||
}
|
||||
|
||||
translate = None
|
||||
@@ -99,29 +106,29 @@ def build_match_logs(game: dict[str, Any]) -> tuple[list[str], list[str]]:
|
||||
return apply_vehicle_name_filters(t)
|
||||
return cdk
|
||||
|
||||
def _player(uid: str | None) -> tuple[str, str]:
|
||||
def _player(uid: str | None) -> tuple[str, str, str]:
|
||||
if uid is None:
|
||||
return "Unknown", ""
|
||||
return "Unknown", "", ""
|
||||
info = uid_lookup.get(str(uid))
|
||||
if info:
|
||||
return info["name"], info["tag_stripped"]
|
||||
return f"Player#{uid}", ""
|
||||
return info["name"], info["team_name"], info["team_slot"]
|
||||
return f"Player#{uid}", "", ""
|
||||
|
||||
def _prefix(sq: str) -> str:
|
||||
if sq == winner_sq:
|
||||
def _prefix(slot: str) -> str:
|
||||
if slot == winner_slot:
|
||||
return "+"
|
||||
if sq == loser_sq:
|
||||
if slot == loser_slot:
|
||||
return "-"
|
||||
return " "
|
||||
|
||||
chat_log: list[str] = []
|
||||
for c in game.get("chat", []) or []:
|
||||
info = uid_lookup.get(
|
||||
str(c.get("uid", "")), {"name": "Unknown", "tag_stripped": "???"}
|
||||
str(c.get("uid", "")), {"name": "Unknown", "team_name": "??", "team_slot": ""}
|
||||
)
|
||||
chat_log.append(
|
||||
f"[{_fmt_time(c.get('time', 0))}] [{c.get('type', 'ALL')}] "
|
||||
f"[{info['tag_stripped']}] `{info['name']}`: {c.get('message', '')}"
|
||||
f"{_prefix(info['team_slot'])}[{_fmt_time(c.get('time', 0))}] [{c.get('type', 'ALL')}] "
|
||||
f"[{info['team_name']}] `{info['name']}`: {c.get('message', '')}"
|
||||
)
|
||||
|
||||
events = _decompress_events(game.get("events", {}))
|
||||
@@ -149,27 +156,27 @@ def build_match_logs(game: dict[str, Any]) -> tuple[list[str], list[str]]:
|
||||
battle_log: list[str] = []
|
||||
for ev in merged:
|
||||
ts = _fmt_time(ev["time"])
|
||||
vic_name, vic_sq = _player(ev["vic_uid"])
|
||||
vic_name, vic_team, vic_slot = _player(ev["vic_uid"])
|
||||
vic_veh = _veh(ev["vic_unit"])
|
||||
if ev["kind"] == "kill":
|
||||
if ev["off_uid"] is None or ev["crashed"]:
|
||||
battle_log.append(
|
||||
f"{_prefix(vic_sq)}[{ts}] {f'[{vic_sq}]':<7} "
|
||||
f"{_prefix(vic_slot)}[{ts}] {f'[{vic_team}]':<14} "
|
||||
f"{vic_name} ({vic_veh}) crashed"
|
||||
)
|
||||
else:
|
||||
name, sq = _player(ev["off_uid"])
|
||||
name, team, slot = _player(ev["off_uid"])
|
||||
battle_log.append(
|
||||
f"{_prefix(sq)}[{ts}] {f'[{sq}]':<7} {name} ({_veh(ev['off_unit'])}) "
|
||||
f"{_prefix(slot)}[{ts}] {f'[{team}]':<14} {name} ({_veh(ev['off_unit'])}) "
|
||||
f"destroyed {vic_name} ({vic_veh})"
|
||||
)
|
||||
else:
|
||||
if ev["off_uid"] is None:
|
||||
continue
|
||||
name, sq = _player(ev["off_uid"])
|
||||
name, team, slot = _player(ev["off_uid"])
|
||||
afire = "(FIRE) " if ev["afire"] else ""
|
||||
battle_log.append(
|
||||
f"{_prefix(sq)}[{ts}] {f'[{sq}]':<7} {name} ({_veh(ev['off_unit'])}) "
|
||||
f"{_prefix(slot)}[{ts}] {f'[{team}]':<14} {name} ({_veh(ev['off_unit'])}) "
|
||||
f"damaged {afire}{vic_name} ({vic_veh})"
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user