From 459712dcce0fc86df3b56af3b66891e1a7246a33 Mon Sep 17 00:00:00 2001 From: jbannon Date: Mon, 4 Apr 2022 23:19:54 +0000 Subject: [PATCH] remove source enum --- ytdl_subscribe/subscriptions/subscription.py | 6 ++--- ytdl_subscribe/utils/__init__.py | 0 ytdl_subscribe/utils/enums.py | 16 ------------- .../validators/config/preset_validator.py | 24 ++++++++++++------- .../config/subscription_validator.py | 5 ---- 5 files changed, 18 insertions(+), 33 deletions(-) delete mode 100644 ytdl_subscribe/utils/__init__.py delete mode 100644 ytdl_subscribe/utils/enums.py diff --git a/ytdl_subscribe/subscriptions/subscription.py b/ytdl_subscribe/subscriptions/subscription.py index 1483927b..ddc6fe21 100644 --- a/ytdl_subscribe/subscriptions/subscription.py +++ b/ytdl_subscribe/subscriptions/subscription.py @@ -99,7 +99,7 @@ class Subscription(object): for tag, tag_formatter in nfo_options.tags.dict.items(): nfo[tag] = entry.apply_formatter( - format_string=tag_formatter, overrides=self.overrides + format_string=tag_formatter, overrides=self.overrides.dict ) xml = dicttoxml.dicttoxml( @@ -162,12 +162,12 @@ class Subscription(object): if self.output_options.convert_thumbnail: im = Image.open(source_thumbnail_path).convert("RGB") im.save( - fp=output_thumbnail_name, + fp=output_thumbnail_path, format=self.output_options.convert_thumbnail.value, ) # Otherwise, just copy the downloaded thumbnail else: - copyfile(source_thumbnail_path, output_thumbnail_name) + copyfile(source_thumbnail_path, output_thumbnail_path) if self.metadata_options.nfo: self._post_process_nfo(entry) diff --git a/ytdl_subscribe/utils/__init__.py b/ytdl_subscribe/utils/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ytdl_subscribe/utils/enums.py b/ytdl_subscribe/utils/enums.py deleted file mode 100644 index 082a71dc..00000000 --- a/ytdl_subscribe/utils/enums.py +++ /dev/null @@ -1,16 +0,0 @@ -from typing import List - - -class SubscriptionSourceName: - YOUTUBE = "youtube" - SOUNDCLOUD = "soundcloud" - - @classmethod - def all(cls) -> List[str]: - """Returns all Subscription sources sorted as a list""" - return sorted([cls.YOUTUBE, cls.SOUNDCLOUD]) - - @classmethod - def pretty_all(cls) -> str: - """Returns all subscription sources pretty printed""" - return ", ".join(cls.all()) diff --git a/ytdl_subscribe/validators/config/preset_validator.py b/ytdl_subscribe/validators/config/preset_validator.py index 92f14ecf..d827519f 100644 --- a/ytdl_subscribe/validators/config/preset_validator.py +++ b/ytdl_subscribe/validators/config/preset_validator.py @@ -1,13 +1,13 @@ import copy from typing import Any from typing import Dict +from typing import List from typing import Optional from typing import Tuple from typing import Type import sanitize_filename -from ytdl_subscribe.utils.enums import SubscriptionSourceName from ytdl_subscribe.validators.base.strict_dict_validator import StrictDictValidator from ytdl_subscribe.validators.base.string_formatter_validator import ( DictFormatterValidator, @@ -47,27 +47,32 @@ class OverridesValidator(DictFormatterValidator): class PresetValidator(StrictDictValidator): + subscription_source_validator_mapping: Dict[str, Type[SourceValidator]] = { + "soundcloud": SoundcloudSourceValidator, + "youtube": YoutubeSourceValidator, + } + required_keys = {"output_options"} optional_keys = { "metadata_options", "ytdl_options", "overrides", - *SubscriptionSourceName.all(), + *subscription_source_validator_mapping.keys(), } - subscription_source_validator_mapping: Dict[str, Type[SourceValidator]] = { - SubscriptionSourceName.SOUNDCLOUD: SoundcloudSourceValidator, - SubscriptionSourceName.YOUTUBE: YoutubeSourceValidator, - } + @property + def available_sources(self) -> List[str]: + return sorted(list(self.subscription_source_validator_mapping.keys())) def __validate_and_get_subscription_source(self) -> Tuple[str, SourceValidator]: subscription_source: Optional[SourceValidator] = None subscription_source_name: Optional[str] = None for key in self.keys: - if key in SubscriptionSourceName.all() and subscription_source: + if key in self.available_sources and subscription_source: raise ValidationException( - f"'{self.name}' can only have one of the following sources: {SubscriptionSourceName.pretty_all()}" + f"'{self.name}' can only have one of the following sources: " + f"{', '.join(self.available_sources)}" ) if key in self.subscription_source_validator_mapping: @@ -79,7 +84,8 @@ class PresetValidator(StrictDictValidator): # If subscription source was not set, error if not subscription_source: raise ValidationException( - f"'{self.name} must have one of the following sources: {SubscriptionSourceName.pretty_all()}" + f"'{self.name} must have one of the following sources: " + f"{', '.join(self.available_sources)}" ) return subscription_source_name, subscription_source diff --git a/ytdl_subscribe/validators/config/subscription_validator.py b/ytdl_subscribe/validators/config/subscription_validator.py index 16eb07de..46b09874 100644 --- a/ytdl_subscribe/validators/config/subscription_validator.py +++ b/ytdl_subscribe/validators/config/subscription_validator.py @@ -9,9 +9,7 @@ from ytdl_subscribe.subscriptions.soundcloud import ( ) from ytdl_subscribe.subscriptions.subscription import Subscription from ytdl_subscribe.subscriptions.youtube import YoutubeSubscription -from ytdl_subscribe.utils.enums import SubscriptionSourceName from ytdl_subscribe.validators.base.strict_dict_validator import StrictDictValidator -from ytdl_subscribe.validators.base.validators import DictValidator from ytdl_subscribe.validators.base.validators import StringValidator from ytdl_subscribe.validators.config.config_validator import ConfigValidator from ytdl_subscribe.validators.config.preset_validator import OverridesValidator @@ -19,9 +17,6 @@ from ytdl_subscribe.validators.config.preset_validator import PresetValidator from ytdl_subscribe.validators.config.sources.soundcloud_validators import ( SoundcloudAlbumsAndSinglesDownloadValidator, ) -from ytdl_subscribe.validators.config.sources.soundcloud_validators import ( - SoundcloudSourceValidator, -) from ytdl_subscribe.validators.config.sources.youtube_validators import ( YoutubePlaylistDownloadValidator, )