remove source enum
This commit is contained in:
parent
7f27ff52ae
commit
459712dcce
5 changed files with 18 additions and 33 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in a new issue