mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-25 07:05:43 -03:00
feat: Adjust CivitaiClient.get_model_version logic to handle API changes — querying by model ID no longer includes image generation metadata. Fixes #279
This commit is contained in:
@@ -225,7 +225,7 @@ class CivitaiClient:
|
|||||||
logger.error(f"Error fetching model versions: {e}")
|
logger.error(f"Error fetching model versions: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
async def get_model_version(self, model_id: int, version_id: int) -> Optional[Dict]:
|
async def get_model_version(self, model_id: int, version_id: int = None) -> Optional[Dict]:
|
||||||
"""Get specific model version with additional metadata
|
"""Get specific model version with additional metadata
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -237,6 +237,8 @@ class CivitaiClient:
|
|||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
session = await self._ensure_fresh_session()
|
session = await self._ensure_fresh_session()
|
||||||
|
|
||||||
|
# Step 1: Get model data to find version_id if not provided and get additional metadata
|
||||||
async with session.get(f"{self.base_url}/models/{model_id}") as response:
|
async with session.get(f"{self.base_url}/models/{model_id}") as response:
|
||||||
if response.status != 200:
|
if response.status != 200:
|
||||||
return None
|
return None
|
||||||
@@ -244,45 +246,28 @@ class CivitaiClient:
|
|||||||
data = await response.json()
|
data = await response.json()
|
||||||
model_versions = data.get('modelVersions', [])
|
model_versions = data.get('modelVersions', [])
|
||||||
|
|
||||||
# Find matching version
|
# Step 2: Determine the version_id to use
|
||||||
matched_version = None
|
target_version_id = version_id
|
||||||
|
if target_version_id is None:
|
||||||
if version_id:
|
target_version_id = model_versions[0].get('id')
|
||||||
# If version_id provided, find exact match
|
|
||||||
for version in model_versions:
|
# Step 3: Get detailed version info using the version_id
|
||||||
if version.get('id') == version_id:
|
headers = self._get_request_headers()
|
||||||
matched_version = version
|
async with session.get(f"{self.base_url}/model-versions/{target_version_id}", headers=headers) as response:
|
||||||
break
|
if response.status != 200:
|
||||||
else:
|
|
||||||
# If no version_id then use the first version
|
|
||||||
matched_version = model_versions[0] if model_versions else None
|
|
||||||
|
|
||||||
# If no match found, return None
|
|
||||||
if not matched_version:
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# Build result with modified fields
|
|
||||||
result = matched_version.copy() # Copy to avoid modifying original
|
|
||||||
|
|
||||||
# Replace index with modelId
|
version = await response.json()
|
||||||
if 'index' in result:
|
|
||||||
del result['index']
|
|
||||||
result['modelId'] = model_id
|
|
||||||
|
|
||||||
# Add model field with metadata from top level
|
# Step 4: Enrich version_info with model data
|
||||||
result['model'] = {
|
# Add description and tags from model data
|
||||||
"name": data.get("name"),
|
version['model']['description'] = data.get("description")
|
||||||
"type": data.get("type"),
|
version['model']['tags'] = data.get("tags", [])
|
||||||
"nsfw": data.get("nsfw", False),
|
|
||||||
"poi": data.get("poi", False),
|
|
||||||
"description": data.get("description"),
|
|
||||||
"tags": data.get("tags", [])
|
|
||||||
}
|
|
||||||
|
|
||||||
# Add creator field from top level
|
# Add creator from model data
|
||||||
result['creator'] = data.get("creator")
|
version['creator'] = data.get("creator")
|
||||||
|
|
||||||
return result
|
return version
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error fetching model version: {e}")
|
logger.error(f"Error fetching model version: {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user