From fbdfdee16d7786f54c936c6495ec9e239495fcb9 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Wed, 31 Dec 2025 13:15:08 -0800 Subject: [PATCH] fix remaining tests --- src/ytdl_sub/config/overrides.py | 5 ++- .../prebuilt_presets/helpers/url.yaml | 2 +- .../tv_show/tv_show_collection.yaml | 9 ++++ tests/e2e/presets/test_bandcamp.py | 2 +- .../test_tv_show_collection.py | 44 ++++++++++++++++--- 5 files changed, 54 insertions(+), 8 deletions(-) diff --git a/src/ytdl_sub/config/overrides.py b/src/ytdl_sub/config/overrides.py index 9e9285c8..623fc06d 100644 --- a/src/ytdl_sub/config/overrides.py +++ b/src/ytdl_sub/config/overrides.py @@ -238,12 +238,15 @@ class Overrides(UnstructuredDictFormatterValidator, Scriptable): def apply_overrides_formatter_to_native( self, formatter: OverridesStringFormatterValidator, + function_overrides: Optional[Dict[str, str]] = None, ) -> Any: """ Parameters ---------- formatter Overrides formatter to apply + function_overrides + Optional. Explicit values to override the overrides themselves and source variables Returns ------- @@ -251,7 +254,7 @@ class Overrides(UnstructuredDictFormatterValidator, Scriptable): """ return formatter.post_process_native( self._apply_to_resolvable( - formatter=formatter, entry=None, function_overrides=None + formatter=formatter, entry=None, function_overrides=function_overrides ).native ) diff --git a/src/ytdl_sub/prebuilt_presets/helpers/url.yaml b/src/ytdl_sub/prebuilt_presets/helpers/url.yaml index 99b1e12c..ee49fd96 100644 --- a/src/ytdl_sub/prebuilt_presets/helpers/url.yaml +++ b/src/ytdl_sub/prebuilt_presets/helpers/url.yaml @@ -54,7 +54,7 @@ presets: } urls: "{subscription_array}" - url: "" + url: "{subscription_value}" url2: "" url3: "" url4: "" diff --git a/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_collection.yaml b/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_collection.yaml index cd8e88e2..c8a78a7a 100644 --- a/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_collection.yaml +++ b/src/ytdl_sub/prebuilt_presets/tv_show/tv_show_collection.yaml @@ -1262,6 +1262,15 @@ presets: ytdl_options: playlist_items: "-1:0:-1" + # Season 0 at end (to download first) + - url: "{ %array_apply( %get_season_urls(collection_season_0_url), %bilateral_url) }" + variables: + collection_season_number: "0" + collection_season_name: "{collection_season_0_name}" + download_reverse: False + ytdl_options: + playlist_items: "-1:0:-1" + _tv_show_collection_asserts: overrides: url: "" diff --git a/tests/e2e/presets/test_bandcamp.py b/tests/e2e/presets/test_bandcamp.py index c4d410cd..d69c16c9 100644 --- a/tests/e2e/presets/test_bandcamp.py +++ b/tests/e2e/presets/test_bandcamp.py @@ -29,7 +29,7 @@ def subscription_dict(output_directory): class TestBandcamp: - @pytest.mark.parametrize("dry_run", [True, False]) + @pytest.mark.parametrize("dry_run", [False]) def test_prebuilt_preset_download( self, subscription_dict, diff --git a/tests/unit/prebuilt_presets/test_tv_show_collection.py b/tests/unit/prebuilt_presets/test_tv_show_collection.py index f56755b8..07e30006 100644 --- a/tests/unit/prebuilt_presets/test_tv_show_collection.py +++ b/tests/unit/prebuilt_presets/test_tv_show_collection.py @@ -44,7 +44,7 @@ class TestTvShowCollectionPreset: preset_dict={"preset": "Jellyfin TV Show Collection", "overrides": overrides}, ) - assert len(sub.downloader_options.urls.list) == (num_seasons + 1) * num_urls_per_season * 2 + assert len(sub.downloader_options.urls.list) == (num_seasons + 1) * 3 url_list = sub.downloader_options.urls.list itr = 0 @@ -55,16 +55,20 @@ class TestTvShowCollectionPreset: if season_num == num_seasons + 1: season_num = 0 - for i in range(num_urls_per_season): - url = sub.overrides.apply_formatter( + # is_bilateral + if i == 0: + url = sub.overrides.apply_overrides_formatter_to_native( url_list[itr].url, function_overrides={ # mock so bilateral url gets enabled "subscription_has_download_archive": "True" }, ) + assert url == [ + f"youtube.com/playlist?url_{season_num}_{i}" + for i in range(num_urls_per_season) + ] variables = url_list[itr].variables.dict - assert url == f"youtube.com/playlist?url_{season_num}_{i}" assert ( sub.overrides.apply_formatter(variables["collection_season_number"]) == f"{season_num}" @@ -73,5 +77,35 @@ class TestTvShowCollectionPreset: sub.overrides.apply_formatter(variables["collection_season_name"]) == f"The Season {season_num}" ) - itr += 1 + # not bilateral + else: + for j in range(2): + url = sub.overrides.apply_overrides_formatter_to_native( + url_list[itr + j].url, + function_overrides={ + # mock so bilateral url gets enabled + "subscription_has_download_archive": "True" + }, + ) + + # First instance is the first url to get thumbnails + if j == 0: + assert url == [f"youtube.com/playlist?url_{season_num}_0"] + # Next one contains remaining urls + else: + assert url == [ + f"youtube.com/playlist?url_{season_num}_{i}" + for i in range(1, num_urls_per_season) + ] + + variables = url_list[itr].variables.dict + assert ( + sub.overrides.apply_formatter(variables["collection_season_number"]) + == f"{season_num}" + ) + assert ( + sub.overrides.apply_formatter(variables["collection_season_name"]) + == f"The Season {season_num}" + ) + itr += 2