53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
import os
|
|
import platform
|
|
from datetime import datetime
|
|
from importlib import import_module
|
|
from pathlib import Path
|
|
|
|
from .Backends import Backends
|
|
|
|
|
|
class Paths:
|
|
ROOT_PATH = Path(__file__).resolve().parent.parent
|
|
RESOURCE_PATH = ROOT_PATH / "resources"
|
|
TEMPLATE_PATH = RESOURCE_PATH / "template.json"
|
|
TIMESTAMP_PATH = RESOURCE_PATH / "timestamp.json"
|
|
INFO_PATH = RESOURCE_PATH / "info.json"
|
|
LOG_PATH = RESOURCE_PATH / f"logs/log_{datetime.now().strftime('%Y_%m_%d_%H_%M_%S')}.log"
|
|
CONFIG_PATH = ROOT_PATH / "config.json"
|
|
GIT_PATH = ROOT_PATH / ".git"
|
|
|
|
def __init__(self, logger, config, backends):
|
|
self.__logger = logger
|
|
self.__config = config
|
|
self.__backends = backends
|
|
|
|
def initiate(self):
|
|
if self.__backends[Backends.COMFY_UI]:
|
|
folder_paths = import_module("folder_paths")
|
|
fonts_folder_path = self.__get_font_paths(folder_paths)
|
|
|
|
os.environ["U2NET_HOME"] = str(Path(folder_paths.models_dir) / "onnx")
|
|
|
|
folder_paths.folder_names_and_paths.update({
|
|
"onnx": ([Path(folder_paths.models_dir) / "onnx"], {".onnx"}),
|
|
"fonts": (fonts_folder_path, {".otf", ".ttf"})
|
|
})
|
|
|
|
def __get_font_paths(self, folder_paths):
|
|
system = platform.system()
|
|
user_home = Path.home()
|
|
|
|
config_font_path = Path(folder_paths.base_path) / Path(self.__config["fonts"]["folder_path"].replace("\\", "/"))
|
|
config_font_path.mkdir(parents=True, exist_ok=True)
|
|
|
|
system_fonts_paths = {
|
|
"Windows": [Path(os.environ.get("WINDIR", "")) / "Fonts"],
|
|
"Darwin": [Path("/Library") / "Fonts", user_home / "Library" / "Fonts"],
|
|
"Linux": [Path("/usr") / "share" / "fonts", Path("/usr") / "local" / "share" / "fonts", user_home / ".fonts"]
|
|
}
|
|
|
|
paths = [config_font_path] + system_fonts_paths.get(system, [])
|
|
|
|
return [str(path) for path in paths if path.exists()]
|