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.entities.series import Serie
|
||||||
from src.core.exceptions.Exceptions import MatchNotFoundError, NoKeyFoundException
|
from src.core.exceptions.Exceptions import MatchNotFoundError, NoKeyFoundException
|
||||||
from src.core.providers.base_provider import Loader
|
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.connection import get_sync_session
|
||||||
from src.server.database.service import AnimeSeriesService, EpisodeService
|
from src.server.database.service import AnimeSeriesService, EpisodeService
|
||||||
|
|
||||||
@@ -726,6 +726,16 @@ class SerieScanner:
|
|||||||
try:
|
try:
|
||||||
generated_key = generate_key_from_folder(folder_name)
|
generated_key = generate_key_from_folder(folder_name)
|
||||||
year_from_folder = self._extract_year_from_folder_name(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(
|
logger.info(
|
||||||
"Generated key for folder '%s' -> key='%s'",
|
"Generated key for folder '%s' -> key='%s'",
|
||||||
folder_name,
|
folder_name,
|
||||||
@@ -741,7 +751,7 @@ class SerieScanner:
|
|||||||
)
|
)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
"Failed to generate key for folder '%s': %s",
|
"Unexpected error generating key for folder '%s': %s",
|
||||||
folder_name,
|
folder_name,
|
||||||
exc
|
exc
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -602,6 +602,11 @@ async def validate_and_rename_series_folders(dry_run: bool = False) -> Dict[str,
|
|||||||
try:
|
try:
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
|
logger.warning(
|
||||||
|
"Removing source duplicate folder '%s' — target '%s' already exists",
|
||||||
|
current_name,
|
||||||
|
expected_name,
|
||||||
|
)
|
||||||
shutil.rmtree(series_dir)
|
shutil.rmtree(series_dir)
|
||||||
logger.info(
|
logger.info(
|
||||||
"Removed source folder '%s' — series already exists at target",
|
"Removed source folder '%s' — series already exists at target",
|
||||||
|
|||||||
Reference in New Issue
Block a user