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 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
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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):
|
||||||
|
|
|
||||||
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