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:
@@ -23,7 +23,6 @@ if len(uninstalled_package) > 0:
|
|||||||
|
|
||||||
# Init config settings
|
# Init config settings
|
||||||
config.extension_uri = extension_uri
|
config.extension_uri = extension_uri
|
||||||
utils.resolve_model_base_paths()
|
|
||||||
|
|
||||||
version = utils.get_current_version()
|
version = utils.get_current_version()
|
||||||
utils.download_web_distribution(version)
|
utils.download_web_distribution(version)
|
||||||
@@ -95,7 +94,7 @@ async def get_model_paths(request):
|
|||||||
"""
|
"""
|
||||||
Returns the base folders for models.
|
Returns the base folders for models.
|
||||||
"""
|
"""
|
||||||
model_base_paths = config.model_base_paths
|
model_base_paths = utils.resolve_model_base_paths()
|
||||||
return web.json_response({"success": True, "data": model_base_paths})
|
return web.json_response({"success": True, "data": model_base_paths})
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
extension_tag = "ComfyUI Model Manager"
|
extension_tag = "ComfyUI Model Manager"
|
||||||
|
|
||||||
extension_uri: str = None
|
extension_uri: str = None
|
||||||
model_base_paths: dict[str, list[str]] = {}
|
|
||||||
|
|
||||||
|
|
||||||
setting_key = {
|
setting_key = {
|
||||||
|
|||||||
@@ -10,14 +10,14 @@ from . import searcher
|
|||||||
|
|
||||||
def scan_models(request):
|
def scan_models(request):
|
||||||
result = []
|
result = []
|
||||||
model_base_paths = config.model_base_paths
|
model_base_paths = utils.resolve_model_base_paths()
|
||||||
for model_type in model_base_paths:
|
for model_type in model_base_paths:
|
||||||
|
|
||||||
folders, extensions = folder_paths.folder_names_and_paths[model_type]
|
folders, extensions = folder_paths.folder_names_and_paths[model_type]
|
||||||
for path_index, base_path in enumerate(folders):
|
for path_index, base_path in enumerate(folders):
|
||||||
files = utils.recursive_search_files(base_path, request)
|
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:
|
for fullname in models:
|
||||||
fullname = utils.normalize_path(fullname)
|
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):
|
async def download_model_info(scan_mode: str, request):
|
||||||
utils.print_info(f"Download model info for {scan_mode}")
|
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:
|
for model_type in model_base_paths:
|
||||||
|
|
||||||
folders, extensions = folder_paths.folder_names_and_paths[model_type]
|
folders, extensions = folder_paths.folder_names_and_paths[model_type]
|
||||||
for path_index, base_path in enumerate(folders):
|
for path_index, base_path in enumerate(folders):
|
||||||
files = utils.recursive_search_files(base_path, request)
|
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:
|
for fullname in models:
|
||||||
fullname = utils.normalize_path(fullname)
|
fullname = utils.normalize_path(fullname)
|
||||||
@@ -199,14 +199,14 @@ async def migrate_legacy_information(request):
|
|||||||
|
|
||||||
utils.print_info(f"Migrating legacy information...")
|
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:
|
for model_type in model_base_paths:
|
||||||
|
|
||||||
folders, extensions = folder_paths.folder_names_and_paths[model_type]
|
folders, extensions = folder_paths.folder_names_and_paths[model_type]
|
||||||
for path_index, base_path in enumerate(folders):
|
for path_index, base_path in enumerate(folders):
|
||||||
files = utils.recursive_search_files(base_path, request)
|
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:
|
for fullname in models:
|
||||||
fullname = utils.normalize_path(fullname)
|
fullname = utils.normalize_path(fullname)
|
||||||
|
|||||||
14
py/utils.py
14
py/utils.py
@@ -118,21 +118,21 @@ def download_web_distribution(version: str):
|
|||||||
|
|
||||||
def resolve_model_base_paths():
|
def resolve_model_base_paths():
|
||||||
folders = list(folder_paths.folder_names_and_paths.keys())
|
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:
|
for folder in folders:
|
||||||
if folder == "configs":
|
if folder in folder_black_list:
|
||||||
continue
|
|
||||||
if folder == "custom_nodes":
|
|
||||||
continue
|
continue
|
||||||
folders = folder_paths.get_folder_paths(folder)
|
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):
|
def get_full_path(model_type: str, path_index: int, filename: str):
|
||||||
"""
|
"""
|
||||||
Get the absolute path in the model type through string concatenation.
|
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):
|
if not path_index < len(folders):
|
||||||
raise RuntimeError(f"PathIndex {path_index} is not in {model_type}")
|
raise RuntimeError(f"PathIndex {path_index} is not in {model_type}")
|
||||||
base_path = folders[path_index]
|
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.
|
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):
|
if not path_index < len(folders):
|
||||||
raise RuntimeError(f"PathIndex {path_index} is not in {model_type}")
|
raise RuntimeError(f"PathIndex {path_index} is not in {model_type}")
|
||||||
base_path = folders[path_index]
|
base_path = folders[path_index]
|
||||||
|
|||||||
Reference in New Issue
Block a user