RuinedFooocus / modules /settings.py
malizec's picture
Upload folder using huggingface_hub
2de3774 verified
import json
from os.path import exists
from pathlib import Path
import time
import shared
class SettingsManager:
DEFAULT_SETTINGS = {
"advanced_mode": False,
"image_number": 1,
"seed_random": True,
"seed": 0,
"style": ["Style: sai-cinematic"],
"prompt": "",
"negative_prompt": "",
"performance": "Speed",
"resolution": "1152x896 (4:3)",
"base_model": "sd_xl_base_1.0_0.9vae.safetensors",
"lora_1_model": "None",
"lora_1_weight": 0.5,
"lora_2_model": "None",
"lora_2_weight": 0.5,
"lora_3_model": "None",
"lora_3_weight": 0.5,
"lora_4_model": "None",
"lora_4_weight": 0.5,
"lora_5_model": "None",
"lora_5_weight": 0.5,
"theme": "None",
"auto_negative_prompt": False,
"OBP_preset": "Standard",
"hint_chance": 25,
}
default_settings = None
settings_path = None
name = None
def __init__(self):
from argparser import args
self.name = args.settings
self.set_settings_path(args.settings)
self.load_settings()
def set_settings_path(self, subfolder=None):
self.subfolder = subfolder
if self.subfolder in [None, "", "default"]:
path = Path("settings/settings.json")
else:
path = Path(f"settings/{self.subfolder}/settings.json")
if not path.parent.exists():
path.parent.mkdir()
self.settings_path = path
def load_settings(self):
path = self.settings_path
if path and exists(path):
with open(path) as f:
self.default_settings = json.load(f)
else:
self.default_settings = {}
# Add any missing default settings
changed = False
for key, value in self.DEFAULT_SETTINGS.items():
if key not in self.default_settings:
self.default_settings[key] = value
changed = True
# Some sanity checks
for key in ['style', 'archive_folders']:
if key in self.default_settings and not isinstance(self.default_settings[key], list):
self.default_settings[key] = [self.default_settings[key]]
if changed:
with open(self.settings_path, "w") as f:
json.dump(self.default_settings, f, indent=2)
def save_settings(self):
# FIXME: Add some error checks and exception handling
with open(self.settings_path, "w") as f:
json.dump(self.default_settings, f, indent=2)
shared.update_cfg()