subscription_name

This commit is contained in:
Jesse Bannon 2023-11-01 16:48:37 -07:00
parent 885b8999ad
commit 8998768b54
4 changed files with 63 additions and 30 deletions

View file

@ -10,6 +10,7 @@ from ytdl_sub.config.defaults import DEFAULT_FFPROBE_PATH
from ytdl_sub.config.defaults import DEFAULT_LOCK_DIRECTORY from ytdl_sub.config.defaults import DEFAULT_LOCK_DIRECTORY
from ytdl_sub.config.defaults import MAX_FILE_NAME_BYTES from ytdl_sub.config.defaults import MAX_FILE_NAME_BYTES
from ytdl_sub.prebuilt_presets import PREBUILT_PRESETS from ytdl_sub.prebuilt_presets import PREBUILT_PRESETS
from ytdl_sub.subscriptions.utils import SUBSCRIPTION_VALUE_CONFIG_KEY
from ytdl_sub.validators.file_path_validators import FFmpegFileValidator from ytdl_sub.validators.file_path_validators import FFmpegFileValidator
from ytdl_sub.validators.file_path_validators import FFprobeFileValidator from ytdl_sub.validators.file_path_validators import FFprobeFileValidator
from ytdl_sub.validators.strict_dict_validator import StrictDictValidator from ytdl_sub.validators.strict_dict_validator import StrictDictValidator
@ -106,7 +107,7 @@ class ConfigOptions(StrictDictValidator):
"ffprobe_path", "ffprobe_path",
"file_name_max_bytes", "file_name_max_bytes",
"experimental", "experimental",
"subscription_value", SUBSCRIPTION_VALUE_CONFIG_KEY,
} }
def __init__(self, name: str, value: Any): def __init__(self, name: str, value: Any):
@ -142,7 +143,7 @@ class ConfigOptions(StrictDictValidator):
key="file_name_max_bytes", validator=IntValidator, default=MAX_FILE_NAME_BYTES key="file_name_max_bytes", validator=IntValidator, default=MAX_FILE_NAME_BYTES
) )
self._subscription_value = self._validate_key_if_present( self._subscription_value = self._validate_key_if_present(
key="subscription_value", validator=StringValidator key=SUBSCRIPTION_VALUE_CONFIG_KEY, validator=StringValidator
) )
@property @property

View file

@ -9,6 +9,7 @@ from yt_dlp.utils import sanitize_filename
from ytdl_sub.config.defaults import DEFAULT_DOWNLOAD_ARCHIVE_NAME from ytdl_sub.config.defaults import DEFAULT_DOWNLOAD_ARCHIVE_NAME
from ytdl_sub.entries.entry import Entry from ytdl_sub.entries.entry import Entry
from ytdl_sub.subscriptions.utils import SUBSCRIPTION_NAME
from ytdl_sub.utils.exceptions import ValidationException from ytdl_sub.utils.exceptions import ValidationException
from ytdl_sub.validators.file_path_validators import OverridesStringFormatterFilePathValidator from ytdl_sub.validators.file_path_validators import OverridesStringFormatterFilePathValidator
from ytdl_sub.validators.file_path_validators import StringFormatterFileNameValidator from ytdl_sub.validators.file_path_validators import StringFormatterFileNameValidator
@ -173,6 +174,22 @@ class Overrides(DictFormatterValidator):
sanitize=True, sanitize=True,
) )
if SUBSCRIPTION_NAME not in self._value:
self._add_override_variable(
key_name=SUBSCRIPTION_NAME,
format_string=self.subscription_name,
sanitize=True,
)
@property
def subscription_name(self) -> str:
"""
Returns
-------
Name of the subscription
"""
return self._root_name
def apply_formatter( def apply_formatter(
self, self,
formatter: StringFormatterValidator, formatter: StringFormatterValidator,

View file

@ -9,6 +9,10 @@ from typing import final
from ytdl_sub.config.config_file import ConfigFile from ytdl_sub.config.config_file import ConfigFile
from ytdl_sub.config.preset_options import Overrides from ytdl_sub.config.preset_options import Overrides
from ytdl_sub.subscriptions.utils import SUBSCRIPTION_NAME
from ytdl_sub.subscriptions.utils import SUBSCRIPTION_VALUE
from ytdl_sub.subscriptions.utils import subscription_indent_variable_name
from ytdl_sub.subscriptions.utils import subscription_list_variable_name
from ytdl_sub.validators.string_formatter_validators import DictFormatterValidator from ytdl_sub.validators.string_formatter_validators import DictFormatterValidator
from ytdl_sub.validators.validators import DictValidator from ytdl_sub.validators.validators import DictValidator
from ytdl_sub.validators.validators import StringListValidator from ytdl_sub.validators.validators import StringListValidator
@ -16,29 +20,6 @@ from ytdl_sub.validators.validators import StringValidator
from ytdl_sub.validators.validators import Validator from ytdl_sub.validators.validators import Validator
def subscription_indent_variable_name(index: int) -> str:
"""
Parameters
----------
index
0th-based index
Returns
-------
subscription_index_i, where i is 1-based index
"""
return f"subscription_indent_{index + 1}"
def subscription_value_variable_name() -> str:
"""
Returns
-------
The override variable name containing the subscription value if present
"""
return "subscription_value"
class SubscriptionOutput(Validator, ABC): class SubscriptionOutput(Validator, ABC):
def __init__(self, name, value, presets: List[str], indent_overrides: List[str]): def __init__(self, name, value, presets: List[str], indent_overrides: List[str]):
super().__init__(name, value) super().__init__(name, value)
@ -95,7 +76,7 @@ class SubscriptionPresetDictValidator(SubscriptionOutput, DictValidator):
output_dict["overrides"] = dict( output_dict["overrides"] = dict(
output_dict.get("overrides", {}), output_dict.get("overrides", {}),
**self._indent_overrides_dict(), **self._indent_overrides_dict(),
**{"subscription_name": self.subscription_name}, **{SUBSCRIPTION_NAME: self.subscription_name},
) )
return {self.subscription_name: output_dict} return {self.subscription_name: output_dict}
@ -117,7 +98,7 @@ class SubscriptionLeafValidator(SubscriptionOutput, ABC):
f"used as a subscription name" f"used as a subscription name"
) )
self._overrides_to_add: Dict[str, str] = {"subscription_name": self.subscription_name} self._overrides_to_add: Dict[str, str] = {SUBSCRIPTION_NAME: self.subscription_name}
@final @final
def subscription_dicts(self, global_presets_to_apply: List[str]) -> Dict[str, Dict]: def subscription_dicts(self, global_presets_to_apply: List[str]) -> Dict[str, Dict]:
@ -153,7 +134,7 @@ class SubscriptionValueValidator(SubscriptionLeafValidator, StringValidator):
# TODO: Eventually delete in favor of {subscription_value} # TODO: Eventually delete in favor of {subscription_value}
if subscription_value: if subscription_value:
self._overrides_to_add[subscription_value] = self.value self._overrides_to_add[subscription_value] = self.value
self._overrides_to_add["subscription_value"] = self.value self._overrides_to_add[SUBSCRIPTION_VALUE] = self.value
class SubscriptionListValuesValidator(SubscriptionLeafValidator, StringListValidator): class SubscriptionListValuesValidator(SubscriptionLeafValidator, StringListValidator):
@ -176,8 +157,9 @@ class SubscriptionListValuesValidator(SubscriptionLeafValidator, StringListValid
for idx, list_value in enumerate(self.list): for idx, list_value in enumerate(self.list):
# Write the first list value into subscription_value as well # Write the first list value into subscription_value as well
if idx == 0: if idx == 0:
self._overrides_to_add["subscription_value"] = list_value.value self._overrides_to_add[SUBSCRIPTION_VALUE] = list_value.value
self._overrides_to_add[f"subscription_value_{idx + 1}"] = list_value.value
self._overrides_to_add[subscription_list_variable_name(index=idx)] = list_value.value
class SubscriptionWithOverridesValidator(SubscriptionLeafValidator, DictFormatterValidator): class SubscriptionWithOverridesValidator(SubscriptionLeafValidator, DictFormatterValidator):

View file

@ -0,0 +1,33 @@
SUBSCRIPTION_NAME = "subscription_name"
SUBSCRIPTION_VALUE = "subscription_value"
# Key used in configs, should delete at some point
SUBSCRIPTION_VALUE_CONFIG_KEY = "subscription_value"
def subscription_indent_variable_name(index: int) -> str:
"""
Parameters
----------
index
0th-based index
Returns
-------
subscription_index_i, where i is 1-based index
"""
return f"subscription_indent_{index + 1}"
def subscription_list_variable_name(index: int) -> str:
"""
Parameters
----------
index
0th-based index
Returns
-------
subscription_value_i, where i is 1-based index
"""
return f"subscription_value_{index + 1}"