refactor location of config options
This commit is contained in:
parent
a6006b3def
commit
5bfb5d20ba
18 changed files with 115 additions and 88 deletions
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
@ -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
|
||||
)
|
||||
0
ytdl_subscribe/validators/config/overrides/__init__.py
Normal file
0
ytdl_subscribe/validators/config/overrides/__init__.py
Normal 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]
|
||||
)
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
@ -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):
|
||||
|
|
@ -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,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
from ytdl_subscribe.validators.base.validators import LiteralDictValidator
|
||||
|
||||
|
||||
class YTDLOptionsValidator(LiteralDictValidator):
|
||||
"""Ensures `ytdl_options` is a dict"""
|
||||
|
||||
pass
|
||||
Loading…
Reference in a new issue