From e57a72d12bfef5a1ef65b1fe536bac610ac55a19 Mon Sep 17 00:00:00 2001 From: Will Miao <13051207myq@gmail.com> Date: Thu, 13 Mar 2025 11:00:55 +0800 Subject: [PATCH] Fixed an issue caused by inconsistent base model name for Illustrious. It fixes https://github.com/willmiao/ComfyUI-Lora-Manager/issues/37 --- py/routes/api_routes.py | 6 ++++-- py/utils/file_utils.py | 8 ++++++++ py/utils/model_utils.py | 3 ++- static/js/utils/constants.js | 4 ++-- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/py/routes/api_routes.py b/py/routes/api_routes.py index d7fd2bc9..de147e78 100644 --- a/py/routes/api_routes.py +++ b/py/routes/api_routes.py @@ -4,6 +4,8 @@ import logging from aiohttp import web from typing import Dict, List +from ..utils.model_utils import determine_base_model + from ..services.file_monitor import LoraFileMonitor from ..services.download_manager import DownloadManager from ..services.civitai_client import CivitaiClient @@ -351,8 +353,8 @@ class ApiRoutes: # Update model name if available if 'model' in civitai_metadata: - local_metadata['model_name'] = civitai_metadata['model'].get('name', - local_metadata.get('model_name')) + if civitai_metadata.get('model', {}).get('name'): + local_metadata['model_name'] = determine_base_model(civitai_metadata['model']['name']) # Fetch additional model metadata (description and tags) if we have model ID model_id = civitai_metadata['modelId'] diff --git a/py/utils/file_utils.py b/py/utils/file_utils.py index 1d1dc440..8aec9002 100644 --- a/py/utils/file_utils.py +++ b/py/utils/file_utils.py @@ -4,6 +4,8 @@ import hashlib import json from typing import Dict, Optional +from .model_utils import determine_base_model + from .lora_metadata import extract_lora_metadata from .models import LoraMetadata @@ -105,6 +107,12 @@ async def load_metadata(file_path: str) -> Optional[LoraMetadata]: data = json.load(f) needs_update = False + + # Check and normalize base model name + normalized_base_model = determine_base_model(data['base_model']) + if data['base_model'] != normalized_base_model: + data['base_model'] = normalized_base_model + needs_update = True # Compare paths without extensions stored_path_base = os.path.splitext(data['file_path'])[0] diff --git a/py/utils/model_utils.py b/py/utils/model_utils.py index 80c2d023..7f62925d 100644 --- a/py/utils/model_utils.py +++ b/py/utils/model_utils.py @@ -8,7 +8,8 @@ BASE_MODEL_MAPPING = { "sd-v2": "SD 2.0", "flux1": "Flux.1 D", "flux.1 d": "Flux.1 D", - "illustrious": "IL", + "illustrious": "Illustrious", + "il": "Illustrious", "pony": "Pony", "Hunyuan Video": "Hunyuan Video" } diff --git a/static/js/utils/constants.js b/static/js/utils/constants.js index c2f0ff27..0711f675 100644 --- a/static/js/utils/constants.js +++ b/static/js/utils/constants.js @@ -31,7 +31,7 @@ export const BASE_MODELS = { LUMINA: "Lumina", KOLORS: "Kolors", NOOBAI: "NoobAI", - IL: "IL", + ILLUSTRIOUS: "Illustrious", PONY: "Pony", // Video models @@ -82,7 +82,7 @@ export const BASE_MODEL_CLASSES = { [BASE_MODELS.LUMINA]: "lumina", [BASE_MODELS.KOLORS]: "kolors", [BASE_MODELS.NOOBAI]: "noobai", - [BASE_MODELS.IL]: "il", + [BASE_MODELS.ILLUSTRIOUS]: "il", [BASE_MODELS.PONY]: "pony", // Default