апдейт 4

This commit is contained in:
2026-07-29 11:03:12 +03:00
parent 8e38505f69
commit 77adc31a1a
2 changed files with 48 additions and 6 deletions

BIN
vmix.zip Normal file

Binary file not shown.

View File

@@ -4,16 +4,40 @@ import xml.etree.ElementTree as ET
import io import io
import platform import platform
import os import os
from pathlib import Path
from urllib.parse import urlparse from urllib.parse import urlparse
from dotenv import load_dotenv from dotenv import load_dotenv
load_dotenv(override=True) PROJECT_ROOT = Path(__file__).resolve().parent.parent
def get_env_path() -> Path:
"""Возвращает тот же .env, который использует systemd на сервере.
На production deploy.sh подключает /mnt/wfl/.env через EnvironmentFile.
Для локальной разработки остаётся <project>/.env. Путь можно явно
переопределить переменной WFL_ENV_FILE.
"""
configured = str(os.getenv("WFL_ENV_FILE") or "").strip()
if configured:
return Path(configured)
production_env = Path("/mnt/wfl/.env")
if production_env.exists():
return production_env
return PROJECT_ROOT / ".env"
def _refresh_env() -> None: def _refresh_env() -> None:
# Читаем .env заново перед скачиванием, чтобы изменение SYNO_PATH_VMIX_2 # ВАЖНО: не используем load_dotenv() без пути. Иначе /root/WFL/.env
# применялось без пересборки кода. # может перезаписать значения из systemd EnvironmentFile=/mnt/wfl/.env.
load_dotenv(override=True) env_path = get_env_path()
if env_path.exists():
load_dotenv(env_path, override=True)
_refresh_env()
def get_syno_settings() -> tuple[str | None, str | None, str | None]: def get_syno_settings() -> tuple[str | None, str | None, str | None]:
@@ -203,12 +227,30 @@ def build_vmix_project_bytes(
) )
syno_url, syno_username, syno_password = get_syno_settings() syno_url, syno_username, syno_password = get_syno_settings()
print(f"[vmix] source_key={source_key or '-'} preset_path={vmix_preset_path}") env_path = get_env_path()
if not syno_url:
raise RuntimeError(f"Не задан SYNO_URL (env: {env_path})")
if not syno_username:
raise RuntimeError(f"Не задан SYNO_USERNAME (env: {env_path})")
if not syno_password:
raise RuntimeError(f"Не задан SYNO_PASSWORD (env: {env_path})")
# nasio ожидает имя хоста/IP отдельно от порта, поэтому убираем случайно
# добавленную схему https:// и завершающий slash.
normalized_syno_url = str(syno_url).strip().rstrip("/")
if normalized_syno_url.startswith(("http://", "https://")):
normalized_syno_url = urlparse(normalized_syno_url).hostname or normalized_syno_url
print(
f"[vmix] source_key={source_key or '-'} preset_path={vmix_preset_path} "
f"nas={normalized_syno_url}:443 env={env_path}"
)
vmix_bio = nasio.load_bio( vmix_bio = nasio.load_bio(
user=syno_username, user=syno_username,
password=syno_password, password=syno_password,
nas_ip=syno_url, nas_ip=normalized_syno_url,
nas_port="443", nas_port="443",
path=vmix_preset_path, path=vmix_preset_path,
) )