diff --git a/get_data_new.py b/get_data_new.py index 1baa00a..3ecb591 100644 --- a/get_data_new.py +++ b/get_data_new.py @@ -526,8 +526,7 @@ def poll_game_live( if ep_name == "live-status": if isinstance(data, dict): st = ( - data.get("status") - or data.get("gameStatus") + data.get("result").get("gameStatus") or "" ).lower() if st in ("resultconfirmed", "finished", "result"): @@ -694,6 +693,7 @@ def run_live_loop( ) standings_thread.start() logger.info("[LIVE_THREAD] standings thread spawned") + try: poll_game_live( @@ -715,6 +715,66 @@ def run_live_loop( standings_thread.join() logger.info(f"[LIVE_THREAD] stop live loop for game_id={game_id}") + +def Referee(merged: dict, *, out_dir: str = "static") -> None: + """ + Поток, создающий JSON-файл с информацией о судьях матча. + """ + logger.info("START making json for referee") + + desired_order = [ + "Crew chief", + "Referee 1", + "Referee 2", + "Commissioner", + "Ст.судья", + "Судья 1", + "Судья 2", + "Комиссар", + ] + + try: + # Найти судей (teamNumber == 0) + team_ref = next( + (t for t in merged["result"]["teams"] if t["teamNumber"] == 0), None + ) + if not team_ref: + logger.warning("Не найдена судейская бригада в данных.") + + referees_raw = team_ref.get("starts", []) + # print(referees_raw) + referees = [] + + for r in referees_raw: + flag_code = r.get("countryId", "").lower() if r.get("countryName") else "" + referees.append( + { + "displayNumber": r.get("displayNumber", ""), + "positionName": r.get("positionName", ""), + "lastNameGFX": f"{r.get('firstName', '')} {r.get('lastName', '')}".strip(), + "secondName": r.get("secondName", ""), + "birthday": r.get("birthday", ""), + "age": r.get("age", 0), + "flag": f"https://flagicons.lipis.dev/flags/4x3/{flag_code}.svg", + } + ) + + # Сортировка по позиции + referees = sorted( + referees, + key=lambda x: ( + desired_order.index(x["positionName"]) + if x["positionName"] in desired_order + else len(desired_order) + ), + ) + out_path = "referee.json" + atomic_write_json(referees, out_path) + logging.info("Сохранил payload: {out_path}") + + except Exception as e: + logger.error(f"Ошибка в Referee потоке: {e}", exc_info=True) + # ============================================================================ # 7. Постобработка статистики для вывода