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"
- "season_by_year__episode_by_month_day_reversed"
- "Only Recent"
overrides:
date_range: "2months"

View file

@ -1,27 +1,29 @@
# Subscriptions using custom presets made in `tv_show_config.yaml`
TV Show Full Archive:
= Documentaries | TV-PG:
= Documentaries | = TV-PG:
"NOVA PBS": "https://www.youtube.com/@novapbs"
"National Geographic": "https://www.youtube.com/@NatGeo"
"Cosmos - What If": "https://www.youtube.com/playlist?list=PLZdXRHYAVxTJno6oFF9nLGuwXNGYHmE8U"
= Kids | TV-Y:
= Kids | = TV-Y:
"Jake Trains": "https://www.youtube.com/@JakeTrains"
"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":
# Can define a subscription using 'preset' syntax. Needed for using multiple
# urls in a single TV show
overrides:
url: "https://www.youtube.com/@gardeningwithciscoe4430"
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"
- "https://www.youtube.com/@gardeningwithciscoe4430"
- "https://www.youtube.com/playlist?list=PLi8V8UemxeG6lo5if5H5g5EbsteELcb0_"
- "https://www.youtube.com/playlist?list=PLsJlQSR-KjmaQqqJ9jq18cF6XXXAR4kyn"
- "https://www.youtube.com/watch?v=2vq-vPubS5I"
TV Show Only Recent:
= News | TV-14:
"BBC": "https://www.youtube.com/@BBCNews"
= News | = TV-14:
# 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"
"Whitehouse": "https://www.bitchute.com/channel/zWsYVmCOu4JA/" # Supports non-YT sites

View file

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

View file

@ -183,6 +183,11 @@ def tv_show_subscriptions_path() -> Path:
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()
def default_config(working_directory) -> ConfigFile:
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")
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(
config=tv_show_config, subscription_path=tv_show_subscriptions_path
config=config_file, subscription_path=tv_show_subscriptions_path
)
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"
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):
subs = Subscription.from_file_path(
config=default_config, subscription_path=music_subscriptions_path