Fixed analysis of corrupted video file that may wrongly throttle providers. #2034

This commit is contained in:
morpheus65535 2023-01-15 09:26:22 -05:00
parent 66327677b3
commit 92be39beba
2 changed files with 16 additions and 4 deletions

View file

@ -32,7 +32,7 @@ def refine_from_ffprobe(path, video):
data = parse_video_metadata(file=path, file_size=file_id['file_size'], data = parse_video_metadata(file=path, file_size=file_id['file_size'],
episode_file_id=file_id['episode_file_id']) episode_file_id=file_id['episode_file_id'])
if 'ffprobe' not in data and 'mediainfo' not in data: if not data or ('ffprobe' not in data and 'mediainfo' not in data):
logging.debug("No cache available for this file: {}".format(path)) logging.debug("No cache available for this file: {}".format(path))
return video return video

View file

@ -3,7 +3,7 @@
import logging import logging
import pickle import pickle
from knowit.api import know from knowit.api import know, KnowitException
from languages.custom_lang import CustomLanguage from languages.custom_lang import CustomLanguage
from app.database import TableEpisodes, TableMovies from app.database import TableEpisodes, TableMovies
@ -26,6 +26,10 @@ def embedded_subs_reader(file, file_size, episode_file_id=None, movie_file_id=No
data = parse_video_metadata(file, file_size, episode_file_id, movie_file_id, use_cache=use_cache) data = parse_video_metadata(file, file_size, episode_file_id, movie_file_id, use_cache=use_cache)
subtitles_list = [] subtitles_list = []
if not data:
return subtitles_list
if data["ffprobe"] and "subtitle" in data["ffprobe"]: if data["ffprobe"] and "subtitle" in data["ffprobe"]:
for detected_language in data["ffprobe"]["subtitle"]: for detected_language in data["ffprobe"]["subtitle"]:
if "language" not in detected_language: if "language" not in detected_language:
@ -121,10 +125,18 @@ def parse_video_metadata(file, file_size, episode_file_id=None, movie_file_id=No
# if we have ffprobe available # if we have ffprobe available
if ffprobe_path: if ffprobe_path:
try:
data["ffprobe"] = know(video_path=file, context={"provider": "ffmpeg", "ffmpeg": ffprobe_path}) data["ffprobe"] = know(video_path=file, context={"provider": "ffmpeg", "ffmpeg": ffprobe_path})
except KnowitException as e:
logging.error(f"BAZARR ffprobe cannot analyze this video file {file}. Could it be corrupted? {e}")
return None
# or if we have mediainfo available # or if we have mediainfo available
elif mediainfo_path: elif mediainfo_path:
try:
data["mediainfo"] = know(video_path=file, context={"provider": "mediainfo", "mediainfo": mediainfo_path}) data["mediainfo"] = know(video_path=file, context={"provider": "mediainfo", "mediainfo": mediainfo_path})
except KnowitException as e:
logging.error(f"BAZARR mediainfo cannot analyze this video file {file}. Could it be corrupted? {e}")
return None
# else, we warn user of missing binary # else, we warn user of missing binary
else: else:
logging.error("BAZARR require ffmpeg/ffprobe or mediainfo, please install it and make sure to choose it in " logging.error("BAZARR require ffmpeg/ffprobe or mediainfo, please install it and make sure to choose it in "