Files
2026-08-19 15:08:39 +03:00

81 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# broadcast_settings
Отдельная переносимая библиотека для проектов ТВ-графики/vMix.
Она отвечает за:
- загрузку и сохранение `settings/settings.json`;
- загрузку и сохранение `settings/vmix_json.json`;
- загрузку справочника функций `settings/vmix_functions.json`;
- сохранение выбранного соревнования/раунда или другой активной сущности;
- backup настроек перед импортом;
- универсальный импорт настроек из `.json`/`.zip` другого проекта;
- миграцию старого формата лёгкой атлетики `vmixColumns`, `vmixTransforms`, `vmixRows`;
- поиск и выдачу нужного vMix JSON-пресета.
## Подключение в другом проекте
Скопируй папку `broadcast_settings` в корень проекта.
```python
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()
```
Можно передать свои дефолтные настройки:
```python
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,
)
```
## Главные функции
```python
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:
```python
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.