audio_from_youtube/app/config.py

48 lines
2.3 KiB
Python
Raw Normal View History

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