diff --git a/py/routes/api_routes.py b/py/routes/api_routes.py index 7aa715d5..4abc368f 100644 --- a/py/routes/api_routes.py +++ b/py/routes/api_routes.py @@ -781,11 +781,13 @@ class ApiRoutes: # Check if we already have the description stored in metadata description = None tags = [] + creator = {} if file_path: metadata_path = os.path.splitext(file_path)[0] + '.metadata.json' metadata = await ModelRouteUtils.load_local_metadata(metadata_path) description = metadata.get('modelDescription') tags = metadata.get('tags', []) + creator = metadata.get('creator', {}) # If description is not in metadata, fetch from CivitAI if not description: @@ -795,6 +797,7 @@ class ApiRoutes: if (model_metadata): description = model_metadata.get('description') tags = model_metadata.get('tags', []) + creator = model_metadata.get('creator', {}) # Save the metadata to file if we have a file path and got metadata if file_path: @@ -804,6 +807,7 @@ class ApiRoutes: metadata['modelDescription'] = description metadata['tags'] = tags + metadata['creator'] = creator with open(metadata_path, 'w', encoding='utf-8') as f: json.dump(metadata, f, indent=2, ensure_ascii=False) @@ -814,7 +818,8 @@ class ApiRoutes: return web.json_response({ 'success': True, 'description': description or "
No model description available.
", - 'tags': tags + 'tags': tags, + 'creator': creator }) except Exception as e: diff --git a/py/services/model_scanner.py b/py/services/model_scanner.py index b3db2d33..cff319c0 100644 --- a/py/services/model_scanner.py +++ b/py/services/model_scanner.py @@ -610,7 +610,10 @@ class ModelScanner: model_id = str(model_id) tags_missing = not model_data.get('tags') or len(model_data.get('tags', [])) == 0 desc_missing = not model_data.get('modelDescription') or model_data.get('modelDescription') in (None, "") - needs_metadata_update = tags_missing or desc_missing + # TODO: not for now, but later we should check if the creator is missing + # creator_missing = not model_data.get('civitai', {}).get('creator') + creator_missing = False + needs_metadata_update = tags_missing or desc_missing or creator_missing if needs_metadata_update and model_id: logger.debug(f"Fetching missing metadata for {file_path} with model ID {model_id}") @@ -636,6 +639,8 @@ class ModelScanner: if model_metadata.get('description') and (not model_data.get('modelDescription') or model_data.get('modelDescription') in (None, "")): model_data['modelDescription'] = model_metadata['description'] + + model_data['civitai']['creator'] = model_metadata['creator'] metadata_path = os.path.splitext(file_path)[0] + '.metadata.json' with open(metadata_path, 'w', encoding='utf-8') as f: diff --git a/py/utils/routes_common.py b/py/utils/routes_common.py index af54c400..f8b5f649 100644 --- a/py/utils/routes_common.py +++ b/py/utils/routes_common.py @@ -53,6 +53,7 @@ class ModelRouteUtils: if model_metadata: local_metadata['modelDescription'] = model_metadata.get('description', '') local_metadata['tags'] = model_metadata.get('tags', []) + local_metadata['civitai']['creator'] = model_metadata['creator'] # Update base model local_metadata['base_model'] = determine_base_model(civitai_metadata.get('baseModel'))