"""Конфигурация приложения из переменных окружения.""" import os from pathlib import Path class Config: """Класс для хранения конфигурации.""" def __init__(self): self.is_prod = os.getenv("IS_PROD", "false").lower() == "true" # Выбор токенов в зависимости от режима if self.is_prod: self.user_bot_token = os.getenv("TG_USER_BOT_TOKEN_PROD") self.admin_bot_token = os.getenv("TG_ADMIN_BOT_TOKEN_PROD") else: self.user_bot_token = os.getenv("TG_USER_BOT_TOKEN_TEST") self.admin_bot_token = os.getenv("TG_ADMIN_BOT_TOKEN_TEST") self.admin_chat_id = os.getenv("ADMIN_CHAT_ID") self.workdir = Path(os.getenv("WORKDIR", "/data")) self.log_level = os.getenv("LOG_LEVEL", "INFO") # Таймауты для Telegram API (секунды) self.tg_connect_timeout = float(os.getenv("TG_CONNECT_TIMEOUT", "20")) self.tg_read_timeout = float(os.getenv("TG_READ_TIMEOUT", "120")) self.tg_write_timeout = float(os.getenv("TG_WRITE_TIMEOUT", "120")) self.tg_pool_timeout = float(os.getenv("TG_POOL_TIMEOUT", "20")) # Параметры для yt-dlp (обход 403 при необходимости) self.ytdlp_cookies_file = os.getenv("YTDLP_COOKIES_FILE") self.ytdlp_user_agent = os.getenv("YTDLP_USER_AGENT") self.ytdlp_player_client = os.getenv("YTDLP_PLAYER_CLIENT", "android") self.ytdlp_force_ipv4 = os.getenv("YTDLP_FORCE_IPV4", "true").lower() == "true" # Параметры отправки файлов в Telegram self.max_part_mb = int(os.getenv("MAX_PART_MB", "40")) self.audio_bitrate_kbps = int(os.getenv("AUDIO_BITRATE_KBPS", "128")) # Создаём рабочую директорию если её нет self.workdir.mkdir(parents=True, exist_ok=True) # Проверка обязательных переменных if not self.user_bot_token: raise ValueError("TG_USER_BOT_TOKEN не установлен") if not self.admin_bot_token: raise ValueError("TG_ADMIN_BOT_TOKEN не установлен")