[FEATURE] Add subscription_name override variable by default

This commit is contained in:
Jesse Bannon 2023-04-28 19:00:55 -07:00
parent d5d9978cdb
commit 6aea62fcc1
7 changed files with 62 additions and 15 deletions

View file

@ -110,9 +110,45 @@ class YTDLOptions(LiteralDictValidator):
"""
class OverridesVariables(DictFormatterValidator):
"""
Override variables that are automatically added to every subscription.
"""
def _add_override_variable(self, key_name: str, format_string: str, sanitize: bool = False):
if sanitize:
key_name = f"{key_name}_sanitized"
format_string = sanitize_filename(format_string)
self._value[key_name] = StringFormatterValidator(
name="__should_never_fail__",
value=format_string,
)
def __init__(self, name, value):
super().__init__(name, value)
# Add sanitized and non-sanitized override variables
for sanitize in [True, False]:
self._add_override_variable(
key_name="subscription_name",
format_string=self.subscription_name,
sanitize=sanitize
)
@property
def subscription_name(self) -> str:
"""
Returns
-------
Name of the subscription
"""
return self._root_name
# Disable for proper docstring formatting
# pylint: disable=line-too-long
class Overrides(DictFormatterValidator):
class Overrides(OverridesVariables):
"""
Optional. This section allows you to define variables that can be used in any string formatter.
For example, if you want your file and thumbnail files to match without copy-pasting a large
@ -142,16 +178,6 @@ class Overrides(DictFormatterValidator):
# pylint: enable=line-too-long
def _add_override_variable(self, key_name: str, format_string: str, sanitize: bool = False):
if sanitize:
key_name = f"{key_name}_sanitized"
format_string = sanitize_filename(format_string)
self._value[key_name] = StringFormatterValidator(
name="__should_never_fail__",
value=format_string,
)
def __init__(self, name, value):
super().__init__(name, value)

View file

@ -179,6 +179,16 @@ class DictValidator(Validator):
super().__init__(name, value)
self.__validator_dict: Dict[str, Validator] = {}
@final
@property
def _root_name(self) -> str:
"""
Returns
-------
"first" from the first.element.of.the.name
"""
return self._name.split(".")[0]
@final
@property
def _dict(self) -> dict:

View file

@ -22,6 +22,13 @@ def single_video_preset_dict(output_directory):
"ytdl_options": {
"format": "worst[ext=mp4]",
},
# test override variables added by ytdl-sub
"nfo_tags": {
"tags": {
"subscription_name": "{subscription_name}",
"subscription_name_sanitized": "{subscription_name_sanitized}",
}
},
# also test video tags
"video_tags": {
"tags": {

View file

@ -1,6 +1,6 @@
{
"JMC/JMC - Oblivion Mod Falcor p.1-thumb.jpg": "fb95b510681676e81c321171fc23143e",
"JMC/JMC - Oblivion Mod Falcor p.1.info.json": "e4eb0e33920f9b4dce1fcba0561614c9",
"JMC/JMC - Oblivion Mod Falcor p.1.info.json": "1b12a13b9db6d37b350a57c7e6f37026",
"JMC/JMC - Oblivion Mod Falcor p.1.mp4": "3744c49f2e447bd7712a5aad5ed36be2",
"JMC/JMC - Oblivion Mod Falcor p.1.nfo": "24cc4e17d2bebc89b2759ce5471d403e"
"JMC/JMC - Oblivion Mod Falcor p.1.nfo": "22e9d46ea7c243ac1f255adfd6c131ec"
}

View file

@ -1,6 +1,6 @@
{
"JMC/JMC - Oblivion Mod Falcor p.1-thumb.jpg": "fb95b510681676e81c321171fc23143e",
"JMC/JMC - Oblivion Mod Falcor p.1.info.json": "62101bc3899f69860004ddcfc061a28b",
"JMC/JMC - Oblivion Mod Falcor p.1.info.json": "57de511c9a97b1605165486875e73bc2",
"JMC/JMC - Oblivion Mod Falcor p.1.mp4": "3744c49f2e447bd7712a5aad5ed36be2",
"JMC/JMC - Oblivion Mod Falcor p.1.nfo": "24cc4e17d2bebc89b2759ce5471d403e"
"JMC/JMC - Oblivion Mod Falcor p.1.nfo": "d5cc3019c647f77ca42eb1ad1e777f6d"
}

View file

@ -11,5 +11,7 @@ Files created:
musicvideo:
album: Music Videos
artist: JMC
subscription_name: music_video_single_video_test
subscription_name_sanitized: music_video_single_video_test
title: Oblivion Mod "Falcor" p.1
year: 2010

View file

@ -11,5 +11,7 @@ Files created:
musicvideo:
album: Music Videos
artist: JMC
subscription_name: cli-dl-0302c976
subscription_name_sanitized: cli-dl-0302c976
title: Oblivion Mod "Falcor" p.1
year: 2010