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 MAX_FILE_NAME_BYTES
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 FFprobeFileValidator
from ytdl_sub.validators.strict_dict_validator import StrictDictValidator
@ -106,7 +107,7 @@ class ConfigOptions(StrictDictValidator):
"ffprobe_path",
"file_name_max_bytes",
"experimental",
"subscription_value",
SUBSCRIPTION_VALUE_CONFIG_KEY,
}
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
)
self._subscription_value = self._validate_key_if_present(
key="subscription_value", validator=StringValidator
key=SUBSCRIPTION_VALUE_CONFIG_KEY, validator=StringValidator
)
@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.entries.entry import Entry
from ytdl_sub.subscriptions.utils import SUBSCRIPTION_NAME
from ytdl_sub.utils.exceptions import ValidationException
from ytdl_sub.validators.file_path_validators import OverridesStringFormatterFilePathValidator
from ytdl_sub.validators.file_path_validators import StringFormatterFileNameValidator
@ -173,6 +174,22 @@ class Overrides(DictFormatterValidator):
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(
self,
formatter: StringFormatterValidator,

View file

@ -9,6 +9,10 @@ from typing import final
from ytdl_sub.config.config_file import ConfigFile
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.validators import DictValidator
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
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):
def __init__(self, name, value, presets: List[str], indent_overrides: List[str]):
super().__init__(name, value)
@ -95,7 +76,7 @@ class SubscriptionPresetDictValidator(SubscriptionOutput, DictValidator):
output_dict["overrides"] = dict(
output_dict.get("overrides", {}),
**self._indent_overrides_dict(),
**{"subscription_name": self.subscription_name},
**{SUBSCRIPTION_NAME: self.subscription_name},
)
return {self.subscription_name: output_dict}
@ -117,7 +98,7 @@ class SubscriptionLeafValidator(SubscriptionOutput, ABC):
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
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}
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
class SubscriptionListValuesValidator(SubscriptionLeafValidator, StringListValidator):
@ -176,8 +157,9 @@ class SubscriptionListValuesValidator(SubscriptionLeafValidator, StringListValid
for idx, list_value in enumerate(self.list):
# Write the first list value into subscription_value as well
if idx == 0:
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_VALUE] = list_value.value
self._overrides_to_add[subscription_list_variable_name(index=idx)] = list_value.value
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}"