fix: validate generated keys before creating Serie objects
- Add is_valid_key check in SerieScanner._read_data_from_file() to prevent passing invalid keys to Serie constructor (caused ValueError) - Improve error message for key generation failures - Add warning log before removing duplicate source folders in rename service
This commit is contained in:
@@ -24,7 +24,7 @@ from src.config.settings import settings
|
||||
from src.core.entities.series import Serie
|
||||
from src.core.exceptions.Exceptions import MatchNotFoundError, NoKeyFoundException
|
||||
from src.core.providers.base_provider import Loader
|
||||
from src.core.utils.key_utils import generate_key_from_folder
|
||||
from src.core.utils.key_utils import generate_key_from_folder, is_valid_key
|
||||
from src.server.database.connection import get_sync_session
|
||||
from src.server.database.service import AnimeSeriesService, EpisodeService
|
||||
|
||||
@@ -726,6 +726,16 @@ class SerieScanner:
|
||||
try:
|
||||
generated_key = generate_key_from_folder(folder_name)
|
||||
year_from_folder = self._extract_year_from_folder_name(folder_name)
|
||||
|
||||
# Validate that the generated key is usable
|
||||
if not generated_key or not is_valid_key(generated_key):
|
||||
logger.warning(
|
||||
"Serie key is invalid for folder '%s' (key='%s') - skipping",
|
||||
folder_name,
|
||||
generated_key
|
||||
)
|
||||
return None
|
||||
|
||||
logger.info(
|
||||
"Generated key for folder '%s' -> key='%s'",
|
||||
folder_name,
|
||||
@@ -741,7 +751,7 @@ class SerieScanner:
|
||||
)
|
||||
except Exception as exc:
|
||||
logger.warning(
|
||||
"Failed to generate key for folder '%s': %s",
|
||||
"Unexpected error generating key for folder '%s': %s",
|
||||
folder_name,
|
||||
exc
|
||||
)
|
||||
|
||||
@@ -602,6 +602,11 @@ async def validate_and_rename_series_folders(dry_run: bool = False) -> Dict[str,
|
||||
try:
|
||||
import shutil
|
||||
|
||||
logger.warning(
|
||||
"Removing source duplicate folder '%s' — target '%s' already exists",
|
||||
current_name,
|
||||
expected_name,
|
||||
)
|
||||
shutil.rmtree(series_dir)
|
||||
logger.info(
|
||||
"Removed source folder '%s' — series already exists at target",
|
||||
|
||||
Reference in New Issue
Block a user