|
import os
|
|
import constants
|
|
from pathlib import Path
|
|
from time import time
|
|
from utils import get_image_file_extension
|
|
|
|
|
|
def join_paths(
|
|
first_path: str,
|
|
second_path: str,
|
|
) -> str:
|
|
return os.path.join(first_path, second_path)
|
|
|
|
|
|
def get_file_name(file_path: str) -> str:
|
|
return Path(file_path).stem
|
|
|
|
|
|
def get_app_path() -> str:
|
|
app_dir = os.path.dirname(__file__)
|
|
work_dir = os.path.dirname(app_dir)
|
|
return work_dir
|
|
|
|
|
|
def get_configs_path() -> str:
|
|
config_path = join_paths(get_app_path(), constants.CONFIG_DIRECTORY)
|
|
return config_path
|
|
|
|
|
|
class FastStableDiffusionPaths:
|
|
@staticmethod
|
|
def get_app_settings_path() -> str:
|
|
configs_path = get_configs_path()
|
|
settings_path = join_paths(
|
|
configs_path,
|
|
constants.APP_SETTINGS_FILE,
|
|
)
|
|
return settings_path
|
|
|
|
@staticmethod
|
|
def get_results_path() -> str:
|
|
results_path = join_paths(get_app_path(), constants.RESULTS_DIRECTORY)
|
|
return results_path
|
|
|
|
@staticmethod
|
|
def get_css_path() -> str:
|
|
app_dir = os.path.dirname(__file__)
|
|
css_path = os.path.join(
|
|
app_dir,
|
|
"frontend",
|
|
"webui",
|
|
"css",
|
|
"style.css",
|
|
)
|
|
return css_path
|
|
|
|
@staticmethod
|
|
def get_models_config_path(model_config_file: str) -> str:
|
|
configs_path = get_configs_path()
|
|
models_path = join_paths(
|
|
configs_path,
|
|
model_config_file,
|
|
)
|
|
return models_path
|
|
|
|
@staticmethod
|
|
def get_upscale_filepath(
|
|
file_path_src: str,
|
|
scale_factor: int,
|
|
format: str,
|
|
) -> str:
|
|
if file_path_src:
|
|
file_name_src = get_file_name(file_path_src)
|
|
else:
|
|
file_name_src = "fastsdcpu"
|
|
|
|
extension = get_image_file_extension(format)
|
|
upscaled_filepath = join_paths(
|
|
FastStableDiffusionPaths.get_results_path(),
|
|
f"{file_name_src}_{int(scale_factor)}x_upscale_{int(time())}{extension}",
|
|
)
|
|
return upscaled_filepath
|
|
|
|
@staticmethod
|
|
def get_lora_models_path() -> str:
|
|
lora_models_path = join_paths(get_app_path(), constants.LORA_DIRECTORY)
|
|
return lora_models_path
|
|
|
|
@staticmethod
|
|
def get_controlnet_models_path() -> str:
|
|
controlnet_models_path = join_paths(
|
|
get_app_path(), constants.CONTROLNET_DIRECTORY
|
|
)
|
|
return controlnet_models_path
|
|
|
|
@staticmethod
|
|
def get_gguf_models_path() -> str:
|
|
models_path = join_paths(get_app_path(), constants.MODELS_DIRECTORY)
|
|
guuf_models_path = join_paths(models_path, "gguf")
|
|
return guuf_models_path
|
|
|
|
|
|
def get_base_folder_name(path: str) -> str:
|
|
return os.path.basename(path)
|
|
|
|
|
|
def ensure_path(path: str) -> None:
|
|
"""Ensure that the directory exists."""
|
|
if not os.path.exists(path):
|
|
os.makedirs(path, exist_ok=True)
|
|
|