This commit is contained in:
Jesse Bannon 2022-09-29 00:10:24 -07:00
parent aac0f965fb
commit 42b5802778
6 changed files with 39 additions and 33 deletions

View file

@ -1,25 +1,26 @@
import pathlib
from pathlib import Path from pathlib import Path
from typing import Any, Dict from typing import Any
from typing import Dict
import mergedeep import mergedeep
from ytdl_sub.prebuilt_presets.tv_show.out import PrebuiltKodiTVShowPresets from ytdl_sub.prebuilt_presets.tv_show.out import PrebuiltKodiTVShowPresets
from ytdl_sub.utils.yaml import load_yaml from ytdl_sub.utils.yaml import load_yaml
import pathlib
def _merge_presets() -> Dict[str, Any]: def _merge_presets() -> Dict[str, Any]:
merged_configs: Dict[str, Any] = {} merged_configs: Dict[str, Any] = {}
# Get all presets from the loose YAML files # Get all presets from the loose YAML files
for file in pathlib.Path(__file__).parent.resolve().rglob("*"): for file in pathlib.Path(__file__).parent.resolve().rglob("*"):
if file.is_file() and file.name.endswith('yaml'): if file.is_file() and file.name.endswith("yaml"):
mergedeep.merge(merged_configs, load_yaml(file)) mergedeep.merge(merged_configs, load_yaml(file))
# Get all presets from published preset configs # Get all presets from published preset configs
mergedeep.merge(merged_configs, *PrebuiltKodiTVShowPresets.get_presets()) mergedeep.merge(merged_configs, *PrebuiltKodiTVShowPresets.get_presets())
return merged_configs['presets'] return merged_configs["presets"]
PREBUILT_PRESETS: Dict[str, Any] = _merge_presets() PREBUILT_PRESETS: Dict[str, Any] = _merge_presets()

View file

@ -7,7 +7,7 @@ presets:
download_strategy: "source" download_strategy: "source"
url: "{url}" url: "{url}"
playlist_thumbnails: playlist_thumbnails:
- name: "{poster_file_name}" - name: "{tv_show_poster_file_name}"
uid: "latest_entry" uid: "latest_entry"
#################################################################################################### ####################################################################################################
@ -17,9 +17,9 @@ presets:
download_strategy: "source" download_strategy: "source"
url: "{url}" url: "{url}"
playlist_thumbnails: playlist_thumbnails:
- name: "{poster_file_name}" - name: "{tv_show_poster_file_name}"
uid: "avatar_uncropped" uid: "avatar_uncropped"
- name: "{fanart_file_name}" - name: "{tv_show_fanart_file_name}"
uid: "banner_uncropped" uid: "banner_uncropped"
#################################################################################################### ####################################################################################################
@ -40,7 +40,7 @@ presets:
collection_season_number: "1" collection_season_number: "1"
collection_season_number_padded: "01" collection_season_number_padded: "01"
playlist_thumbnails: playlist_thumbnails:
- name: "{season_poster_name}" - name: "{season_poster_file_name}"
uid: "latest_entry" uid: "latest_entry"
output_directory_nfo_tags: output_directory_nfo_tags:
@ -58,7 +58,7 @@ presets:
collection_season_number: "2" collection_season_number: "2"
collection_season_number_padded: "02" collection_season_number_padded: "02"
playlist_thumbnails: playlist_thumbnails:
- name: "{season_poster_name}" - name: "{season_poster_file_name}"
uid: "latest_entry" uid: "latest_entry"
output_directory_nfo_tags: output_directory_nfo_tags:
@ -76,7 +76,7 @@ presets:
collection_season_number: "3" collection_season_number: "3"
collection_season_number_padded: "03" collection_season_number_padded: "03"
playlist_thumbnails: playlist_thumbnails:
- name: "{season_poster_name}" - name: "{season_poster_file_name}"
uid: "latest_entry" uid: "latest_entry"
output_directory_nfo_tags: output_directory_nfo_tags:
@ -94,7 +94,7 @@ presets:
collection_season_number: "4" collection_season_number: "4"
collection_season_number_padded: "04" collection_season_number_padded: "04"
playlist_thumbnails: playlist_thumbnails:
- name: "{season_poster_name}" - name: "{season_poster_file_name}"
uid: "latest_entry" uid: "latest_entry"
output_directory_nfo_tags: output_directory_nfo_tags:
@ -112,7 +112,7 @@ presets:
collection_season_number: "5" collection_season_number: "5"
collection_season_number_padded: "05" collection_season_number_padded: "05"
playlist_thumbnails: playlist_thumbnails:
- name: "{season_poster_name}" - name: "{season_poster_file_name}"
uid: "latest_entry" uid: "latest_entry"
output_directory_nfo_tags: output_directory_nfo_tags:

View file

@ -38,6 +38,7 @@ presets:
episode-by-month-day: episode-by-month-day:
preset: preset:
- "season-by-year" - "season-by-year"
- "episode-base"
overrides: overrides:
episode_number: "{upload_month}{upload_day_padded}" episode_number: "{upload_month}{upload_day_padded}"
episode_number_padded: "{upload_month_padded}{upload_day_padded}" episode_number_padded: "{upload_month_padded}{upload_day_padded}"
@ -45,16 +46,21 @@ presets:
episode-by-month-day-reversed: episode-by-month-day-reversed:
preset: preset:
- "season-by-year" - "season-by-year"
- "episode-base"
overrides: overrides:
episode_number: "{upload_day_of_year_reversed}" episode_number: "{upload_day_of_year_reversed}"
episode_number_padded: "{upload_day_of_year_reversed_padded}" episode_number_padded: "{upload_day_of_year_reversed_padded}"
episode-by-year-month-day: episode-by-year-month-day:
preset:
- "episode-base"
overrides: overrides:
episode_number: "{upload_year_truncated}{upload_month_padded}{upload_day_padded}" episode_number: "{upload_year_truncated}{upload_month_padded}{upload_day_padded}"
episode_number_padded: "{episode_number}" episode_number_padded: "{episode_number}"
episode-by-year-month-day-reversed: episode-by-year-month-day-reversed:
preset:
- "episode-base"
overrides: overrides:
episode_number: "{upload_year_truncated_reversed}{upload_month_reversed_padded}{upload_day_reversed_padded}" episode_number: "{upload_year_truncated_reversed}{upload_month_reversed_padded}{upload_day_reversed_padded}"
episode_number_padded: "{episode_number}" episode_number_padded: "{episode_number}"

View file

@ -2,11 +2,15 @@ presets:
plex-tv-show: plex-tv-show:
overrides: overrides:
season_poster_name: "Season{season_number_padded}.jpg" tv_show_poster_file_name: "show.jpg"
tv_show_fanart_file_name: "fanart.jpg"
season_poster_file_name: "Season{season_number_padded}.jpg"
jellyfin-tv-show: jellyfin-tv-show:
overrides: overrides:
season_poster_name: "season{season_number_padded}-poster.jpg" tv_show_poster_file_name: "poster.jpg"
tv_show_fanart_file_name: "fanart.jpg"
season_poster_file_name: "season{season_number_padded}-poster.jpg"
nfo_tags: nfo_tags:
nfo_name: "{episode_file_path}.nfo" nfo_name: "{episode_file_path}.nfo"

View file

@ -1,4 +1,5 @@
from typing import Any, Dict from typing import Any
from typing import Dict
from typing import List from typing import List
Preset = Dict[str, Any] Preset = Dict[str, Any]
@ -8,13 +9,7 @@ class PrebuiltPresets:
BASE_PRESET: str BASE_PRESET: str
def _preset(self, name: str, presets: List[str]) -> Preset: def _preset(self, name: str, presets: List[str]) -> Preset:
return { return {"presets": {name: {"preset": [self.BASE_PRESET] + presets}}}
"presets": {
name: {
"preset": [self.BASE_PRESET] + presets
}
}
}
def _tv_show_url(self, name: str) -> Preset: def _tv_show_url(self, name: str) -> Preset:
""" """

View file

@ -6,26 +6,26 @@ from ytdl_sub.config.config_file import ConfigFile
from ytdl_sub.config.preset import Preset from ytdl_sub.config.preset import Preset
from ytdl_sub.prebuilt_presets import PrebuiltKodiTVShowPresets from ytdl_sub.prebuilt_presets import PrebuiltKodiTVShowPresets
@pytest.fixture @pytest.fixture
def config() -> ConfigFile: def config() -> ConfigFile:
return ConfigFile( return ConfigFile(
name="config", value={"configuration": {"working_directory": "test"}, "presets": {}} name="config", value={"configuration": {"working_directory": "test"}, "presets": {}}
) )
class TestPrebuiltTVShowPresets: class TestPrebuiltTVShowPresets:
@pytest.mark.parametrize("preset_name", PrebuiltKodiTVShowPresets.get_preset_names()) @pytest.mark.parametrize("preset_name", PrebuiltKodiTVShowPresets.get_preset_names())
def test_presets_compile(self, config, preset_name: str): def test_presets_compile(self, config, preset_name: str):
Preset.from_dict( Preset.from_dict(
config=config, config=config,
preset_name=f"{preset_name}-test", preset_name=f"{preset_name}-test",
preset_dict={ preset_dict={
'preset': preset_name, "preset": preset_name,
'overrides': { "overrides": {
'tv_show_name': 'test tv show', "url": "https://your.name.here",
'tv_show_directory': 'output_path' "tv_show_name": "test tv show",
} "tv_show_directory": "output_path",
} },
},
) )