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.
4.4 KiB
4.4 KiB
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.pypy/recipes/parsers/comfy.pypy/recipes/parsers/automatic.pypy/recipes/parsers/recipe_format.pypy/recipes/parsers/meta_format.py
Changes Made:
- Added import for
get_default_metadata_provider - Replaced
civitai_client.get_model_by_hash()withmetadata_provider.get_model_by_hash() - Replaced
civitai_client.get_model_version_info()withmetadata_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 directdownloader.download_file()calls - Replaced
civitai_client.download_preview_image()withdownloader.download_to_memory()for images - Added proper authentication flags (
use_auth=Truefor model files,use_auth=Falsefor 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()withmetadata_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:
- The
update_metadata_provider_priority()function is automatically called - All providers are reinitialized with the new settings
- The fallback provider is updated with the correct priority order
Metadata Access
All components now use:
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:
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