From 616234219c49eb32cf8d351eaa514bc41ecb2d11 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Wed, 1 Mar 2023 16:25:52 -0800 Subject: [PATCH] [BACKEND] Better ffmpeg error --- src/ytdl_sub/config/config_validator.py | 6 +++--- src/ytdl_sub/validators/file_path_validators.py | 11 +++++++---- src/ytdl_sub/validators/validators.py | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/ytdl_sub/config/config_validator.py b/src/ytdl_sub/config/config_validator.py index cbe377c2..96577cec 100644 --- a/src/ytdl_sub/config/config_validator.py +++ b/src/ytdl_sub/config/config_validator.py @@ -6,7 +6,7 @@ from mergedeep import mergedeep from ytdl_sub.prebuilt_presets import PREBUILT_PRESETS from ytdl_sub.utils.system import IS_WINDOWS -from ytdl_sub.validators.file_path_validators import ExistingFileValidator +from ytdl_sub.validators.file_path_validators import FFmpegFileValidator, FFprobeFileValidator from ytdl_sub.validators.strict_dict_validator import StrictDictValidator from ytdl_sub.validators.validators import LiteralDictValidator from ytdl_sub.validators.validators import StringValidator @@ -41,10 +41,10 @@ class ConfigOptions(StrictDictValidator): key="lock_directory", validator=StringValidator, default=_DEFAULT_LOCK_DIRECTORY ) self._ffmpeg_path = self._validate_key( - key="ffmpeg_path", validator=ExistingFileValidator, default=_DEFAULT_FFMPEG_PATH + key="ffmpeg_path", validator=FFmpegFileValidator, default=_DEFAULT_FFMPEG_PATH ) self._ffprobe_path = self._validate_key( - key="ffprobe_path", validator=ExistingFileValidator, default=_DEFAULT_FFPROBE_PATH + key="ffprobe_path", validator=FFprobeFileValidator, default=_DEFAULT_FFPROBE_PATH ) @property diff --git a/src/ytdl_sub/validators/file_path_validators.py b/src/ytdl_sub/validators/file_path_validators.py index 18b1fb49..457b17c4 100644 --- a/src/ytdl_sub/validators/file_path_validators.py +++ b/src/ytdl_sub/validators/file_path_validators.py @@ -8,14 +8,15 @@ from ytdl_sub.validators.string_formatter_validators import StringFormatterValid from ytdl_sub.validators.validators import StringValidator -class ExistingFileValidator(StringValidator): - _expected_value_type_name = "file" +class FFmpegFileValidator(StringValidator): + _expected_value_type_name = "ffmpeg dependency" + _ffmpeg_dependency = 'ffmpeg' def __init__(self, name: str, value: Any): super().__init__(name, value) - if not os.path.isfile(self._value): + if not os.path.isfile(self.value): raise self._validation_exception( - f"Expects an existing file, but '{self.value}' is not a file" + f"Expects an {self._ffmpeg_dependency} executable at '{self.value}', but does not exist" ) @property @@ -23,6 +24,8 @@ class ExistingFileValidator(StringValidator): """Turn into a Path, then a string, to get correct directory separators""" return str(Path(self._value)) +class FFprobeFileValidator(FFmpegFileValidator): + _ffmpeg_dependency = "ffprobe" class StringFormatterFilePathValidator(StringFormatterValidator): _expected_value_type_name = "filepath" diff --git a/src/ytdl_sub/validators/validators.py b/src/ytdl_sub/validators/validators.py index eb8a49b3..da25b1e9 100644 --- a/src/ytdl_sub/validators/validators.py +++ b/src/ytdl_sub/validators/validators.py @@ -227,7 +227,7 @@ class DictValidator(Validator): if key not in self._dict and default is None: raise self._validation_exception(f"{key} is missing when it should be present.") - validator_name = f"{self._name}.{key}" + validator_name = f"{self._name}.{key}" if self._name else key validator_instance = validator( name=validator_name, value=self._dict.get(key, default),