Harden queue identity and Jellyfin move checks

This commit is contained in:
Dymas
2026-05-25 23:51:16 +02:00
parent 8fb32a59ba
commit 1ceb773f99
8 changed files with 124 additions and 17 deletions
+21 -1
View File
@@ -1012,6 +1012,25 @@ def _move_tree_contents(source_dir, target_dir):
return moved
def jellyfin_media_files(target_dir):
video_suffixes = {".mp4", ".mkv", ".avi", ".mov", ".webm", ".m4v", ".ts"}
return [
path
for path in target_dir.rglob("*")
if path.is_file() and path.suffix.lower() in video_suffixes
]
def jellyfin_target_looks_complete(item, target_dir):
files = jellyfin_media_files(target_dir)
if normalize_media_type(item.get("media_type")) == "movie":
return bool(files)
expected_count = int(item.get("expected_count") or 0)
if expected_count < 1:
return False
return len(files) >= expected_count
def move_watchlist_item_to_jellyfin(item, config):
source_dir = watchlist_source_library_dir(item, config)
target_dir = jellyfin_target_library_dir(item, config)
@@ -1024,7 +1043,8 @@ def move_watchlist_item_to_jellyfin(item, config):
pass
if not source_dir.exists():
if target_dir.exists():
return {"moved": False, "reason": "already_moved", "item": item, "source": str(source_dir), "target": str(target_dir)}
reason = "already_moved" if jellyfin_target_looks_complete(item, target_dir) else "target_incomplete"
return {"moved": False, "reason": reason, "item": item, "source": str(source_dir), "target": str(target_dir)}
return {"moved": False, "reason": "source_missing", "item": item, "source": str(source_dir), "target": str(target_dir)}
target_dir.parent.mkdir(parents=True, exist_ok=True)
if not target_dir.exists():