From c0621f41d0ad2f045c2e717705ec2ac1ed248620 Mon Sep 17 00:00:00 2001 From: Kevin Midboe Date: Sun, 16 Sep 2018 15:15:12 +0200 Subject: [PATCH 1/2] Removed archives from accepted filetypes --- src/core.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/core.py b/src/core.py index a87ea46..14cbbf2 100755 --- a/src/core.py +++ b/src/core.py @@ -22,9 +22,6 @@ from utils import sanitize, refine logging.basicConfig(filename=env.logfile, level=logging.INFO) -#: Supported archive extensions -ARCHIVE_EXTENSIONS = ('.rar',) - def search_external_subtitles(path, directory=None): dirpath, filename = os.path.split(path) dirpath = dirpath or '.' @@ -128,7 +125,8 @@ def scan_videos(path): # scan for videos for filename in filenames: # filter on videos and archives - if not (filename.endswith(VIDEO_EXTENSIONS) or filename.endswith(ARCHIVE_EXTENSIONS)): + if not (filename.endswith(VIDEO_EXTENSIONS)): + logging.debug('Skipping non-video file %s', filename) continue # skip hidden files From 3d63a3bf0816ae2e3a06987b79624e7a07b19dd7 Mon Sep 17 00:00:00 2001 From: Kevin Midboe Date: Sun, 16 Sep 2018 15:21:42 +0200 Subject: [PATCH 2/2] Catches exceptions when reading mkv containers and return without crashing program. --- src/utils.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/utils.py b/src/utils.py index f30b6fa..af53255 100644 --- a/src/utils.py +++ b/src/utils.py @@ -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) \ No newline at end of file + logging.debug('Unsupported video extension %s', extension)