diff --git a/README.md b/README.md index 0e21792..7db454e 100644 --- a/README.md +++ b/README.md @@ -92,15 +92,15 @@ RUST_LOG=debug cargo run ### Переменные окружения -| Переменная | Обязательна | Описание | -|------------|-------------|----------| -| `NAS_FQDN` | Да | URL NAS Synology с протоколом и портом | -| `NAS_USER` | Да | Имя пользователя учетной записи Synology | -| `NAS_PASS` | Да | Пароль учетной записи Synology | -| `NAS_FILE` | Да | Полный путь к файлу .osheet на NAS | -| `NEXRENDER_API_URL` | Да | Конечная точка API сервера Nexrender | -| `OUTPUT_FOLDER` | Да | Сетевой путь для рендеренных видео | -| `RUST_LOG` | Нет | Уровень детализации логирования (по умолчанию: info) | +| Переменная | Обязательна | Описание | +|---------------------|-------------|------------------------------------------------------| +| `NAS_FQDN` | Да | URL NAS Synology с протоколом и портом | +| `NAS_USER` | Да | Имя пользователя учетной записи Synology | +| `NAS_PASS` | Да | Пароль учетной записи Synology | +| `NAS_FILE` | Да | Полный путь к файлу .osheet на NAS | +| `NEXRENDER_API_URL` | Да | Конечная точка API сервера Nexrender | +| `OUTPUT_FOLDER` | Да | Сетевой путь для рендеренных видео | +| `RUST_LOG` | Нет | Уровень детализации логирования (по умолчанию: info) | ## Структура электронной таблицы @@ -110,11 +110,11 @@ RUST_LOG=debug cargo run Связывает названия видов спорта с соответствующими видео пакетами. -| SPORT | LINK | -|-------|------| -| Без оформления | \\server\share\path\to\null.mov | -| Футбол | \\server\share\path\to\football_pack.mov | -| Волейбол | \\server\share\path\to\volleyball_pack.mov | +| SPORT | LINK | +|----------------|---------------------------------------------| +| Без оформления | \\server\share\path\to\null.mov | +| Футбол | \\server\share\path\to\football_pack.mov | +| Волейбол | \\server\share\path\to\volleyball_pack.mov | ### Лист "TEAMS" @@ -122,20 +122,20 @@ RUST_LOG=debug cargo run Если несколько команд в одном виде спорта имеют одинаковые названия, но разные логотипы, используется разделитель хеш # для уникальной идентификации. -| TEAM | SPORT | LINK | -|------|-------|------| -| Галатасарай#Turki | Футбол | \\server\share\path\to\galatasaray_football.png | -| Галатасарай | Волейбол | \\server\share\path\to\galatasaray_volleyball.png | -| Галатасарай#UCL | Волейбол | \\server\share\path\to\galatasaray_ucl.png | -| Сомбатей##400 | Футбол | \\server\share\path\to\szombathely.png | +| TEAM | SPORT | LINK | +|-------------------|-----------|---------------------------------------------------| +| Галатасарай#Turki | Футбол | \\server\share\path\to\galatasaray_football.png | +| Галатасарай | Волейбол | \\server\share\path\to\galatasaray_volleyball.png | +| Галатасарай#UCL | Волейбол | \\server\share\path\to\galatasaray_ucl.png | +| Сомбатей##400 | Футбол | \\server\share\path\to\szombathely.png | ### Лист "CHANELL" Сопоставляет названия каналов с их логотипами. Поля заполняются вручную без выпадающих списков. -| CHANEL | LINK | -|--------|------| -| КАНАЛ | \\server\share\path\to\channel_logo.png | +| CHANEL | LINK | +|---------|-----------------------------------------| +| КАНАЛ | \\server\share\path\to\channel_logo.png | | TRIUMPH | \\server\share\path\to\triumph_logo.png | ### Лист "Start" @@ -146,10 +146,10 @@ RUST_LOG=debug cargo run **Примечание**: Колонка LEAGUE обязательна для заполнения, но не имеет выпадающего списка. Проверка орфографии и опечаток отсутствует! -| STATE | TRIPPLE | DATA | TIME | SPORT | LEAGUE | CHANEL | TEAM A | TEAM B | -|-------|---------|------|------|-------|--------|--------|--------|--------| -| TRUE | TRUE | 27.2.2026 | 23:40 | Футбол | Чемпионат Португалии | START | Спортинг#ll#550 | Эшторил#ll#550 | -| FALSE | TRUE | 28.2.2026 | 12:55 | Волейбол | Чемпионат Турции. Женщины | TRIUMPH | Бешикташ | Галатасарай#Turki | +| STATE | TRIPPLE | DATA | TIME | SPORT | LEAGUE | CHANEL | TEAM A | TEAM B | +|--------|---------|-----------|-------|----------|---------------------------|---------|-----------------|-------------------| +| TRUE | TRUE | 27.2.2026 | 23:40 | Футбол | Чемпионат Португалии | START | Спортинг#ll#550 | Эшторил#ll#550 | +| FALSE | TRUE | 28.2.2026 | 12:55 | Волейбол | Чемпионат Турции. Женщины | TRIUMPH | Бешикташ | Галатасарай#Turki | ### Формат имен команд @@ -186,7 +186,7 @@ RUST_LOG=debug cargo run Рендерные видео сохраняются в `OUTPUT_FOLDER` по следующему шаблону именования: -``` +```shell YYYYMMDD_Sport_League_TeamA_TeamB_Channel[_Variant].mp4 ``` @@ -214,24 +214,24 @@ YYYYMMDD_Sport_League_TeamA_TeamB_Channel[_Variant].mp4 ### Типы шаблонов -| Файл шаблона | Назначение | -|--------------|------------| +| Файл шаблона | Назначение | +|------------------------|---------------------------------| | `PackShot_DOUBLE.aepx` | Сопоставление с двумя командами | -| `PackShot_SINGLE.aepx` | Анонсы для одной команды | +| `PackShot_SINGLE.aepx` | Анонсы для одной команды | ### Обязательные слои -| Имя слоя | Тип | Описание | -|----------|-----|----------| -| DATA | Text | Отображение даты (автоматически подстраивается) | -| TIME / TIME_H / TIME_M | Text | Отображение времени | -| LEAGUE | Text | Название лиги | -| SPORT | Text | Категория спорта | -| TEAMS | Text | Скомбинированные имена команд | -| TEAM_A_LOGO | Image | Логотип домашней команды | -| TEAM_B_LOGO | Image | Логотип гостевой команды | -| CHANEL | Image | Логотип канала | -| TOP | Video | Наложение видео оформления | +| Имя слоя | Тип | Описание | +|------------------------|-------|-------------------------------------------------| +| DATA | Text | Отображение даты (автоматически подстраивается) | +| TIME / TIME_H / TIME_M | Text | Отображение времени | +| LEAGUE | Text | Название лиги | +| SPORT | Text | Категория спорта | +| TEAMS | Text | Скомбинированные имена команд | +| TEAM_A_LOGO | Image | Логотип домашней команды | +| TEAM_B_LOGO | Image | Логотип гостевой команды | +| CHANEL | Image | Логотип канала | +| TOP | Video | Наложение видео оформления | ### Настройки композиции @@ -244,19 +244,19 @@ YYYYMMDD_Sport_League_TeamA_TeamB_Channel[_Variant].mp4 ### Частые проблемы -**Ошибка подключения к NAS** +#### Ошибка подключения к NAS - Проверьте, что `NAS_FQDN` включает протокол и порт (например, `https://nas.example.com:5001`) - Проверьте сетевую связность с NAS - Убедитесь, что сервисы File Station и Office включены -**Файл не найден** +#### Файл не найден** - Убедитесь, что путь в `NAS_FILE` точно соответствует пути в Synology Drive - Путь должен начинаться с `/Team Folder/` для рабочих папок - Проверьте права доступа к файлу для учетной записи сервиса -**Ошибка отправки задания Nexrender** +#### Ошибка отправки задания Nexrender - Подтвердите доступность сервера Nexrender - Убедитесь, что `NEXRENDER_API_URL` правильный @@ -295,7 +295,7 @@ RUST_LOG=debug ./target/release/ae_anons ### Структура кода -``` +```shell src/ ├── main.rs # Точка входа и оркестрация приложения ├── config.rs # Управление конфигурацией @@ -312,17 +312,17 @@ src/ ## Зависимости -| Crate | Версия | Назначение | -|-------|--------|------------| -| reqwest | 0.12 | HTTP клиент для коммуникации API | -| serde / serde_json | 1.0 | Сериализация JSON | -| calamine | 0.26 | Парсинг файлов Excel | -| chrono | 0.4 | Обработка дат и времени | -| tokio | 1.0 | Асинхронная среда выполнения | -| dotenv | 0.15 | Конфигурация через переменные окружения | -| log / env_logger | 0.11 | Инфраструктура логирования | -| thiserror | 2.0 | Определение типов ошибок | -| anyhow | 1.0 | Обработка ошибок | +| Crate | Версия | Назначение | +|--------------------|--------|-----------------------------------------| +| reqwest | 0.12 | HTTP клиент для коммуникации API | +| serde / serde_json | 1.0 | Сериализация JSON | +| calamine | 0.26 | Парсинг файлов Excel | +| chrono | 0.4 | Обработка дат и времени | +| tokio | 1.0 | Асинхронная среда выполнения | +| dotenv | 0.15 | Конфигурация через переменные окружения | +| log / env_logger | 0.11 | Инфраструктура логирования | +| thiserror | 2.0 | Определение типов ошибок | +| anyhow | 1.0 | Обработка ошибок | ## Лицензия