Allow season zero for auto-downloads

This commit is contained in:
Dymas
2026-09-09 22:54:01 +02:00
parent 91228d58e0
commit 079488fa5a
9 changed files with 128 additions and 17 deletions
+13 -7
View File
@@ -1048,7 +1048,7 @@ def watchlist_source_season_dir(item, config):
source_root = watchlist_source_library_dir(item, config)
if normalize_media_type(item.get("media_type")) == "movie":
return source_root
season = normalize_season((item or {}).get("auto_download_series") or "1")
season = normalize_season((item or {}).get("auto_download_series"))
return source_root / f"Season {int(season):02d}"
@@ -1145,7 +1145,7 @@ def watchlist_downloaded_episode_values_from_filesystem(item, config, mode):
season_dir = watchlist_source_season_dir(item, config)
if not season_dir.exists() or not season_dir.is_dir():
return []
season = normalize_season((item or {}).get("auto_download_series") or "1")
season = normalize_season((item or {}).get("auto_download_series"))
pattern = re.compile(rf"\bS{int(season):02d}E([0-9][0-9A-Za-z.\-]*)\b", re.IGNORECASE)
values = []
seen = set()
@@ -1703,7 +1703,7 @@ class WatchlistStore:
item["auto_download_quality"] = quality if quality in QUALITY_CHOICES else defaults["auto_download_quality"]
item["auto_download_name"] = sanitize_path_component(item.get("auto_download_name") or defaults["auto_download_name"], defaults["auto_download_name"])
item["auto_download_source_name"] = str(item.get("auto_download_source_name") or defaults["auto_download_source_name"]).strip() or defaults["auto_download_source_name"]
item["auto_download_series"] = normalize_season(item.get("auto_download_series") or defaults["auto_download_series"])
item["auto_download_series"] = normalize_season(item.get("auto_download_series"))
item["auto_download_offset"] = normalize_episode_offset(item.get("auto_download_offset"))
item["downloaded_sub_episodes"] = decode_episode_values(item.get("downloaded_sub_episodes_json"))
item["downloaded_dub_episodes"] = decode_episode_values(item.get("downloaded_dub_episodes_json"))
@@ -2027,7 +2027,10 @@ class WatchlistStore:
"downloaded_sub_episodes_json": None,
"downloaded_dub_episodes_json": None,
}
item["auto_download_series"] = normalize_season(payload.get("auto_download_series") or item.get("auto_download_series") or "1")
requested_series = payload.get("auto_download_series")
if requested_series is None or str(requested_series).strip() == "":
requested_series = item.get("auto_download_series")
item["auto_download_series"] = normalize_season(requested_series)
requested_mode = str(payload.get("auto_download_mode") or item.get("auto_download_mode") or "").strip().lower()
if requested_mode in MODE_CHOICES:
item["auto_download_mode"] = requested_mode
@@ -2574,7 +2577,10 @@ class WatchlistStore:
normalized_source_name = str(source_name or existing.get("auto_download_source_name") or defaults["auto_download_source_name"]).strip()
if not normalized_source_name:
normalized_source_name = defaults["auto_download_source_name"]
normalized_series = normalize_season(series or existing.get("auto_download_series") or defaults["auto_download_series"])
requested_series = series
if requested_series is None or str(requested_series).strip() == "":
requested_series = existing.get("auto_download_series")
normalized_series = normalize_season(requested_series)
normalized_offset = (
normalize_episode_offset(existing.get("auto_download_offset"))
if episode_offset is None
@@ -2825,7 +2831,7 @@ def download_watchlist_item(show_id, mode):
"title": item["title"],
"anime_name": item.get("auto_download_name") or item["title"],
"media_type": item.get("media_type") or "tv",
"season": item.get("auto_download_series") or "1",
"season": normalize_season(item.get("auto_download_series")),
"episode_offset": item.get("auto_download_offset"),
"mode": normalized_mode,
"quality": item.get("auto_download_quality")
@@ -2878,7 +2884,7 @@ def queue_watchlist_auto_download(item, refresh_source="manual"):
item.get("auto_download_name") or item.get("title") or "Anime",
sanitize_path_component(item.get("title") or "Anime", "Anime"),
)
series = normalize_season(item.get("auto_download_series") or "1")
series = normalize_season(item.get("auto_download_series"))
episode_offset = normalize_episode_offset(item.get("auto_download_offset"))
jobs = []
for episode_spec in specs: