[BACKEND] Move more logic into subscription (#283)
This commit is contained in:
parent
8da38a806e
commit
fcdcb509c4
3 changed files with 38 additions and 47 deletions
|
|
@ -12,7 +12,6 @@ from typing import Tuple
|
|||
from ytdl_sub.cli.download_args_parser import DownloadArgsParser
|
||||
from ytdl_sub.cli.main_args_parser import parser
|
||||
from ytdl_sub.config.config_file import ConfigFile
|
||||
from ytdl_sub.config.preset import Preset
|
||||
from ytdl_sub.subscriptions.subscription import Subscription
|
||||
from ytdl_sub.utils.exceptions import ValidationException
|
||||
from ytdl_sub.utils.file_handler import FileHandlerTransactionLog
|
||||
|
|
@ -38,17 +37,15 @@ def _download_subscriptions_from_yaml_files(
|
|||
-------
|
||||
List of (subscription, transaction_log)
|
||||
"""
|
||||
preset_paths: List[str] = args.subscription_paths
|
||||
presets: List[Preset] = []
|
||||
subscription_paths: List[str] = args.subscription_paths
|
||||
subscriptions: List[Subscription] = []
|
||||
output: List[Tuple[Subscription, FileHandlerTransactionLog]] = []
|
||||
|
||||
# Load all of the presets first to perform all validation before downloading
|
||||
for preset_path in preset_paths:
|
||||
presets += Preset.from_file_path(config=config, subscription_path=preset_path)
|
||||
|
||||
for preset in presets:
|
||||
subscription = Subscription.from_preset(preset=preset, config=config)
|
||||
# Load all of the subscriptions first to perform all validation before downloading
|
||||
for path in subscription_paths:
|
||||
subscriptions += Subscription.from_file_path(config=config, subscription_path=path)
|
||||
|
||||
for subscription in subscriptions:
|
||||
logger.info("Beginning subscription download for %s", subscription.name)
|
||||
transaction_log = subscription.download(dry_run=args.dry_run)
|
||||
|
||||
|
|
@ -80,17 +77,10 @@ def _download_subscription_from_cli(
|
|||
extra_arguments=extra_args, config_options=config.config_options
|
||||
)
|
||||
subscription_args_dict = dl_args_parser.to_subscription_dict()
|
||||
|
||||
subscription_name = f"cli-dl-{dl_args_parser.get_args_hash()}"
|
||||
subscription_preset = Preset.from_dict(
|
||||
config=config,
|
||||
preset_name=subscription_name,
|
||||
preset_dict=subscription_args_dict,
|
||||
)
|
||||
|
||||
subscription = Subscription.from_preset(
|
||||
preset=subscription_preset,
|
||||
config=config,
|
||||
subscription = Subscription.from_dict(
|
||||
config=config, preset_name=subscription_name, preset_dict=subscription_args_dict
|
||||
)
|
||||
|
||||
return subscription, subscription.download(dry_run=args.dry_run)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ from ytdl_sub.entries.entry import Entry
|
|||
from ytdl_sub.plugins.plugin import Plugin
|
||||
from ytdl_sub.plugins.plugin import PluginOptions
|
||||
from ytdl_sub.utils.yaml import dump_yaml
|
||||
from ytdl_sub.utils.yaml import load_yaml
|
||||
from ytdl_sub.validators.strict_dict_validator import StrictDictValidator
|
||||
from ytdl_sub.validators.string_formatter_validators import DictFormatterValidator
|
||||
from ytdl_sub.validators.string_formatter_validators import OverridesDictFormatterValidator
|
||||
|
|
@ -385,34 +384,6 @@ class Preset(StrictDictValidator):
|
|||
"""
|
||||
return cls(config=config, name=preset_name, value=preset_dict)
|
||||
|
||||
@classmethod
|
||||
def from_file_path(cls, config: ConfigFile, subscription_path: str) -> List["Preset"]:
|
||||
"""
|
||||
Parameters
|
||||
----------
|
||||
config:
|
||||
Validated instance of the config
|
||||
subscription_path:
|
||||
File path to the subscription yaml file
|
||||
|
||||
Returns
|
||||
-------
|
||||
List of presets, for each one in the subscription yaml
|
||||
"""
|
||||
subscription_dict = load_yaml(file_path=subscription_path)
|
||||
|
||||
subscriptions: List["Preset"] = []
|
||||
for subscription_key, subscription_object in subscription_dict.items():
|
||||
subscriptions.append(
|
||||
Preset.from_dict(
|
||||
config=config,
|
||||
preset_name=subscription_key,
|
||||
preset_dict=subscription_object,
|
||||
)
|
||||
)
|
||||
|
||||
return subscriptions
|
||||
|
||||
@property
|
||||
def yaml(self) -> str:
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
from typing import Dict
|
||||
from typing import List
|
||||
|
||||
from ytdl_sub.config.config_file import ConfigFile
|
||||
from ytdl_sub.config.preset import Preset
|
||||
from ytdl_sub.subscriptions.subscription_download import SubscriptionDownload
|
||||
from ytdl_sub.utils.yaml import load_yaml
|
||||
|
||||
|
||||
class Subscription(SubscriptionDownload):
|
||||
|
|
@ -54,3 +56,31 @@ class Subscription(SubscriptionDownload):
|
|||
),
|
||||
config=config,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def from_file_path(cls, config: ConfigFile, subscription_path: str) -> List["Subscription"]:
|
||||
"""
|
||||
Parameters
|
||||
----------
|
||||
config:
|
||||
Validated instance of the config
|
||||
subscription_path:
|
||||
File path to the subscription yaml file
|
||||
|
||||
Returns
|
||||
-------
|
||||
List of subscriptions, for each one in the subscription yaml
|
||||
"""
|
||||
subscription_dict = load_yaml(file_path=subscription_path)
|
||||
|
||||
subscriptions: List["Subscription"] = []
|
||||
for subscription_key, subscription_object in subscription_dict.items():
|
||||
subscriptions.append(
|
||||
cls.from_dict(
|
||||
config=config,
|
||||
preset_name=subscription_key,
|
||||
preset_dict=subscription_object,
|
||||
)
|
||||
)
|
||||
|
||||
return subscriptions
|
||||
|
|
|
|||
Loading…
Reference in a new issue