[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.download_args_parser import DownloadArgsParser
|
||||||
from ytdl_sub.cli.main_args_parser import parser
|
from ytdl_sub.cli.main_args_parser import parser
|
||||||
from ytdl_sub.config.config_file import ConfigFile
|
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.subscriptions.subscription import Subscription
|
||||||
from ytdl_sub.utils.exceptions import ValidationException
|
from ytdl_sub.utils.exceptions import ValidationException
|
||||||
from ytdl_sub.utils.file_handler import FileHandlerTransactionLog
|
from ytdl_sub.utils.file_handler import FileHandlerTransactionLog
|
||||||
|
|
@ -38,17 +37,15 @@ def _download_subscriptions_from_yaml_files(
|
||||||
-------
|
-------
|
||||||
List of (subscription, transaction_log)
|
List of (subscription, transaction_log)
|
||||||
"""
|
"""
|
||||||
preset_paths: List[str] = args.subscription_paths
|
subscription_paths: List[str] = args.subscription_paths
|
||||||
presets: List[Preset] = []
|
subscriptions: List[Subscription] = []
|
||||||
output: List[Tuple[Subscription, FileHandlerTransactionLog]] = []
|
output: List[Tuple[Subscription, FileHandlerTransactionLog]] = []
|
||||||
|
|
||||||
# Load all of the presets first to perform all validation before downloading
|
# Load all of the subscriptions first to perform all validation before downloading
|
||||||
for preset_path in preset_paths:
|
for path in subscription_paths:
|
||||||
presets += Preset.from_file_path(config=config, subscription_path=preset_path)
|
subscriptions += Subscription.from_file_path(config=config, subscription_path=path)
|
||||||
|
|
||||||
for preset in presets:
|
|
||||||
subscription = Subscription.from_preset(preset=preset, config=config)
|
|
||||||
|
|
||||||
|
for subscription in subscriptions:
|
||||||
logger.info("Beginning subscription download for %s", subscription.name)
|
logger.info("Beginning subscription download for %s", subscription.name)
|
||||||
transaction_log = subscription.download(dry_run=args.dry_run)
|
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
|
extra_arguments=extra_args, config_options=config.config_options
|
||||||
)
|
)
|
||||||
subscription_args_dict = dl_args_parser.to_subscription_dict()
|
subscription_args_dict = dl_args_parser.to_subscription_dict()
|
||||||
|
|
||||||
subscription_name = f"cli-dl-{dl_args_parser.get_args_hash()}"
|
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(
|
subscription = Subscription.from_dict(
|
||||||
preset=subscription_preset,
|
config=config, preset_name=subscription_name, preset_dict=subscription_args_dict
|
||||||
config=config,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return subscription, subscription.download(dry_run=args.dry_run)
|
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 Plugin
|
||||||
from ytdl_sub.plugins.plugin import PluginOptions
|
from ytdl_sub.plugins.plugin import PluginOptions
|
||||||
from ytdl_sub.utils.yaml import dump_yaml
|
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.strict_dict_validator import StrictDictValidator
|
||||||
from ytdl_sub.validators.string_formatter_validators import DictFormatterValidator
|
from ytdl_sub.validators.string_formatter_validators import DictFormatterValidator
|
||||||
from ytdl_sub.validators.string_formatter_validators import OverridesDictFormatterValidator
|
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)
|
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
|
@property
|
||||||
def yaml(self) -> str:
|
def yaml(self) -> str:
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
from typing import List
|
||||||
|
|
||||||
from ytdl_sub.config.config_file import ConfigFile
|
from ytdl_sub.config.config_file import ConfigFile
|
||||||
from ytdl_sub.config.preset import Preset
|
from ytdl_sub.config.preset import Preset
|
||||||
from ytdl_sub.subscriptions.subscription_download import SubscriptionDownload
|
from ytdl_sub.subscriptions.subscription_download import SubscriptionDownload
|
||||||
|
from ytdl_sub.utils.yaml import load_yaml
|
||||||
|
|
||||||
|
|
||||||
class Subscription(SubscriptionDownload):
|
class Subscription(SubscriptionDownload):
|
||||||
|
|
@ -54,3 +56,31 @@ class Subscription(SubscriptionDownload):
|
||||||
),
|
),
|
||||||
config=config,
|
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