From 4ddaf72ae15c046a5a0450d622b91e08c626d091 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Fri, 7 Oct 2022 22:46:07 -0700 Subject: [PATCH] [DOCS] file_convert plugin (#276) * [DOCS] file_convert plugin * better docs * lint --- docs/config.rst | 6 +++++ src/ytdl_sub/plugins/audio_extract.py | 4 ++-- src/ytdl_sub/plugins/file_convert.py | 13 +++++----- .../validators/audo_codec_validator.py | 24 ++++--------------- 4 files changed, 19 insertions(+), 28 deletions(-) diff --git a/docs/config.rst b/docs/config.rst index 72dc0a59..87026f49 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -188,6 +188,12 @@ date_range :members: :member-order: bysource +file_convert +'''''''''''' +.. autoclass:: ytdl_sub.plugins.file_convert.FileConvertOptions() + :members: + :member-order: bysource + ------------------------------------------------------------------------------- music_tags diff --git a/src/ytdl_sub/plugins/audio_extract.py b/src/ytdl_sub/plugins/audio_extract.py index 0908e529..7703a786 100644 --- a/src/ytdl_sub/plugins/audio_extract.py +++ b/src/ytdl_sub/plugins/audio_extract.py @@ -8,7 +8,7 @@ from ytdl_sub.plugins.plugin import Plugin from ytdl_sub.plugins.plugin import PluginOptions from ytdl_sub.utils.exceptions import FileNotDownloadedException from ytdl_sub.validators.audo_codec_validator import AUDIO_CODEC_TYPES_EXTENSION_MAPPING -from ytdl_sub.validators.audo_codec_validator import CodecTypeValidator +from ytdl_sub.validators.audo_codec_validator import AudioTypeValidator from ytdl_sub.validators.validators import FloatValidator @@ -31,7 +31,7 @@ class AudioExtractOptions(PluginOptions): def __init__(self, name, value): super().__init__(name, value) - self._codec = self._validate_key(key="codec", validator=CodecTypeValidator).value + self._codec = self._validate_key(key="codec", validator=AudioTypeValidator).value self._quality = self._validate_key_if_present(key="quality", validator=FloatValidator) @property diff --git a/src/ytdl_sub/plugins/file_convert.py b/src/ytdl_sub/plugins/file_convert.py index 8b47bfc2..409a70ed 100644 --- a/src/ytdl_sub/plugins/file_convert.py +++ b/src/ytdl_sub/plugins/file_convert.py @@ -8,12 +8,12 @@ from ytdl_sub.plugins.plugin import Plugin from ytdl_sub.plugins.plugin import PluginOptions from ytdl_sub.utils.exceptions import FileNotDownloadedException from ytdl_sub.utils.file_handler import FileMetadata -from ytdl_sub.validators.audo_codec_validator import VideoCodecTypeValidator +from ytdl_sub.validators.audo_codec_validator import FileTypeValidator class FileConvertOptions(PluginOptions): """ - Converts media files from one extension to another. + Converts video files from one extension to another. Usage: @@ -29,14 +29,15 @@ class FileConvertOptions(PluginOptions): def __init__(self, name, value): super().__init__(name, value) - self._convert_to = self._validate_key( - key="convert_to", validator=VideoCodecTypeValidator - ).value + self._convert_to = self._validate_key(key="convert_to", validator=FileTypeValidator).value @property def convert_to(self) -> str: """ - Convert to a desired extension + Convert to a desired file type. Supports: + + * Video: avi, flv, mkv, mov, mp4, webm + * Audio: aac, flac, mp3, m4a, opus, vorbis, wav """ return self._convert_to diff --git a/src/ytdl_sub/validators/audo_codec_validator.py b/src/ytdl_sub/validators/audo_codec_validator.py index ddc25a85..7410ac86 100644 --- a/src/ytdl_sub/validators/audo_codec_validator.py +++ b/src/ytdl_sub/validators/audo_codec_validator.py @@ -16,30 +16,14 @@ AUDIO_CODEC_TYPES_EXTENSION_MAPPING: Dict[str, str] = { AUDIO_CODEC_TYPES: Set[str] = set(AUDIO_CODEC_TYPES_EXTENSION_MAPPING.keys()) AUDIO_CODEC_EXTS: Set[str] = set(AUDIO_CODEC_TYPES_EXTENSION_MAPPING.values()) -VIDEO_CODEC_EXTS: Set[str] = { - "avi", - "flv", - "mkv", - "mov", - "mp4", - "webm", - "3g2", - "3gp", - "f4v", - "mk3d", - "divx", - "mpg", - "ogv", - "m4v", - "wmv", -} +VIDEO_CODEC_EXTS: Set[str] = {"avi", "flv", "mkv", "mov", "mp4", "webm"} -class CodecTypeValidator(StringSelectValidator): +class AudioTypeValidator(StringSelectValidator): _expected_value_type_name = "codec" _select_values = AUDIO_CODEC_TYPES -class VideoCodecTypeValidator(StringSelectValidator): +class FileTypeValidator(StringSelectValidator): _expected_value_type_name = "codec" - _select_values = VIDEO_CODEC_EXTS + _select_values = AUDIO_CODEC_TYPES.union(VIDEO_CODEC_EXTS)