Добавлен проверка на лок переменной SHOTMAP

This commit is contained in:
Alexey Barabanov
2025-11-26 13:16:10 +03:00
parent 101a5a09d3
commit 9aa698dcfe

View File

@@ -687,11 +687,11 @@ def results_consumer():
"game over",
]
# 1) матч ЗАКОНЧЕН → запускаем ОТСРОЧЕННЫЙ переход
# 1) матч ЗАКОНЧЕН → запускаем ОТСРОЧЕННЫЙ переход
# ##TODO - Усложненый код? Нужен, если статус бывает сложнее, чем "result",
# а что-то в стиле "result 1:0", т.е. слова из finished_markers являются
# а что-то в стиле "result 1:0", т.е. слова из finished_markers являются
# состовной частью настоящего статуса
# В противном случае вполне рабочий вариант:
# В противном случае вполне рабочий вариант:
# if raw_ls_status_low in finished_markers:
if any(m in raw_ls_status_low for m in finished_markers):
now_ts = time.time()
@@ -3237,9 +3237,11 @@ def change_vmix_datasource_urls(xml_data, new_base_url: str) -> bytes:
root = ET.fromstring(text)
# 4. Меняем URL
for url_tag in root.findall(".//datasource[@friendlyName='JSON']//instance//state/xml/url"):
for url_tag in root.findall(
".//datasource[@friendlyName='JSON']//instance//state/xml/url"
):
old_url = url_tag.text.strip()
pattern = r'https?:\/\/[^\/]+'
pattern = r"https?:\/\/[^\/]+"
new_url = re.sub(pattern, new_base_url, old_url, count=0, flags=0)
url_tag.text = new_url
@@ -3633,11 +3635,12 @@ async def get_shotmap_image(player_id_shots: str):
Отдаёт картинку карты бросков из оперативной памяти.
player_id_shots должен совпадать с ключом в SHOTMAP_CACHE, например "23_shots".
"""
data = SHOTMAP_CACHE.get(player_id_shots)
if not data:
raise HTTPException(status_code=404, detail="Shotmap not found in memory")
async with SHOTMAPS_LOCK:
data = SHOTMAP_CACHE.get(player_id_shots)
if not data:
raise HTTPException(status_code=404, detail="Shotmap not found in memory")
return Response(content=data, media_type="image/png")
return Response(content=data, media_type="image/png")
@app.get("/last_5_games")
@@ -3916,7 +3919,8 @@ async def commentary():
plus_minus = p.get("plusMinus", "")
kpi = p.get("kpi", "")
rows.append(f"""
rows.append(
f"""
<tr>
<td>{num}</td>
<td class="player-name"
@@ -3939,7 +3943,8 @@ async def commentary():
<td class="extra-col">{plus_minus}</td>
<td class="extra-col">{kpi}</td>
</tr>
""")
"""
)
return f"""
<h3>{title}</h3>
@@ -4458,7 +4463,7 @@ async def dashboard():
# порядок вывода метрик в центральном столбце (как на твоём дашборде)
center_stats_order = [
"pt-1", # штрафные
"pt-1", # штрафные
"pt-1_pro",
"pt-2",
"pt-2_pro",