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():
|
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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
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
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue