Compare commits
2 Commits
87442bdfdd
...
d3f4bd1c8d
| Author | SHA1 | Date | |
|---|---|---|---|
| d3f4bd1c8d | |||
| c8effe0307 |
18
app.py
18
app.py
@@ -646,22 +646,28 @@ def load_match_data(request: Request, session_token: str):
|
|||||||
match_external_id = session_row[8]
|
match_external_id = session_row[8]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
run_parser_game(str(match_external_id))
|
|
||||||
|
|
||||||
# сброс ручного состава и тренеров, чтобы подтянулись свежие данные парсера
|
|
||||||
from db import get_connection
|
from db import get_connection
|
||||||
|
|
||||||
|
# Сначала очищаем ручные данные матча,
|
||||||
|
# чтобы парсер потом записал свежие составы и тренеров
|
||||||
conn = get_connection()
|
conn = get_connection()
|
||||||
try:
|
try:
|
||||||
with conn.cursor() as cur:
|
with conn.cursor() as cur:
|
||||||
cur.execute(
|
cur.execute(
|
||||||
"DELETE FROM match_lineup_players WHERE match_id = %s", (match_id,)
|
"DELETE FROM match_lineup_players WHERE match_id = %s",
|
||||||
|
(match_id,),
|
||||||
|
)
|
||||||
|
cur.execute(
|
||||||
|
"DELETE FROM match_coaches WHERE match_id = %s",
|
||||||
|
(match_id,),
|
||||||
)
|
)
|
||||||
cur.execute("DELETE FROM match_coaches WHERE match_id = %s", (match_id,))
|
|
||||||
conn.commit()
|
conn.commit()
|
||||||
finally:
|
finally:
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
# Потом загружаем свежие данные с сайта
|
||||||
|
run_parser_game(str(match_external_id))
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_text = str(e) or "Ошибка загрузки данных с сайта"
|
error_text = str(e) or "Ошибка загрузки данных с сайта"
|
||||||
|
|
||||||
@@ -692,7 +698,7 @@ def load_match_data(request: Request, session_token: str):
|
|||||||
return RedirectResponse(
|
return RedirectResponse(
|
||||||
url=f"/admin/session/{session_token}?tab=game",
|
url=f"/admin/session/{session_token}?tab=game",
|
||||||
status_code=303,
|
status_code=303,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@app.post("/admin/session/{session_token}/close")
|
@app.post("/admin/session/{session_token}/close")
|
||||||
|
|||||||
@@ -143,16 +143,21 @@
|
|||||||
href="/admin/session/{{ session[3] }}?tab=referees"
|
href="/admin/session/{{ session[3] }}?tab=referees"
|
||||||
>Судьи</a
|
>Судьи</a
|
||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
class="tab-link {% if tab == 'tour_schedule' %}active{% endif %}"
|
class="tab-link {% if tab == 'tour_schedule' %}active{% endif %}"
|
||||||
href="/admin/session/{{ session[3] }}?tab=tour_schedule"
|
href="/admin/session/{{ session[3] }}?tab=tour_schedule"
|
||||||
>Расписание тура</a
|
data-vmix-title="РАСПИСАНИЕ ТУРА"
|
||||||
>
|
>
|
||||||
<a
|
Расписание тура
|
||||||
class="tab-link {% if tab == 'standings' %}active{% endif %}"
|
</a>
|
||||||
href="/admin/session/{{ session[3] }}?tab=standings"
|
|
||||||
>Турнирная таблица</a
|
<a
|
||||||
>
|
class="tab-link {% if tab == 'standings' %}active{% endif %}"
|
||||||
|
href="/admin/session/{{ session[3] }}?tab=standings"
|
||||||
|
data-vmix-title="ТУРНИРНАЯ ТАБЛИЦА"
|
||||||
|
>
|
||||||
|
Турнирная таблица
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if tab == 'game' %}
|
{% if tab == 'game' %}
|
||||||
@@ -1173,6 +1178,53 @@
|
|||||||
}, 15000);
|
}, 15000);
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
const matchId = window.MATCH_DATA?.matchId;
|
||||||
|
const sessionToken = window.MATCH_DATA?.sessionToken;
|
||||||
|
|
||||||
|
if (!matchId || !sessionToken) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function sendVmixTitle(titleText) {
|
||||||
|
if (!titleText) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
await fetch("/api/vmix/publish-command", {
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"Accept": "application/json",
|
||||||
|
"X-Requested-With": "XMLHttpRequest"
|
||||||
|
},
|
||||||
|
credentials: "same-origin",
|
||||||
|
body: JSON.stringify({
|
||||||
|
match_id: matchId,
|
||||||
|
session_token: sessionToken,
|
||||||
|
commands: [
|
||||||
|
`TITLE_PREVIEW:${titleText}`
|
||||||
|
],
|
||||||
|
meta: {
|
||||||
|
source: "tab_click",
|
||||||
|
title: titleText
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Не удалось отправить команду в vMix:", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener("click", function (event) {
|
||||||
|
const link = event.target.closest(".tab-link[data-vmix-title]");
|
||||||
|
if (!link) return;
|
||||||
|
|
||||||
|
const titleText = link.dataset.vmixTitle;
|
||||||
|
sendVmixTitle(titleText);
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
<script src="/static/script.js"></script>
|
<script src="/static/script.js"></script>
|
||||||
<div id="matrixLoader" class="matrix-loader" aria-hidden="true">
|
<div id="matrixLoader" class="matrix-loader" aria-hidden="true">
|
||||||
<canvas id="matrixCanvas" class="matrix-canvas"></canvas>
|
<canvas id="matrixCanvas" class="matrix-canvas"></canvas>
|
||||||
|
|||||||
Reference in New Issue
Block a user