[BACKEND] Better ffmpeg error

This commit is contained in:
Jesse Bannon 2023-03-01 16:25:52 -08:00
parent fcdf577daf
commit 616234219c
3 changed files with 11 additions and 8 deletions

View file

@ -6,7 +6,7 @@ from mergedeep import mergedeep
from ytdl_sub.prebuilt_presets import PREBUILT_PRESETS from ytdl_sub.prebuilt_presets import PREBUILT_PRESETS
from ytdl_sub.utils.system import IS_WINDOWS 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.strict_dict_validator import StrictDictValidator
from ytdl_sub.validators.validators import LiteralDictValidator from ytdl_sub.validators.validators import LiteralDictValidator
from ytdl_sub.validators.validators import StringValidator from ytdl_sub.validators.validators import StringValidator
@ -41,10 +41,10 @@ class ConfigOptions(StrictDictValidator):
key="lock_directory", validator=StringValidator, default=_DEFAULT_LOCK_DIRECTORY key="lock_directory", validator=StringValidator, default=_DEFAULT_LOCK_DIRECTORY
) )
self._ffmpeg_path = self._validate_key( 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( 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 @property

View file

@ -8,14 +8,15 @@ from ytdl_sub.validators.string_formatter_validators import StringFormatterValid
from ytdl_sub.validators.validators import StringValidator from ytdl_sub.validators.validators import StringValidator
class ExistingFileValidator(StringValidator): class FFmpegFileValidator(StringValidator):
_expected_value_type_name = "file" _expected_value_type_name = "ffmpeg dependency"
_ffmpeg_dependency = 'ffmpeg'
def __init__(self, name: str, value: Any): def __init__(self, name: str, value: Any):
super().__init__(name, value) super().__init__(name, value)
if not os.path.isfile(self._value): if not os.path.isfile(self.value):
raise self._validation_exception( 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 @property
@ -23,6 +24,8 @@ class ExistingFileValidator(StringValidator):
"""Turn into a Path, then a string, to get correct directory separators""" """Turn into a Path, then a string, to get correct directory separators"""
return str(Path(self._value)) return str(Path(self._value))
class FFprobeFileValidator(FFmpegFileValidator):
_ffmpeg_dependency = "ffprobe"
class StringFormatterFilePathValidator(StringFormatterValidator): class StringFormatterFilePathValidator(StringFormatterValidator):
_expected_value_type_name = "filepath" _expected_value_type_name = "filepath"

View file

@ -227,7 +227,7 @@ class DictValidator(Validator):
if key not in self._dict and default is None: if key not in self._dict and default is None:
raise self._validation_exception(f"{key} is missing when it should be present.") 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( validator_instance = validator(
name=validator_name, name=validator_name,
value=self._dict.get(key, default), value=self._dict.get(key, default),