mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-04-10 04:42:14 -03:00
feat(misc): add model download status aggregation
This commit is contained in:
@@ -896,18 +896,49 @@ class ModelLibraryHandler:
|
|||||||
|
|
||||||
model_type = None
|
model_type = None
|
||||||
versions = []
|
versions = []
|
||||||
|
downloaded_version_ids = []
|
||||||
|
history_service = await self._get_download_history_service()
|
||||||
if lora_versions:
|
if lora_versions:
|
||||||
model_type = "lora"
|
model_type = "lora"
|
||||||
versions = self._with_downloaded_flag(lora_versions)
|
versions = self._with_downloaded_flag(lora_versions)
|
||||||
|
downloaded_version_ids = await history_service.get_downloaded_version_ids(
|
||||||
|
model_type,
|
||||||
|
model_id,
|
||||||
|
)
|
||||||
elif checkpoint_versions:
|
elif checkpoint_versions:
|
||||||
model_type = "checkpoint"
|
model_type = "checkpoint"
|
||||||
versions = self._with_downloaded_flag(checkpoint_versions)
|
versions = self._with_downloaded_flag(checkpoint_versions)
|
||||||
|
downloaded_version_ids = await history_service.get_downloaded_version_ids(
|
||||||
|
model_type,
|
||||||
|
model_id,
|
||||||
|
)
|
||||||
elif embedding_versions:
|
elif embedding_versions:
|
||||||
model_type = "embedding"
|
model_type = "embedding"
|
||||||
versions = self._with_downloaded_flag(embedding_versions)
|
versions = self._with_downloaded_flag(embedding_versions)
|
||||||
|
downloaded_version_ids = await history_service.get_downloaded_version_ids(
|
||||||
|
model_type,
|
||||||
|
model_id,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
for candidate_type in ("lora", "checkpoint", "embedding"):
|
||||||
|
candidate_downloaded_version_ids = (
|
||||||
|
await history_service.get_downloaded_version_ids(
|
||||||
|
candidate_type,
|
||||||
|
model_id,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if candidate_downloaded_version_ids:
|
||||||
|
model_type = candidate_type
|
||||||
|
downloaded_version_ids = candidate_downloaded_version_ids
|
||||||
|
break
|
||||||
|
|
||||||
return web.json_response(
|
return web.json_response(
|
||||||
{"success": True, "modelType": model_type, "versions": versions}
|
{
|
||||||
|
"success": True,
|
||||||
|
"modelType": model_type,
|
||||||
|
"versions": versions,
|
||||||
|
"downloadedVersionIds": downloaded_version_ids,
|
||||||
|
}
|
||||||
)
|
)
|
||||||
except Exception as exc: # pragma: no cover - defensive logging
|
except Exception as exc: # pragma: no cover - defensive logging
|
||||||
logger.error("Failed to check model existence: %s", exc, exc_info=True)
|
logger.error("Failed to check model existence: %s", exc, exc_info=True)
|
||||||
@@ -962,6 +993,9 @@ class ModelLibraryHandler:
|
|||||||
self, request: web.Request
|
self, request: web.Request
|
||||||
) -> web.Response:
|
) -> web.Response:
|
||||||
try:
|
try:
|
||||||
|
if request.method == "GET":
|
||||||
|
data = request.query
|
||||||
|
else:
|
||||||
data = await request.json()
|
data = await request.json()
|
||||||
model_type, _ = await self._get_scanner_for_type(data.get("modelType"))
|
model_type, _ = await self._get_scanner_for_type(data.get("modelType"))
|
||||||
if not model_type:
|
if not model_type:
|
||||||
@@ -979,6 +1013,13 @@ class ModelLibraryHandler:
|
|||||||
)
|
)
|
||||||
|
|
||||||
downloaded = data.get("downloaded")
|
downloaded = data.get("downloaded")
|
||||||
|
if isinstance(downloaded, str):
|
||||||
|
normalized_downloaded = downloaded.strip().lower()
|
||||||
|
if normalized_downloaded in {"true", "1"}:
|
||||||
|
downloaded = True
|
||||||
|
elif normalized_downloaded in {"false", "0"}:
|
||||||
|
downloaded = False
|
||||||
|
|
||||||
if not isinstance(downloaded, bool):
|
if not isinstance(downloaded, bool):
|
||||||
return web.json_response(
|
return web.json_response(
|
||||||
{"success": False, "error": "Parameter downloaded must be a boolean"},
|
{"success": False, "error": "Parameter downloaded must be a boolean"},
|
||||||
|
|||||||
@@ -47,6 +47,11 @@ MISC_ROUTE_DEFINITIONS: tuple[RouteDefinition, ...] = (
|
|||||||
"/api/lm/model-version-download-status",
|
"/api/lm/model-version-download-status",
|
||||||
"set_model_version_download_status",
|
"set_model_version_download_status",
|
||||||
),
|
),
|
||||||
|
RouteDefinition(
|
||||||
|
"GET",
|
||||||
|
"/api/lm/set-model-version-download-status",
|
||||||
|
"set_model_version_download_status",
|
||||||
|
),
|
||||||
RouteDefinition("GET", "/api/lm/civitai/user-models", "get_civitai_user_models"),
|
RouteDefinition("GET", "/api/lm/civitai/user-models", "get_civitai_user_models"),
|
||||||
RouteDefinition(
|
RouteDefinition(
|
||||||
"POST", "/api/lm/download-metadata-archive", "download_metadata_archive"
|
"POST", "/api/lm/download-metadata-archive", "download_metadata_archive"
|
||||||
|
|||||||
Reference in New Issue
Block a user