mirror of
https://github.com/morpheus65535/bazarr.git
synced 2024-09-20 15:35:58 +08:00
Fixed analysis of corrupted video file that may wrongly throttle providers. #2034
This commit is contained in:
parent
66327677b3
commit
92be39beba
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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:
|
||||||
data["ffprobe"] = know(video_path=file, context={"provider": "ffmpeg", "ffmpeg": ffprobe_path})
|
try:
|
||||||
|
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:
|
||||||
data["mediainfo"] = know(video_path=file, context={"provider": "mediainfo", "mediainfo": mediainfo_path})
|
try:
|
||||||
|
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 "
|
||||||
|
|
Loading…
Reference in a new issue