Files
hockey_new/broadcast_settings/README.md
2026-08-19 15:08:39 +03:00

2.7 KiB
Raw Blame History

broadcast_settings

Отдельная переносимая библиотека для проектов ТВ-графики/vMix.

Она отвечает за:

  • загрузку и сохранение settings/settings.json;
  • загрузку и сохранение settings/vmix_json.json;
  • загрузку справочника функций settings/vmix_functions.json;
  • сохранение выбранного соревнования/раунда или другой активной сущности;
  • backup настроек перед импортом;
  • универсальный импорт настроек из .json/.zip другого проекта;
  • миграцию старого формата лёгкой атлетики vmixColumns, vmixTransforms, vmixRows;
  • поиск и выдачу нужного vMix JSON-пресета.

Подключение в другом проекте

Скопируй папку broadcast_settings в корень проекта.

from pathlib import Path
from broadcast_settings import settings as settings_lib

PROJECT_DIR = Path(__file__).resolve().parent.parent
APP_DIR = Path(__file__).resolve().parent

settings_lib.configure(
    project_dir=PROJECT_DIR,
    app_dir=APP_DIR,
)

settings = settings_lib.read_settings()
vmix_json = settings_lib.read_vmix_json()
functions = settings_lib.read_vmix_functions()

Можно передать свои дефолтные настройки:

settings_lib.configure(
    project_dir=PROJECT_DIR,
    app_dir=APP_DIR,
    default_settings=MY_DEFAULT_SETTINGS,
    default_vmix_json=MY_DEFAULT_VMIX_JSON,
    default_vmix_functions=MY_DEFAULT_VMIX_FUNCTIONS,
)

Главные функции

read_settings()
write_settings(data)
read_vmix_json()
write_vmix_json(data)
read_vmix_functions()
write_vmix_functions(data)
read_selection()
write_selection(selection)
get_vmix_config(key)
settings_meta()
make_settings_backup(reason)
preview_settings_import(data, file_name)
apply_settings_import(preview, ...)

В golf-проекте файл app/settings_manager.py теперь является только тонким адаптером, а вся логика находится здесь.

Portable joins / merge sources

The reusable file broadcast_settings/joins.py provides a generic JSON join engine:

from broadcast_settings.joins import apply_join_rules

rows = apply_join_rules(base_rows, joins_config, source_resolver)

A project only needs to provide source_resolver(join), which returns JSON/list rows for the requested source. The join config itself is portable and can be stored inside each vMix JSON config under the joins key.