wiop
This commit is contained in:
parent
aac0f965fb
commit
42b5802778
6 changed files with 39 additions and 33 deletions
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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}"
|
||||||
|
|
@ -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"
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
}
|
},
|
||||||
)
|
},
|
||||||
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue