47 lines
2.3 KiB
Python
47 lines
2.3 KiB
Python
"""Конфигурация приложения из переменных окружения."""
|
|
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 не установлен")
|