From fcdcb509c407f9b996aaf7f5802b7e1aba0c3eea Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Fri, 14 Oct 2022 16:53:53 -0700 Subject: [PATCH] [BACKEND] Move more logic into subscription (#283) --- src/ytdl_sub/cli/main.py | 26 ++++++------------- src/ytdl_sub/config/preset.py | 29 --------------------- src/ytdl_sub/subscriptions/subscription.py | 30 ++++++++++++++++++++++ 3 files changed, 38 insertions(+), 47 deletions(-) diff --git a/src/ytdl_sub/cli/main.py b/src/ytdl_sub/cli/main.py index 7b42ac27..aa02eafd 100644 --- a/src/ytdl_sub/cli/main.py +++ b/src/ytdl_sub/cli/main.py @@ -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) diff --git a/src/ytdl_sub/config/preset.py b/src/ytdl_sub/config/preset.py index 0708cb9f..077443ee 100644 --- a/src/ytdl_sub/config/preset.py +++ b/src/ytdl_sub/config/preset.py @@ -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: """ diff --git a/src/ytdl_sub/subscriptions/subscription.py b/src/ytdl_sub/subscriptions/subscription.py index c70a3a27..5c835a02 100644 --- a/src/ytdl_sub/subscriptions/subscription.py +++ b/src/ytdl_sub/subscriptions/subscription.py @@ -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