subscription_name
This commit is contained in:
parent
885b8999ad
commit
8998768b54
4 changed files with 63 additions and 30 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
33
src/ytdl_sub/subscriptions/utils.py
Normal file
33
src/ytdl_sub/subscriptions/utils.py
Normal 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}"
|
||||
Loading…
Reference in a new issue