Feature scan extra folders (#65)

* scan extra folders

Other extension may be add models folder in folder_paths

* Fix scanned non-model files

Model file suffix specified
This commit is contained in:
Hayden
2024-11-28 12:04:23 +08:00
committed by GitHub
parent e8916307aa
commit dada903b2b
4 changed files with 14 additions and 16 deletions

View File

@@ -1,7 +1,6 @@
extension_tag = "ComfyUI Model Manager"
extension_uri: str = None
model_base_paths: dict[str, list[str]] = {}
setting_key = {

View File

@@ -10,14 +10,14 @@ from . import searcher
def scan_models(request):
result = []
model_base_paths = config.model_base_paths
model_base_paths = utils.resolve_model_base_paths()
for model_type in model_base_paths:
folders, extensions = folder_paths.folder_names_and_paths[model_type]
for path_index, base_path in enumerate(folders):
files = utils.recursive_search_files(base_path, request)
models = folder_paths.filter_files_extensions(files, extensions)
models = folder_paths.filter_files_extensions(files, folder_paths.supported_pt_extensions)
for fullname in models:
fullname = utils.normalize_path(fullname)
@@ -138,14 +138,14 @@ def fetch_model_info(model_page: str):
async def download_model_info(scan_mode: str, request):
utils.print_info(f"Download model info for {scan_mode}")
model_base_paths = config.model_base_paths
model_base_paths = utils.resolve_model_base_paths()
for model_type in model_base_paths:
folders, extensions = folder_paths.folder_names_and_paths[model_type]
for path_index, base_path in enumerate(folders):
files = utils.recursive_search_files(base_path, request)
models = folder_paths.filter_files_extensions(files, extensions)
models = folder_paths.filter_files_extensions(files, folder_paths.supported_pt_extensions)
for fullname in models:
fullname = utils.normalize_path(fullname)
@@ -199,14 +199,14 @@ async def migrate_legacy_information(request):
utils.print_info(f"Migrating legacy information...")
model_base_paths = config.model_base_paths
model_base_paths = utils.resolve_model_base_paths()
for model_type in model_base_paths:
folders, extensions = folder_paths.folder_names_and_paths[model_type]
for path_index, base_path in enumerate(folders):
files = utils.recursive_search_files(base_path, request)
models = folder_paths.filter_files_extensions(files, extensions)
models = folder_paths.filter_files_extensions(files, folder_paths.supported_pt_extensions)
for fullname in models:
fullname = utils.normalize_path(fullname)

View File

@@ -118,21 +118,21 @@ def download_web_distribution(version: str):
def resolve_model_base_paths():
folders = list(folder_paths.folder_names_and_paths.keys())
config.model_base_paths = {}
model_base_paths = {}
folder_black_list = ["configs", "custom_nodes"]
for folder in folders:
if folder == "configs":
continue
if folder == "custom_nodes":
if folder in folder_black_list:
continue
folders = folder_paths.get_folder_paths(folder)
config.model_base_paths[folder] = [normalize_path(f) for f in folders]
model_base_paths[folder] = [normalize_path(f) for f in folders]
return model_base_paths
def get_full_path(model_type: str, path_index: int, filename: str):
"""
Get the absolute path in the model type through string concatenation.
"""
folders = config.model_base_paths.get(model_type, [])
folders = resolve_model_base_paths().get(model_type, [])
if not path_index < len(folders):
raise RuntimeError(f"PathIndex {path_index} is not in {model_type}")
base_path = folders[path_index]
@@ -144,7 +144,7 @@ def get_valid_full_path(model_type: str, path_index: int, filename: str):
"""
Like get_full_path but it will check whether the file is valid.
"""
folders = config.model_base_paths.get(model_type, [])
folders = resolve_model_base_paths().get(model_type, [])
if not path_index < len(folders):
raise RuntimeError(f"PathIndex {path_index} is not in {model_type}")
base_path = folders[path_index]