Harden queue identity and Jellyfin move checks
This commit is contained in:
@@ -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():
|
||||
|
||||
Reference in New Issue
Block a user