This commit is contained in:
Jesse Bannon 2023-11-01 21:27:49 -07:00
parent 85673fd9d7
commit e1dd13c032
5 changed files with 80 additions and 33 deletions

View file

@ -95,3 +95,6 @@ presets:
- "no_shorts" - "no_shorts"
- "season_by_year__episode_by_month_day_reversed" - "season_by_year__episode_by_month_day_reversed"
- "Only Recent" - "Only Recent"
overrides:
date_range: "2months"

View file

@ -1,27 +1,29 @@
# Subscriptions using custom presets made in `tv_show_config.yaml` # Subscriptions using custom presets made in `tv_show_config.yaml`
TV Show Full Archive: TV Show Full Archive:
= Documentaries | TV-PG: = Documentaries | = TV-PG:
"NOVA PBS": "https://www.youtube.com/@novapbs" "NOVA PBS": "https://www.youtube.com/@novapbs"
"National Geographic": "https://www.youtube.com/@NatGeo" "National Geographic": "https://www.youtube.com/@NatGeo"
"Cosmos - What If": "https://www.youtube.com/playlist?list=PLZdXRHYAVxTJno6oFF9nLGuwXNGYHmE8U" "Cosmos - What If": "https://www.youtube.com/playlist?list=PLZdXRHYAVxTJno6oFF9nLGuwXNGYHmE8U"
= Kids | TV-Y: = Kids | = TV-Y:
"Jake Trains": "https://www.youtube.com/@JakeTrains" "Jake Trains": "https://www.youtube.com/@JakeTrains"
"Kids Toys Play": "https://www.youtube.com/@KidsToysPlayChannel" "Kids Toys Play": "https://www.youtube.com/@KidsToysPlayChannel"
= Gardening | TV-Y: = Gardening | = TV-Y:
# TV Show presets support multiple URLs as a list
"Gardening with Ciscoe": "Gardening with Ciscoe":
# Can define a subscription using 'preset' syntax. Needed for using multiple - "https://www.youtube.com/@gardeningwithciscoe4430"
# urls in a single TV show - "https://www.youtube.com/playlist?list=PLi8V8UemxeG6lo5if5H5g5EbsteELcb0_"
overrides: - "https://www.youtube.com/playlist?list=PLsJlQSR-KjmaQqqJ9jq18cF6XXXAR4kyn"
url: "https://www.youtube.com/@gardeningwithciscoe4430" - "https://www.youtube.com/watch?v=2vq-vPubS5I"
url2: "https://www.youtube.com/playlist?list=PLi8V8UemxeG6lo5if5H5g5EbsteELcb0_"
url3: "https://www.youtube.com/playlist?list=PLsJlQSR-KjmaQqqJ9jq18cF6XXXAR4kyn"
url4: "https://www.youtube.com/watch?v=2vq-vPubS5I"
TV Show Only Recent: TV Show Only Recent:
= News | TV-14: = News | = TV-14:
"BBC": "https://www.youtube.com/@BBCNews" # Subscriptions can prefix a tilda to specify override variables
# to set only for that subscriptions
"~BBC News":
url: "https://www.youtube.com/@BBCNews"
date_range: "2weeks"
"Frontline PBS": "https://www.youtube.com/@frontline" "Frontline PBS": "https://www.youtube.com/@frontline"
"Whitehouse": "https://www.bitchute.com/channel/zWsYVmCOu4JA/" # Supports non-YT sites "Whitehouse": "https://www.bitchute.com/channel/zWsYVmCOu4JA/" # Supports non-YT sites

View file

@ -61,26 +61,45 @@ presets:
- url: "{url20}" - url: "{url20}"
overrides: overrides:
subscription_value: "" subscription_value: ""
subscription_value_2: ""
subscription_value_3: ""
subscription_value_4: ""
subscription_value_5: ""
subscription_value_6: ""
subscription_value_7: ""
subscription_value_8: ""
subscription_value_9: ""
subscription_value_10: ""
subscription_value_11: ""
subscription_value_12: ""
subscription_value_13: ""
subscription_value_14: ""
subscription_value_15: ""
subscription_value_16: ""
subscription_value_17: ""
subscription_value_18: ""
subscription_value_19: ""
subscription_value_20: ""
url: "{subscription_value}" url: "{subscription_value}"
url2: "" url2: "{subscription_value_2}"
url3: "" url3: "{subscription_value_3}"
url4: "" url4: "{subscription_value_4}"
url5: "" url5: "{subscription_value_5}"
url6: "" url6: "{subscription_value_6}"
url7: "" url7: "{subscription_value_7}"
url8: "" url8: "{subscription_value_8}"
url9: "" url9: "{subscription_value_9}"
url10: "" url10: "{subscription_value_10}"
url11: "" url11: "{subscription_value_11}"
url12: "" url12: "{subscription_value_12}"
url13: "" url13: "{subscription_value_13}"
url14: "" url14: "{subscription_value_14}"
url15: "" url15: "{subscription_value_15}"
url16: "" url16: "{subscription_value_16}"
url17: "" url17: "{subscription_value_17}"
url18: "" url18: "{subscription_value_18}"
url19: "" url19: "{subscription_value_19}"
url20: "" url20: "{subscription_value_20}"
#################################################################################################### ####################################################################################################

View file

@ -183,6 +183,11 @@ def tv_show_subscriptions_path() -> Path:
return Path("examples/tv_show_subscriptions.yaml") return Path("examples/tv_show_subscriptions.yaml")
@pytest.fixture()
def advanced_tv_show_subscriptions_path() -> Path:
return Path("examples/advanced/tv_show_subscriptions.yaml")
@pytest.fixture() @pytest.fixture()
def default_config(working_directory) -> ConfigFile: def default_config(working_directory) -> ConfigFile:
return ConfigFile.from_dict({"configuration": {"working_directory": working_directory}}) return ConfigFile.from_dict({"configuration": {"working_directory": working_directory}})

View file

@ -489,9 +489,9 @@ def test_subscription_file_invalid_form(config_file: ConfigFile):
_ = Subscription.from_file_path(config=config_file, subscription_path="mocked") _ = Subscription.from_file_path(config=config_file, subscription_path="mocked")
def test_tv_show_subscriptions(tv_show_config: ConfigFile, tv_show_subscriptions_path: Path): def test_tv_show_subscriptions(config_file: ConfigFile, tv_show_subscriptions_path: Path):
subs = Subscription.from_file_path( subs = Subscription.from_file_path(
config=tv_show_config, subscription_path=tv_show_subscriptions_path config=config_file, subscription_path=tv_show_subscriptions_path
) )
assert len(subs) == 6 assert len(subs) == 6
@ -505,6 +505,24 @@ def test_tv_show_subscriptions(tv_show_config: ConfigFile, tv_show_subscriptions
assert jake_train_overrides["subscription_indent_2"] == "TV-Y" assert jake_train_overrides["subscription_indent_2"] == "TV-Y"
def test_advanced_tv_show_subscriptions(
tv_show_config: ConfigFile, advanced_tv_show_subscriptions_path: Path
):
subs = Subscription.from_file_path(
config=tv_show_config, subscription_path=advanced_tv_show_subscriptions_path
)
assert len(subs) == 9
assert subs[3].name == "Jake Trains"
jake_train_overrides = subs[3].overrides.dict_with_format_strings
assert jake_train_overrides["subscription_name"] == "Jake Trains"
assert jake_train_overrides["subscription_name_sanitized"] == "Jake Trains"
assert jake_train_overrides["subscription_value"] == "https://www.youtube.com/@JakeTrains"
assert jake_train_overrides["subscription_indent_1"] == "Kids"
assert jake_train_overrides["subscription_indent_2"] == "TV-Y"
def test_music_subscriptions(default_config: ConfigFile, music_subscriptions_path: Path): def test_music_subscriptions(default_config: ConfigFile, music_subscriptions_path: Path):
subs = Subscription.from_file_path( subs = Subscription.from_file_path(
config=default_config, subscription_path=music_subscriptions_path config=default_config, subscription_path=music_subscriptions_path