remove source enum

This commit is contained in:
jbannon 2022-04-04 23:19:54 +00:00
parent 7f27ff52ae
commit 459712dcce
5 changed files with 18 additions and 33 deletions

View file

@ -99,7 +99,7 @@ class Subscription(object):
for tag, tag_formatter in nfo_options.tags.dict.items(): for tag, tag_formatter in nfo_options.tags.dict.items():
nfo[tag] = entry.apply_formatter( nfo[tag] = entry.apply_formatter(
format_string=tag_formatter, overrides=self.overrides format_string=tag_formatter, overrides=self.overrides.dict
) )
xml = dicttoxml.dicttoxml( xml = dicttoxml.dicttoxml(
@ -162,12 +162,12 @@ class Subscription(object):
if self.output_options.convert_thumbnail: if self.output_options.convert_thumbnail:
im = Image.open(source_thumbnail_path).convert("RGB") im = Image.open(source_thumbnail_path).convert("RGB")
im.save( im.save(
fp=output_thumbnail_name, fp=output_thumbnail_path,
format=self.output_options.convert_thumbnail.value, format=self.output_options.convert_thumbnail.value,
) )
# Otherwise, just copy the downloaded thumbnail # Otherwise, just copy the downloaded thumbnail
else: else:
copyfile(source_thumbnail_path, output_thumbnail_name) copyfile(source_thumbnail_path, output_thumbnail_path)
if self.metadata_options.nfo: if self.metadata_options.nfo:
self._post_process_nfo(entry) self._post_process_nfo(entry)

View file

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

View file

@ -1,13 +1,13 @@
import copy import copy
from typing import Any from typing import Any
from typing import Dict from typing import Dict
from typing import List
from typing import Optional from typing import Optional
from typing import Tuple from typing import Tuple
from typing import Type from typing import Type
import sanitize_filename 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.strict_dict_validator import StrictDictValidator
from ytdl_subscribe.validators.base.string_formatter_validator import ( from ytdl_subscribe.validators.base.string_formatter_validator import (
DictFormatterValidator, DictFormatterValidator,
@ -47,27 +47,32 @@ class OverridesValidator(DictFormatterValidator):
class PresetValidator(StrictDictValidator): class PresetValidator(StrictDictValidator):
subscription_source_validator_mapping: Dict[str, Type[SourceValidator]] = {
"soundcloud": SoundcloudSourceValidator,
"youtube": YoutubeSourceValidator,
}
required_keys = {"output_options"} required_keys = {"output_options"}
optional_keys = { optional_keys = {
"metadata_options", "metadata_options",
"ytdl_options", "ytdl_options",
"overrides", "overrides",
*SubscriptionSourceName.all(), *subscription_source_validator_mapping.keys(),
} }
subscription_source_validator_mapping: Dict[str, Type[SourceValidator]] = { @property
SubscriptionSourceName.SOUNDCLOUD: SoundcloudSourceValidator, def available_sources(self) -> List[str]:
SubscriptionSourceName.YOUTUBE: YoutubeSourceValidator, return sorted(list(self.subscription_source_validator_mapping.keys()))
}
def __validate_and_get_subscription_source(self) -> Tuple[str, SourceValidator]: def __validate_and_get_subscription_source(self) -> Tuple[str, SourceValidator]:
subscription_source: Optional[SourceValidator] = None subscription_source: Optional[SourceValidator] = None
subscription_source_name: Optional[str] = None subscription_source_name: Optional[str] = None
for key in self.keys: for key in self.keys:
if key in SubscriptionSourceName.all() and subscription_source: if key in self.available_sources and subscription_source:
raise ValidationException( 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: if key in self.subscription_source_validator_mapping:
@ -79,7 +84,8 @@ class PresetValidator(StrictDictValidator):
# If subscription source was not set, error # If subscription source was not set, error
if not subscription_source: if not subscription_source:
raise ValidationException( 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 return subscription_source_name, subscription_source

View file

@ -9,9 +9,7 @@ from ytdl_subscribe.subscriptions.soundcloud import (
) )
from ytdl_subscribe.subscriptions.subscription import Subscription from ytdl_subscribe.subscriptions.subscription import Subscription
from ytdl_subscribe.subscriptions.youtube import YoutubeSubscription 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.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.base.validators import StringValidator
from ytdl_subscribe.validators.config.config_validator import ConfigValidator from ytdl_subscribe.validators.config.config_validator import ConfigValidator
from ytdl_subscribe.validators.config.preset_validator import OverridesValidator 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 ( from ytdl_subscribe.validators.config.sources.soundcloud_validators import (
SoundcloudAlbumsAndSinglesDownloadValidator, SoundcloudAlbumsAndSinglesDownloadValidator,
) )
from ytdl_subscribe.validators.config.sources.soundcloud_validators import (
SoundcloudSourceValidator,
)
from ytdl_subscribe.validators.config.sources.youtube_validators import ( from ytdl_subscribe.validators.config.sources.youtube_validators import (
YoutubePlaylistDownloadValidator, YoutubePlaylistDownloadValidator,
) )