live-status поправил

This commit is contained in:
2025-10-31 17:16:41 +03:00
parent ee0a4b9f98
commit fd91eb5caa

View File

@@ -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": "<status>"} или целиком
# поэтому берём только если это полноценный ответ
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(