46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
|
|
"""
|
|||
|
|
Загрузка и сохранение пользовательских настроек (settings.json рядом с проектом).
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
import json
|
|||
|
|
import logging
|
|||
|
|
from typing import Dict, Any
|
|||
|
|
|
|||
|
|
from comfy_studio.core.config import SETTINGS_PATH, DEFAULT_COMFYUI_URL
|
|||
|
|
|
|||
|
|
logger = logging.getLogger(__name__)
|
|||
|
|
|
|||
|
|
DEFAULT_SETTINGS: Dict[str, Any] = {
|
|||
|
|
"comfyui_url": DEFAULT_COMFYUI_URL,
|
|||
|
|
"tracked_paths": [],
|
|||
|
|
"language": "ru", # "ru" | "en"
|
|||
|
|
"thumbnail_size": 130,
|
|||
|
|
"translate_languages": ["ru", "en"], # языки в контекстном меню перевода
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
def load_settings() -> Dict[str, Any]:
|
|||
|
|
"""Загружает настройки, недостающие ключи добираются из DEFAULT_SETTINGS."""
|
|||
|
|
if not SETTINGS_PATH.exists():
|
|||
|
|
save_settings(DEFAULT_SETTINGS)
|
|||
|
|
return dict(DEFAULT_SETTINGS)
|
|||
|
|
try:
|
|||
|
|
with open(SETTINGS_PATH, "r", encoding="utf-8") as f:
|
|||
|
|
data = json.load(f)
|
|||
|
|
for k, v in DEFAULT_SETTINGS.items():
|
|||
|
|
data.setdefault(k, v)
|
|||
|
|
return data
|
|||
|
|
except Exception as e:
|
|||
|
|
logger.error(f"Ошибка чтения настроек: {e}")
|
|||
|
|
return dict(DEFAULT_SETTINGS)
|
|||
|
|
|
|||
|
|
|
|||
|
|
def save_settings(settings: Dict[str, Any]) -> bool:
|
|||
|
|
try:
|
|||
|
|
with open(SETTINGS_PATH, "w", encoding="utf-8") as f:
|
|||
|
|
json.dump(settings, f, indent=4, ensure_ascii=False)
|
|||
|
|
return True
|
|||
|
|
except Exception as e:
|
|||
|
|
logger.error(f"Ошибка сохранения настроек: {e}")
|
|||
|
|
return False
|