From fd91eb5caa7b6a48a76100693c51246eef593fb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=AE=D1=80=D0=B8=D0=B9=20=D0=A7=D0=B5=D1=80=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=BA=D0=BE?= Date: Fri, 31 Oct 2025 17:16:41 +0300 Subject: [PATCH] =?UTF-8?q?live-status=20=D0=BF=D0=BE=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- get_data.py | 43 +++++++++++-------------------------------- 1 file changed, 11 insertions(+), 32 deletions(-) diff --git a/get_data.py b/get_data.py index dcff8c1..ffecf94 100644 --- a/get_data.py +++ b/get_data.py @@ -197,7 +197,12 @@ def results_consumer(): print("results_consumer: got partial game, keeping previous one") # и обязательно continue/return из этого elif/if - continue + else: + latest_data[source] = { + "ts": msg["ts"], + "data": payload, + } + continue # ... остальная обработка ... except Exception as e: @@ -376,7 +381,7 @@ async def lifespan(app: FastAPI): args=( "game", URLS["game"].format(host=HOST, game_id=game_id, lang=LANG), - 5, + 3, stop_event, ), daemon=True, @@ -386,7 +391,7 @@ async def lifespan(app: FastAPI): args=( "live-status", URLS["live-status"].format(host=HOST, game_id=game_id), - 5, + 3, stop_event, ), daemon=True, @@ -396,7 +401,7 @@ async def lifespan(app: FastAPI): args=( "box-score", URLS["box-score"].format(host=HOST, game_id=game_id), - 5, + 3, stop_event, ), daemon=True, @@ -406,7 +411,7 @@ async def lifespan(app: FastAPI): args=( "play-by-play", URLS["play-by-play"].format(host=HOST, game_id=game_id), - 5, + 3, stop_event, ), daemon=True, @@ -961,33 +966,7 @@ async def team(who: str): key=lambda x: role_priority.get(x.get("startRole", 99), 99), ) - - - - - - - # приклеим play-by-play, если он уже есть и если в game уже есть поле для него - pbp = latest_data.get("play-by-play") - if pbp and "data" in pbp and "result" in pbp["data"]: - # если ты хранишь плейи прямо в game["data"]["result"]["plays"], - # можно их взять оттуда, но безопаснее взять из latest_data["play-by-play"] - payload["plays"] = pbp["data"]["result"] - - # приклеим box-score-данные, если они отдельно лежат - box = latest_data.get("box-score") - if box: - box_data = box.get("data") - # у тебя box-score мы в consumer сохраняем как {"ts": ..., "data": ""} или целиком - # поэтому берём только если это полноценный ответ - if isinstance(box_data, dict) and "result" in box_data: - box_result = box_data["result"] - # тут можно добавить твою доп.логику, если она была в исходной функции - - # если у тебя в оригинальной версии функции team была генерация "career", "season", "coach" и т.п., - # их просто нужно вернуть сюда — главное, что доступ к game теперь безопасный - - return payload + return sorted_team async def started_team(data): started_team = sorted(