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:
|
#ALISON:
|
||||||
preset: "soundcloud_with_id3_tags"
|
# preset: "soundcloud_with_id3_tags"
|
||||||
soundcloud:
|
# soundcloud:
|
||||||
username: alis_on
|
# username: alis_on
|
||||||
output_options:
|
# output_options:
|
||||||
output_directory: "/tmp/ALISON"
|
# output_directory: "/tmp/ALISON"
|
||||||
overrides:
|
# overrides:
|
||||||
artist: "A.L.I.S.O.N."
|
# artist: "A.L.I.S.O.N."
|
||||||
genre: "Synthwave / Electronic"
|
# genre: "Synthwave / Electronic"
|
||||||
|
#
|
||||||
delorra:
|
#delorra:
|
||||||
preset: "soundcloud_with_id3_tags"
|
# preset: "soundcloud_with_id3_tags"
|
||||||
soundcloud:
|
# soundcloud:
|
||||||
username: delorra
|
# username: delorra
|
||||||
output_options:
|
# output_options:
|
||||||
output_directory: "/tmp/DeLorra"
|
# output_directory: "/tmp/DeLorra"
|
||||||
overrides:
|
# overrides:
|
||||||
artist: "DeLorra"
|
# artist: "DeLorra"
|
||||||
genre: "Synthwave / Electronic"
|
# genre: "Synthwave / Electronic"
|
||||||
|
#
|
||||||
bl00dwave:
|
#bl00dwave:
|
||||||
preset: "soundcloud_with_id3_tags"
|
# preset: "soundcloud_with_id3_tags"
|
||||||
soundcloud:
|
# soundcloud:
|
||||||
username: bl00dwave
|
# username: bl00dwave
|
||||||
output_options:
|
# output_options:
|
||||||
output_directory: "/tmp/bl00dwave"
|
# output_directory: "/tmp/bl00dwave"
|
||||||
overrides:
|
# overrides:
|
||||||
artist: "bl00dwave"
|
# artist: "bl00dwave"
|
||||||
genre: "Synthwave / Electronic"
|
# genre: "Synthwave / Electronic"
|
||||||
|
|
||||||
tom_petty:
|
tom_petty:
|
||||||
preset: "music_videos"
|
preset: "music_videos"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ from typing import List
|
||||||
|
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
# GLOBAL PARSER
|
# 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 (
|
from ytdl_subscribe.validators.config.subscription_validator import (
|
||||||
SubscriptionValidator,
|
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 SoundcloudAlbum
|
||||||
from ytdl_subscribe.entries.soundcloud import SoundcloudTrack
|
from ytdl_subscribe.entries.soundcloud import SoundcloudTrack
|
||||||
from ytdl_subscribe.subscriptions.subscription import Subscription
|
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,
|
SoundcloudAlbumsAndSinglesDownloadValidator,
|
||||||
)
|
)
|
||||||
from ytdl_subscribe.validators.config.sources.soundcloud_validators import (
|
from ytdl_subscribe.validators.config.source_options.soundcloud_validators import (
|
||||||
SoundcloudSourceValidator,
|
SoundcloudSourceValidator,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,19 +10,27 @@ from PIL import Image
|
||||||
|
|
||||||
from ytdl_subscribe.downloaders.downloader import Downloader
|
from ytdl_subscribe.downloaders.downloader import Downloader
|
||||||
from ytdl_subscribe.entries.entry import Entry
|
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 (
|
from ytdl_subscribe.validators.config.metadata_options.metadata_options_validator import (
|
||||||
MetadataOptionsValidator,
|
MetadataOptionsValidator,
|
||||||
)
|
)
|
||||||
from ytdl_subscribe.validators.config.output_options.output_options_validator import (
|
from ytdl_subscribe.validators.config.output_options.output_options_validator import (
|
||||||
OutputOptionsValidator,
|
OutputOptionsValidator,
|
||||||
)
|
)
|
||||||
from ytdl_subscribe.validators.config.preset_validator import OverridesValidator
|
from ytdl_subscribe.validators.config.overrides.overrides_validator import (
|
||||||
from ytdl_subscribe.validators.config.preset_validator import YTDLOptionsValidator
|
OverridesValidator,
|
||||||
from ytdl_subscribe.validators.config.sources.source_validator import (
|
)
|
||||||
|
from ytdl_subscribe.validators.config.source_options.source_validator import (
|
||||||
DownloadStrategyValidator,
|
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)
|
SOURCE_T = TypeVar("SOURCE_T", bound=SourceValidator)
|
||||||
DOWNLOAD_STRATEGY_T = TypeVar("DOWNLOAD_STRATEGY_T", bound=DownloadStrategyValidator)
|
DOWNLOAD_STRATEGY_T = TypeVar("DOWNLOAD_STRATEGY_T", bound=DownloadStrategyValidator)
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
from ytdl_subscribe.downloaders.youtube_downloader import YoutubeDownloader
|
from ytdl_subscribe.downloaders.youtube_downloader import YoutubeDownloader
|
||||||
from ytdl_subscribe.subscriptions.subscription import Subscription
|
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,
|
YoutubePlaylistDownloadValidator,
|
||||||
)
|
)
|
||||||
from ytdl_subscribe.validators.config.sources.youtube_validators import (
|
from ytdl_subscribe.validators.config.source_options.youtube_validators import (
|
||||||
YoutubeSourceValidator,
|
YoutubeSourceValidator,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,20 +4,9 @@ import yaml
|
||||||
|
|
||||||
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 LiteralDictValidator
|
from ytdl_subscribe.validators.base.validators import LiteralDictValidator
|
||||||
from ytdl_subscribe.validators.base.validators import StringValidator
|
from ytdl_subscribe.validators.config.config_options.config_options_validator import (
|
||||||
|
ConfigOptionsValidator,
|
||||||
|
)
|
||||||
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
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class ConfigPresetsValidator(LiteralDictValidator):
|
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 Optional
|
||||||
from typing import Type
|
from typing import Type
|
||||||
|
|
||||||
import sanitize_filename
|
|
||||||
|
|
||||||
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 (
|
|
||||||
DictFormatterValidator,
|
|
||||||
)
|
|
||||||
from ytdl_subscribe.validators.base.validators import LiteralDictValidator
|
|
||||||
from ytdl_subscribe.validators.config.metadata_options.metadata_options_validator import (
|
from ytdl_subscribe.validators.config.metadata_options.metadata_options_validator import (
|
||||||
MetadataOptionsValidator,
|
MetadataOptionsValidator,
|
||||||
)
|
)
|
||||||
from ytdl_subscribe.validators.config.output_options.output_options_validator import (
|
from ytdl_subscribe.validators.config.output_options.output_options_validator import (
|
||||||
OutputOptionsValidator,
|
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,
|
SoundcloudSourceValidator,
|
||||||
)
|
)
|
||||||
from ytdl_subscribe.validators.config.sources.source_validator import SourceValidator
|
from ytdl_subscribe.validators.config.source_options.source_validator import (
|
||||||
from ytdl_subscribe.validators.config.sources.youtube_validators import (
|
SourceValidator,
|
||||||
|
)
|
||||||
|
from ytdl_subscribe.validators.config.source_options.youtube_validators import (
|
||||||
YoutubeSourceValidator,
|
YoutubeSourceValidator,
|
||||||
)
|
)
|
||||||
|
from ytdl_subscribe.validators.config.ytdl_options.ytdl_options_validator import (
|
||||||
|
YTDLOptionsValidator,
|
||||||
|
)
|
||||||
from ytdl_subscribe.validators.exceptions import ValidationException
|
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]] = {
|
PRESET_SOURCE_VALIDATOR_MAPPING: Dict[str, Type[SourceValidator]] = {
|
||||||
"soundcloud": SoundcloudSourceValidator,
|
"soundcloud": SoundcloudSourceValidator,
|
||||||
"youtube": YoutubeSourceValidator,
|
"youtube": YoutubeSourceValidator,
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
from ytdl_subscribe.validators.base.validators import BoolValidator
|
from ytdl_subscribe.validators.base.validators import BoolValidator
|
||||||
from ytdl_subscribe.validators.base.validators import StringValidator
|
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,
|
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):
|
class SoundcloudAlbumsAndSinglesDownloadValidator(DownloadStrategyValidator):
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from ytdl_subscribe.validators.base.validators import StringValidator
|
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,
|
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):
|
class YoutubePlaylistDownloadValidator(DownloadStrategyValidator):
|
||||||
|
|
@ -12,15 +12,17 @@ from ytdl_subscribe.subscriptions.subscription import Subscription
|
||||||
from ytdl_subscribe.subscriptions.youtube import YoutubePlaylistSubscription
|
from ytdl_subscribe.subscriptions.youtube import YoutubePlaylistSubscription
|
||||||
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 StringValidator
|
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_OPTIONAL_KEYS
|
||||||
from ytdl_subscribe.validators.config.preset_validator import PRESET_REQUIRED_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.preset_validator import PresetValidator
|
||||||
from ytdl_subscribe.validators.config.sources.soundcloud_validators import (
|
from ytdl_subscribe.validators.config.source_options.soundcloud_validators import (
|
||||||
SoundcloudAlbumsAndSinglesDownloadValidator,
|
SoundcloudAlbumsAndSinglesDownloadValidator,
|
||||||
)
|
)
|
||||||
from ytdl_subscribe.validators.config.sources.youtube_validators import (
|
from ytdl_subscribe.validators.config.source_options.youtube_validators import (
|
||||||
YoutubePlaylistDownloadValidator,
|
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