[BACKEND] Move more logic into subscription (#283)

This commit is contained in:
Jesse Bannon 2022-10-14 16:53:53 -07:00 committed by GitHub
parent 8da38a806e
commit fcdcb509c4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 47 deletions

View file

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

View file

@ -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:
"""

View file

@ -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