Catches exceptions when reading mkv containers and return without crashing program.

This commit is contained in:
2018-09-16 15:21:42 +02:00
parent c0621f41d0
commit 3d63a3bf08

View File

@@ -7,7 +7,7 @@ import re
import struct
from babelfish import Error as BabelfishError, Language
from enzyme import MKV
from enzyme import MalformedMKVError, MKV
def sanitize(string, ignore_characters=None):
"""Sanitize a string to strip special characters.
@@ -58,7 +58,14 @@ def refine(video, embedded_subtitles=True, **kwargs):
extension = os.path.splitext(video.name)[1]
if extension == '.mkv':
with open(video.name, 'rb') as f:
mkv = MKV(f)
try:
mkv = MKV(f)
except MalformedMKVError:
logging.error('Failed to parse mkv, malformed file')
return
except KeyError:
logging.error('Key error while opening file, uncompatible mkv container')
return
# main video track
if mkv.video_tracks:
@@ -125,4 +132,4 @@ def refine(video, embedded_subtitles=True, **kwargs):
else:
logging.debug('MKV has no subtitle track')
else:
logging.debug('Unsupported video extension %s', extension)
logging.debug('Unsupported video extension %s', extension)