import os import json class Config: """Класс для управления конфигурацией приложения""" DEFAULT_CONFIG = { "output_directory": "downloads", "video_quality": "best", "audio_format": "mp3", "video_format": "mp4", "create_subdirs": True, "add_metadata": True, "subtitle_languages": ["ru", "en"], "download_subtitles": False } def __init__(self, config_file="config.json"): self.config_file = config_file self.config = self.load_config() def load_config(self): """Загружает конфигурацию из файла или создает стандартную""" if os.path.exists(self.config_file): try: with open(self.config_file, 'r', encoding='utf-8') as f: return {**self.DEFAULT_CONFIG, **json.load(f)} except (json.JSONDecodeError, IOError): print(f"Ошибка чтения конфигурации из {self.config_file}. Используется стандартная конфигурация.") return self.DEFAULT_CONFIG.copy() def save_config(self): """Сохраняет текущую конфигурацию в файл""" try: with open(self.config_file, 'w', encoding='utf-8') as f: json.dump(self.config, f, indent=4, ensure_ascii=False) except IOError as e: print(f"Ошибка сохранения конфигурации: {e}") def get(self, key, default=None): """Получает значение конфигурации""" return self.config.get(key, default) def set(self, key, value): """Устанавливает значение конфигурации""" self.config[key] = value def create_output_directory(self): """Создает папку для загрузки, если она не существует""" output_dir = self.get("output_directory", "downloads") if not os.path.exists(output_dir): os.makedirs(output_dir) print(f"Создана папка для загрузок: {output_dir}") return output_dir