refactor location of config options

This commit is contained in:
jbannon 2022-04-05 18:06:46 +00:00
parent a6006b3def
commit 5bfb5d20ba
18 changed files with 115 additions and 88 deletions

View file

@ -1,32 +1,32 @@
ALISON:
preset: "soundcloud_with_id3_tags"
soundcloud:
username: alis_on
output_options:
output_directory: "/tmp/ALISON"
overrides:
artist: "A.L.I.S.O.N."
genre: "Synthwave / Electronic"
delorra:
preset: "soundcloud_with_id3_tags"
soundcloud:
username: delorra
output_options:
output_directory: "/tmp/DeLorra"
overrides:
artist: "DeLorra"
genre: "Synthwave / Electronic"
bl00dwave:
preset: "soundcloud_with_id3_tags"
soundcloud:
username: bl00dwave
output_options:
output_directory: "/tmp/bl00dwave"
overrides:
artist: "bl00dwave"
genre: "Synthwave / Electronic"
#ALISON:
# preset: "soundcloud_with_id3_tags"
# soundcloud:
# username: alis_on
# output_options:
# output_directory: "/tmp/ALISON"
# overrides:
# artist: "A.L.I.S.O.N."
# genre: "Synthwave / Electronic"
#
#delorra:
# preset: "soundcloud_with_id3_tags"
# soundcloud:
# username: delorra
# output_options:
# output_directory: "/tmp/DeLorra"
# overrides:
# artist: "DeLorra"
# genre: "Synthwave / Electronic"
#
#bl00dwave:
# preset: "soundcloud_with_id3_tags"
# soundcloud:
# username: bl00dwave
# output_options:
# output_directory: "/tmp/bl00dwave"
# overrides:
# artist: "bl00dwave"
# genre: "Synthwave / Electronic"
tom_petty:
preset: "music_videos"

View file

@ -4,7 +4,7 @@ from typing import List
###################################################################################################
# GLOBAL PARSER
from ytdl_subscribe.validators.config.config_validator import ConfigFileValidator
from ytdl_subscribe.validators.config.config_file_validator import ConfigFileValidator
from ytdl_subscribe.validators.config.subscription_validator import (
SubscriptionValidator,
)

View file

@ -4,10 +4,10 @@ from ytdl_subscribe.downloaders.soundcloud_downloader import SoundcloudDownloade
from ytdl_subscribe.entries.soundcloud import SoundcloudAlbum
from ytdl_subscribe.entries.soundcloud import SoundcloudTrack
from ytdl_subscribe.subscriptions.subscription import Subscription
from ytdl_subscribe.validators.config.sources.soundcloud_validators import (
from ytdl_subscribe.validators.config.source_options.soundcloud_validators import (
SoundcloudAlbumsAndSinglesDownloadValidator,
)
from ytdl_subscribe.validators.config.sources.soundcloud_validators import (
from ytdl_subscribe.validators.config.source_options.soundcloud_validators import (
SoundcloudSourceValidator,
)

View file

@ -10,19 +10,27 @@ from PIL import Image
from ytdl_subscribe.downloaders.downloader import Downloader
from ytdl_subscribe.entries.entry import Entry
from ytdl_subscribe.validators.config.config_validator import ConfigOptionsValidator
from ytdl_subscribe.validators.config.config_options.config_options_validator import (
ConfigOptionsValidator,
)
from ytdl_subscribe.validators.config.metadata_options.metadata_options_validator import (
MetadataOptionsValidator,
)
from ytdl_subscribe.validators.config.output_options.output_options_validator import (
OutputOptionsValidator,
)
from ytdl_subscribe.validators.config.preset_validator import OverridesValidator
from ytdl_subscribe.validators.config.preset_validator import YTDLOptionsValidator
from ytdl_subscribe.validators.config.sources.source_validator import (
from ytdl_subscribe.validators.config.overrides.overrides_validator import (
OverridesValidator,
)
from ytdl_subscribe.validators.config.source_options.source_validator import (
DownloadStrategyValidator,
)
from ytdl_subscribe.validators.config.sources.source_validator import SourceValidator
from ytdl_subscribe.validators.config.source_options.source_validator import (
SourceValidator,
)
from ytdl_subscribe.validators.config.ytdl_options.ytdl_options_validator import (
YTDLOptionsValidator,
)
SOURCE_T = TypeVar("SOURCE_T", bound=SourceValidator)
DOWNLOAD_STRATEGY_T = TypeVar("DOWNLOAD_STRATEGY_T", bound=DownloadStrategyValidator)

View file

@ -1,9 +1,9 @@
from ytdl_subscribe.downloaders.youtube_downloader import YoutubeDownloader
from ytdl_subscribe.subscriptions.subscription import Subscription
from ytdl_subscribe.validators.config.sources.youtube_validators import (
from ytdl_subscribe.validators.config.source_options.youtube_validators import (
YoutubePlaylistDownloadValidator,
)
from ytdl_subscribe.validators.config.sources.youtube_validators import (
from ytdl_subscribe.validators.config.source_options.youtube_validators import (
YoutubeSourceValidator,
)

View file

@ -4,20 +4,9 @@ import yaml
from ytdl_subscribe.validators.base.strict_dict_validator import StrictDictValidator
from ytdl_subscribe.validators.base.validators import LiteralDictValidator
from ytdl_subscribe.validators.base.validators import StringValidator
class ConfigOptionsValidator(StrictDictValidator):
"""Validation for the config options"""
_required_keys = {"working_directory"}
def __init__(self, name: str, value: Any):
super().__init__(name, value)
self.working_directory = self._validate_key(
key="working_directory", validator=StringValidator
)
from ytdl_subscribe.validators.config.config_options.config_options_validator import (
ConfigOptionsValidator,
)
class ConfigPresetsValidator(LiteralDictValidator):

View file

@ -0,0 +1,17 @@
from typing import Any
from ytdl_subscribe.validators.base.strict_dict_validator import StrictDictValidator
from ytdl_subscribe.validators.base.validators import StringValidator
class ConfigOptionsValidator(StrictDictValidator):
"""Validation for the config options"""
_required_keys = {"working_directory"}
def __init__(self, name: str, value: Any):
super().__init__(name, value)
self.working_directory = self._validate_key(
key="working_directory", validator=StringValidator
)

View file

@ -0,0 +1,16 @@
import sanitize_filename
from ytdl_subscribe.validators.base.string_formatter_validator import (
DictFormatterValidator,
)
class OverridesValidator(DictFormatterValidator):
"""Ensures `overrides` is a dict"""
def __init__(self, name, value):
super().__init__(name, value)
for key in self._keys:
self._value[f"sanitized_{key}"] = sanitize_filename.sanitize(
self._value[key]
)

View file

@ -4,46 +4,30 @@ from typing import List
from typing import Optional
from typing import Type
import sanitize_filename
from ytdl_subscribe.validators.base.strict_dict_validator import StrictDictValidator
from ytdl_subscribe.validators.base.string_formatter_validator import (
DictFormatterValidator,
)
from ytdl_subscribe.validators.base.validators import LiteralDictValidator
from ytdl_subscribe.validators.config.metadata_options.metadata_options_validator import (
MetadataOptionsValidator,
)
from ytdl_subscribe.validators.config.output_options.output_options_validator import (
OutputOptionsValidator,
)
from ytdl_subscribe.validators.config.sources.soundcloud_validators import (
from ytdl_subscribe.validators.config.overrides.overrides_validator import (
OverridesValidator,
)
from ytdl_subscribe.validators.config.source_options.soundcloud_validators import (
SoundcloudSourceValidator,
)
from ytdl_subscribe.validators.config.sources.source_validator import SourceValidator
from ytdl_subscribe.validators.config.sources.youtube_validators import (
from ytdl_subscribe.validators.config.source_options.source_validator import (
SourceValidator,
)
from ytdl_subscribe.validators.config.source_options.youtube_validators import (
YoutubeSourceValidator,
)
from ytdl_subscribe.validators.config.ytdl_options.ytdl_options_validator import (
YTDLOptionsValidator,
)
from ytdl_subscribe.validators.exceptions import ValidationException
class YTDLOptionsValidator(LiteralDictValidator):
"""Ensures `ytdl_options` is a dict"""
pass
class OverridesValidator(DictFormatterValidator):
"""Ensures `overrides` is a dict"""
def __init__(self, name, value):
super().__init__(name, value)
for key in self._keys:
self._value[f"sanitized_{key}"] = sanitize_filename.sanitize(
self._value[key]
)
PRESET_SOURCE_VALIDATOR_MAPPING: Dict[str, Type[SourceValidator]] = {
"soundcloud": SoundcloudSourceValidator,
"youtube": YoutubeSourceValidator,

View file

@ -1,9 +1,11 @@
from ytdl_subscribe.validators.base.validators import BoolValidator
from ytdl_subscribe.validators.base.validators import StringValidator
from ytdl_subscribe.validators.config.sources.source_validator import (
from ytdl_subscribe.validators.config.source_options.source_validator import (
DownloadStrategyValidator,
)
from ytdl_subscribe.validators.config.sources.source_validator import SourceValidator
from ytdl_subscribe.validators.config.source_options.source_validator import (
SourceValidator,
)
class SoundcloudAlbumsAndSinglesDownloadValidator(DownloadStrategyValidator):

View file

@ -1,10 +1,12 @@
from typing import Any
from ytdl_subscribe.validators.base.validators import StringValidator
from ytdl_subscribe.validators.config.sources.source_validator import (
from ytdl_subscribe.validators.config.source_options.source_validator import (
DownloadStrategyValidator,
)
from ytdl_subscribe.validators.config.sources.source_validator import SourceValidator
from ytdl_subscribe.validators.config.source_options.source_validator import (
SourceValidator,
)
class YoutubePlaylistDownloadValidator(DownloadStrategyValidator):

View file

@ -12,15 +12,17 @@ from ytdl_subscribe.subscriptions.subscription import Subscription
from ytdl_subscribe.subscriptions.youtube import YoutubePlaylistSubscription
from ytdl_subscribe.validators.base.strict_dict_validator import StrictDictValidator
from ytdl_subscribe.validators.base.validators import StringValidator
from ytdl_subscribe.validators.config.config_validator import ConfigFileValidator
from ytdl_subscribe.validators.config.config_file_validator import ConfigFileValidator
from ytdl_subscribe.validators.config.overrides.overrides_validator import (
OverridesValidator,
)
from ytdl_subscribe.validators.config.preset_validator import PRESET_OPTIONAL_KEYS
from ytdl_subscribe.validators.config.preset_validator import PRESET_REQUIRED_KEYS
from ytdl_subscribe.validators.config.preset_validator import OverridesValidator
from ytdl_subscribe.validators.config.preset_validator import PresetValidator
from ytdl_subscribe.validators.config.sources.soundcloud_validators import (
from ytdl_subscribe.validators.config.source_options.soundcloud_validators import (
SoundcloudAlbumsAndSinglesDownloadValidator,
)
from ytdl_subscribe.validators.config.sources.youtube_validators import (
from ytdl_subscribe.validators.config.source_options.youtube_validators import (
YoutubePlaylistDownloadValidator,
)

View file

@ -0,0 +1,7 @@
from ytdl_subscribe.validators.base.validators import LiteralDictValidator
class YTDLOptionsValidator(LiteralDictValidator):
"""Ensures `ytdl_options` is a dict"""
pass