Spaces:
Runtime error
Runtime error
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() | |