mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-21 21:22:11 -03:00
- Replaced direct usage of Civitai client with a fallback metadata provider across all recipe parsers. - Updated metadata service to improve initialization and error handling. - Enhanced download manager to utilize a downloader service for file operations. - Improved recipe scanner to fetch model information through the new metadata provider. - Updated utility functions to streamline image downloading and processing. - Added comprehensive logging and error handling for better debugging and reliability. - Introduced `get_default_metadata_provider()` for simplified access to the default provider. - Ensured backward compatibility with existing APIs and workflows.
120 lines
4.4 KiB
Markdown
120 lines
4.4 KiB
Markdown
# Metadata Provider Refactor Summary
|
|
|
|
## Overview
|
|
This refactor improves the metadata provider initialization logic and replaces direct Civitai client usage with the unified FallbackMetadataProvider system throughout the codebase.
|
|
|
|
## Key Changes
|
|
|
|
### 1. Enhanced Metadata Service (`py/services/metadata_service.py`)
|
|
|
|
#### Improved `initialize_metadata_providers()`:
|
|
- Added provider clearing for proper reinitialization
|
|
- Enhanced error handling and validation
|
|
- Better logging for debugging
|
|
- Improved provider ordering logic based on priority settings
|
|
- More robust database path validation
|
|
|
|
#### Enhanced `update_metadata_provider_priority()`:
|
|
- More robust error handling
|
|
- Proper reinitalization of all providers
|
|
- Better logging for setting changes
|
|
|
|
#### New helper function:
|
|
- Added `get_default_metadata_provider()` for easier access to the default provider
|
|
|
|
### 2. Updated Recipe Parsers
|
|
All recipe parsers now use the unified metadata provider instead of direct civitai_client:
|
|
|
|
#### Files Updated:
|
|
- `py/recipes/parsers/civitai_image.py`
|
|
- `py/recipes/parsers/comfy.py`
|
|
- `py/recipes/parsers/automatic.py`
|
|
- `py/recipes/parsers/recipe_format.py`
|
|
- `py/recipes/parsers/meta_format.py`
|
|
|
|
#### Changes Made:
|
|
- Added import for `get_default_metadata_provider`
|
|
- Replaced `civitai_client.get_model_by_hash()` with `metadata_provider.get_model_by_hash()`
|
|
- Replaced `civitai_client.get_model_version_info()` with `metadata_provider.get_model_version_info()`
|
|
- Updated method signatures to indicate civitai_client parameter is deprecated
|
|
|
|
### 3. Download Manager Updates (`py/services/download_manager.py`)
|
|
|
|
#### Metadata Operations:
|
|
- Replaced direct civitai_client usage with metadata_provider for:
|
|
- `get_model_version()` calls for version info
|
|
|
|
#### Download Operations:
|
|
- Replaced `civitai_client.download_file()` with direct `downloader.download_file()` calls
|
|
- Replaced `civitai_client.download_preview_image()` with `downloader.download_to_memory()` for images
|
|
- Added proper authentication flags (`use_auth=True` for model files, `use_auth=False` for preview images)
|
|
|
|
### 4. Recipe Scanner Updates (`py/services/recipe_scanner.py`)
|
|
- Added import for `get_default_metadata_provider`
|
|
- Replaced `civitai_client.get_model_version_info()` with `metadata_provider.get_model_version_info()`
|
|
|
|
### 5. Utility Functions Updates (`py/utils/routes_common.py`)
|
|
- Added import for `get_downloader`
|
|
- Replaced preview image downloads with direct downloader usage
|
|
- Improved image optimization logic to work with in-memory downloads
|
|
- Better error handling for download and image processing operations
|
|
|
|
## Benefits
|
|
|
|
### 1. Unified Metadata Access
|
|
- All metadata requests now go through the fallback provider system
|
|
- Automatic failover between SQLite archive database and Civitai API
|
|
- Consistent metadata access patterns across all components
|
|
|
|
### 2. Improved Download Performance
|
|
- Direct use of the optimized downloader service
|
|
- Better connection pooling and retry logic
|
|
- Proper authentication handling
|
|
- Support for resumable downloads
|
|
|
|
### 3. Better Configuration Management
|
|
- Settings changes now properly update provider priority
|
|
- Clear separation between metadata and download operations
|
|
- Improved error handling and logging
|
|
|
|
### 4. Enhanced Reliability
|
|
- Fallback mechanisms ensure metadata is always available when possible
|
|
- Better error handling and recovery
|
|
- Consistent behavior across all parsers and services
|
|
|
|
## Usage
|
|
|
|
### Settings Changes
|
|
When users change metadata provider settings:
|
|
1. The `update_metadata_provider_priority()` function is automatically called
|
|
2. All providers are reinitialized with the new settings
|
|
3. The fallback provider is updated with the correct priority order
|
|
|
|
### Metadata Access
|
|
All components now use:
|
|
```python
|
|
from ...services.metadata_service import get_default_metadata_provider
|
|
|
|
metadata_provider = await get_default_metadata_provider()
|
|
result = await metadata_provider.get_model_by_hash(hash_value)
|
|
```
|
|
|
|
### Downloads
|
|
All downloads now use the unified downloader:
|
|
```python
|
|
from ...services.downloader import get_downloader
|
|
|
|
downloader = await get_downloader()
|
|
success, result = await downloader.download_file(url, path, use_auth=True)
|
|
```
|
|
|
|
## Compatibility
|
|
- All existing APIs and interfaces remain unchanged
|
|
- Backward compatibility maintained for existing workflows
|
|
- No changes required for external integrations
|
|
|
|
## Testing
|
|
- All updated files pass syntax validation
|
|
- Existing functionality preserved
|
|
- Enhanced error handling and logging for better debugging
|