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()