исправлено передача синих логотипов для Зенит/Динамо и логотипы каналов не должны отображаться, когда у матча уже есть счет

This commit is contained in:
2026-08-04 10:20:54 +03:00
parent e17c287d65
commit 2c2d9b9a7c
3 changed files with 38 additions and 7 deletions

16
app.py
View File

@@ -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 "",

View File

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

View File

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