From 2c2d9b9a7c2c5f6be2c4f9a220eef44d3862387b 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: Tue, 4 Aug 2026 10:20:54 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0=D1=87?= =?UTF-8?q?=D0=B0=20=D1=81=D0=B8=D0=BD=D0=B8=D1=85=20=D0=BB=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=D1=82=D0=B8=D0=BF=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=97=D0=B5=D0=BD=D0=B8=D1=82/=D0=94=D0=B8=D0=BD=D0=B0=D0=BC?= =?UTF-8?q?=D0=BE=20=D0=B8=20=D0=BB=D0=BE=D0=B3=D0=BE=D1=82=D0=B8=D0=BF?= =?UTF-8?q?=D1=8B=20=D0=BA=D0=B0=D0=BD=D0=B0=D0=BB=D0=BE=D0=B2=20=D0=BD?= =?UTF-8?q?=D0=B5=20=D0=B4=D0=BE=D0=BB=D0=B6=D0=BD=D1=8B=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B0=D1=82=D1=8C=D1=81=D1=8F,?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=B3=D0=B4=D0=B0=20=D1=83=20=D0=BC=D0=B0=D1=82?= =?UTF-8?q?=D1=87=D0=B0=20=D1=83=D0=B6=D0=B5=20=D0=B5=D1=81=D1=82=D1=8C=20?= =?UTF-8?q?=D1=81=D1=87=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 16 ++++++++++++---- parsers/parser_sources.py | 19 +++++++++++++++++++ repositories/match_session_repository.py | 10 +++++++--- 3 files changed, 38 insertions(+), 7 deletions(-) diff --git a/app.py b/app.py index 44ececf..8c64919 100644 --- a/app.py +++ b/app.py @@ -35,7 +35,13 @@ from parsers.parser_players import run_parser_players from parsers.parser_schedule import run_parser_schedule from parsers.parser_standings import run_parser_standings from parsers.parser_teams import run_parser_teams -from parsers.parser_sources import build_empty_photo_path, build_channel_logo_path, build_empty_channel_logo_path, list_parser_sources, get_default_source_key, get_parser_source +from parsers.parser_sources import ( + build_empty_photo_path, + build_schedule_channel_logo_path, + list_parser_sources, + get_default_source_key, + get_parser_source, +) from services.project_settings_service import build_project_settings_context, save_project_settings from repositories.project_settings_repository import ensure_project_settings_tables @@ -1850,9 +1856,11 @@ def vmix_schedule(session_token: str): "#FFFFFF00" if row[2] is None and row[3] is None else "#FFFFFF" ), "channel": ( - build_channel_logo_path(row[8] if len(row) > 8 else None, row[7]) - if str(row[7] or "").strip() - else build_empty_channel_logo_path(row[8] if len(row) > 8 else None) + build_schedule_channel_logo_path( + row[8] if len(row) > 8 else None, + row[7], + has_score=(row[2] is not None or row[3] is not None), + ) ), "channel_value": row[7] or "", "source_key": row[8] if len(row) > 8 else "", diff --git a/parsers/parser_sources.py b/parsers/parser_sources.py index ec03c59..71a8c12 100644 --- a/parsers/parser_sources.py +++ b/parsers/parser_sources.py @@ -270,3 +270,22 @@ def build_channel_logo_path(source_key: str | None, filename: str | None) -> str def build_empty_channel_logo_path(source_key: str | None = None) -> str: return build_channel_logo_path(source_key, "EMPTY.png") + + +def build_schedule_channel_logo_path( + source_key: str | None, + channel: str | None, + has_score: bool, +) -> str: + """Возвращает логотип канала для расписания vMix. + + После появления счёта логотип канала должен быть скрыт, даже если канал + остался отмечен в расписании. + """ + if has_score: + return build_empty_channel_logo_path(source_key) + + if str(channel or "").strip(): + return build_channel_logo_path(source_key, channel) + + return build_empty_channel_logo_path(source_key) diff --git a/repositories/match_session_repository.py b/repositories/match_session_repository.py index f12c6ae..6d2d45d 100644 --- a/repositories/match_session_repository.py +++ b/repositories/match_session_repository.py @@ -1,7 +1,7 @@ import secrets from db import get_connection -from parsers.parser_sources import build_logo_path +from parsers.parser_sources import build_logo_variant_path from repositories.match_repository import resolve_match_source_key @@ -92,8 +92,12 @@ def get_match_session_by_token(session_token: str): source_key = resolve_match_source_key(row[1], row[21] if len(row) > 21 else None) if len(row) > 21: row[21] = source_key - row[16] = build_logo_path(source_key, row[16]) - row[20] = build_logo_path(source_key, row[20]) + # Эти пути используются рабочей страницей при отправке команд + # SetImage через agent.exe для нейтральных титров. Для «Динамо» и + # «Зенита» в титрах нужен синий вариант логотипа; остальные команды + # остаются без изменений. + row[16] = build_logo_variant_path(source_key, row[16], "blue") + row[20] = build_logo_variant_path(source_key, row[20], "blue") return tuple(row) finally: conn.close()