Files
ComfyUI-Lora-Manager/py/services/metadata_service.py
Will Miao 9ba3e2c204 feat(metadata): implement metadata providers and initialize metadata service
- Added ModelMetadataProvider and CivitaiModelMetadataProvider for handling model metadata.
- Introduced SQLiteModelMetadataProvider for SQLite database integration.
- Created metadata_service.py to initialize and configure metadata providers.
- Updated CivitaiClient to register as a metadata provider.
- Refactored download_manager to use the new download_file method.
- Added SQL schema for models, model_versions, and model_files.
- Updated requirements.txt to include aiosqlite.
2025-09-08 22:41:17 +08:00

34 lines
1.3 KiB
Python

import os
import logging
from .model_metadata_provider import ModelMetadataProviderManager, SQLiteModelMetadataProvider
logger = logging.getLogger(__name__)
async def initialize_metadata_providers():
"""Initialize and configure all metadata providers"""
provider_manager = await ModelMetadataProviderManager.get_instance()
# Use hardcoded SQLite DB path if not set in settings
db_path = os.path.join(
os.path.dirname(os.path.dirname(os.path.dirname(__file__))),
'civitai', 'civitai.sqlite'
)
if db_path and os.path.exists(db_path):
try:
sqlite_provider = SQLiteModelMetadataProvider(db_path)
provider_manager.register_provider('sqlite', sqlite_provider)
logger.info(f"SQLite metadata provider registered with database: {db_path}")
except Exception as e:
logger.error(f"Failed to initialize SQLite metadata provider: {e}")
return provider_manager
async def get_metadata_provider(provider_name: str = None):
"""Get a specific metadata provider or default provider"""
provider_manager = await ModelMetadataProviderManager.get_instance()
if provider_name:
return provider_manager._get_provider(provider_name)
return provider_manager._get_provider()