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

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

View file

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