69 lines
2.3 KiB
Python
69 lines
2.3 KiB
Python
from pathlib import Path
|
|
import sys
|
|
import os
|
|
|
|
here = Path(__file__).parent.parent.absolute()
|
|
comfy_dir = str(here.parent.parent)
|
|
sys.path.append(comfy_dir)
|
|
|
|
import folder_paths
|
|
|
|
primere_root = Path(__file__).parent.parent.absolute()
|
|
components_path = os.path.join(primere_root, 'components')
|
|
sys.path.append(components_path)
|
|
|
|
import utility
|
|
|
|
def match_supported(name):
|
|
name_lower = name.lower()
|
|
for supported in utility.SUPPORTED_MODELS:
|
|
if supported.lower() == name_lower:
|
|
return supported
|
|
return None
|
|
|
|
def get_type_from_dir(oneModel):
|
|
parts = Path(oneModel).parts
|
|
if len(parts) > 1:
|
|
return match_supported(parts[0])
|
|
return None
|
|
|
|
ModelsList = folder_paths.get_filename_list("loras")
|
|
|
|
print('------------------- START -------------------------')
|
|
print(str(len(ModelsList)) + ' loras in system')
|
|
print('--------------- CACHED LORAS INFO ---------------------')
|
|
|
|
if len(ModelsList) > 0:
|
|
model_counter = 1
|
|
for oneModel in ModelsList:
|
|
modelname_only = Path(oneModel).stem
|
|
prefix = f"Lora [{model_counter}] / {len(ModelsList)}"
|
|
|
|
model_version = utility.get_value_from_cache('lora_version', modelname_only)
|
|
if model_version is not None and model_version in utility.SUPPORTED_MODELS:
|
|
print(f"{prefix} already cached: {modelname_only} -> {model_version}")
|
|
model_counter += 1
|
|
continue
|
|
|
|
model_version = utility.getModelType(oneModel, 'loras')
|
|
if model_version and model_version not in (None, False, 'NoneType') and model_version in utility.SUPPORTED_MODELS:
|
|
utility.add_value_to_cache('lora_version', modelname_only, model_version)
|
|
print(f"{prefix} cached from metadata: {modelname_only} -> {model_version}")
|
|
model_counter += 1
|
|
continue
|
|
|
|
dir_version = get_type_from_dir(oneModel)
|
|
if dir_version:
|
|
utility.add_value_to_cache('lora_version', modelname_only, dir_version)
|
|
print(f"{prefix} cached from directory: {modelname_only} -> {dir_version}")
|
|
model_counter += 1
|
|
continue
|
|
|
|
cache_msg = f"UNKNOWN | path: models/loras/{oneModel}"
|
|
utility.add_value_to_cache('lora_version', modelname_only, cache_msg)
|
|
print(f"{prefix} {cache_msg}")
|
|
|
|
model_counter += 1
|
|
else:
|
|
print('No loras in your system....')
|