feat(SerieScanner): add warning event for duplicate series keys

- Add on_warning event system with subscribe/unsubscribe methods
- Change duplicate key handling from error to warning
- Fire on_warning event when duplicate series detected
- Include metadata: key, duplicate_folder, existing_folder
This commit is contained in:
2026-05-28 18:05:07 +02:00
parent 12e5526991
commit fe9284b80e
2 changed files with 66 additions and 5 deletions

View File

@@ -115,6 +115,29 @@ def _is_series_being_downloaded(series_folder: str) -> bool:
return True
def _cleanup_stale_files_after_rename(new_path: Path, new_name: str) -> None:
"""Remove legacy 'key' file after successful folder rename.
Also checks for orphaned folders with the same key that may have been
left behind from previous rename operations.
Args:
new_path: The new folder path after rename.
new_name: The new folder name.
"""
key_file = new_path / "key"
if key_file.exists():
try:
key_file.unlink()
logger.info(
"Removed legacy 'key' file after rename: %s", key_file
)
except OSError as exc:
logger.warning(
"Could not remove legacy 'key' file %s: %s", key_file, exc
)
async def _update_database_paths(
old_folder: str,
new_folder: str,
@@ -315,6 +338,9 @@ async def validate_and_rename_series_folders() -> Dict[str, int]:
# Update database records
await _update_database_paths(current_name, expected_name, anime_dir)
# Clean up stale/legacy files after successful rename
_cleanup_stale_files_after_rename(expected_path, expected_name)
except PermissionError as exc:
logger.error(
"Permission denied renaming '%s''%s': %s",