From c2a85085135d954c1541c1fce8e5bd13dcb0014f Mon Sep 17 00:00:00 2001 From: Will Miao <13051207myq@gmail.com> Date: Tue, 26 Aug 2025 10:19:17 +0800 Subject: [PATCH] feat: Add get_preview_extension function to retrieve complete preview file extensions --- py/services/model_scanner.py | 4 ++-- py/utils/file_utils.py | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/py/services/model_scanner.py b/py/services/model_scanner.py index 06b0f2b3..2f419440 100644 --- a/py/services/model_scanner.py +++ b/py/services/model_scanner.py @@ -8,7 +8,7 @@ from typing import List, Dict, Optional, Type, Set from ..utils.models import BaseModelMetadata from ..config import config -from ..utils.file_utils import find_preview_file +from ..utils.file_utils import find_preview_file, get_preview_extension from ..utils.metadata_manager import MetadataManager from .model_cache import ModelCache from .model_hash_index import ModelHashIndex @@ -900,7 +900,7 @@ class ModelScanner: preview_dir = os.path.dirname(model_path) # Update preview filename to match the new base name new_base_name = os.path.splitext(os.path.basename(model_path))[0] - preview_ext = os.path.splitext(metadata['preview_url'])[1] + preview_ext = get_preview_extension(metadata['preview_url']) new_preview_path = os.path.join(preview_dir, f"{new_base_name}{preview_ext}") metadata['preview_url'] = new_preview_path.replace(os.sep, '/') diff --git a/py/utils/file_utils.py b/py/utils/file_utils.py index eaa73065..68cfa036 100644 --- a/py/utils/file_utils.py +++ b/py/utils/file_utils.py @@ -61,6 +61,24 @@ def find_preview_file(base_name: str, dir_path: str) -> str: return "" +def get_preview_extension(preview_path: str) -> str: + """Get the complete preview extension from a preview file path + + Args: + preview_path: Path to the preview file + + Returns: + str: The complete extension (e.g., '.preview.png', '.png', '.webp') + """ + preview_path_lower = preview_path.lower() + + # Check for compound extensions first (longer matches first) + for ext in sorted(PREVIEW_EXTENSIONS, key=len, reverse=True): + if preview_path_lower.endswith(ext.lower()): + return ext + + return os.path.splitext(preview_path)[1] + def normalize_path(path: str) -> str: """Normalize file path to use forward slashes""" return path.replace(os.sep, "/") if path else path \ No newline at end of file