Catches exceptions when reading mkv containers and return without crashing program.
This commit is contained in:
		
							
								
								
									
										13
									
								
								src/utils.py
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								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)
 | 
			
		||||
        logging.debug('Unsupported video extension %s', extension)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user