def qualityFromFileMeta(filename): """ Get quality from file metadata :param filename: Filename to analyse :return: Quality prefix """ from hachoir_core.stream import StringInputStream from hachoir_parser import guessParser from hachoir_metadata import extractMetadata from hachoir_core import config as hachoir_config hachoir_config.quiet = True if os.path.isfile(filename): base_filename = os.path.basename(filename) bluray = re.search(r"blue?-?ray|hddvd|b[rd](rip|mux)", base_filename, re.I) is not None webdl = re.search(r"web.?dl|web(rip|mux|hd)", base_filename, re.I) is not None for byte in readFileBuffered(filename): try: file_metadata = extractMetadata(guessParser(StringInputStream(byte))) for metadata in chain([file_metadata], file_metadata.iterGroups()): height = metadata.get('height', 0) if height > 1000: return ((Quality.FULLHDTV, Quality.FULLHDBLURAY)[bluray], Quality.FULLHDWEBDL)[webdl] elif height > 680 and height < 800: return ((Quality.HDTV, Quality.HDBLURAY)[bluray], Quality.HDWEBDL)[webdl] elif height < 680: return (Quality.SDTV, Quality.SDDVD)[ re.search(r'dvd|b[rd]rip|blue?-?ray', base_filename, re.I) is not None] except: continue return Quality.UNKNOWN
def qualityFromFileMeta(filename): """ Get quality from file metadata :param filename: Filename to analyse :return: Quality prefix """ from hachoir_core.stream import StringInputStream from hachoir_parser import guessParser from hachoir_metadata import extractMetadata from hachoir_core import config as hachoir_config hachoir_config.quiet = True if os.path.isfile(filename): base_filename = os.path.basename(filename) bluray = re.search(r"blue?-?ray|hddvd|b[rd](rip|mux)", base_filename, re.I) is not None webdl = re.search(r"web.?dl|web(rip|mux|hd)", base_filename, re.I) is not None for byte in readFileBuffered(filename): try: file_metadata = extractMetadata( guessParser(StringInputStream(byte))) for metadata in chain([file_metadata], file_metadata.iterGroups()): height = metadata.get('height', 0) if height > 1000: return ((Quality.FULLHDTV, Quality.FULLHDBLURAY)[bluray], Quality.FULLHDWEBDL)[webdl] elif height > 680 and height < 800: return ((Quality.HDTV, Quality.HDBLURAY)[bluray], Quality.HDWEBDL)[webdl] elif height < 680: return (Quality.SDTV, Quality.SDDVD)[re.search( r'dvd|b[rd]rip|blue?-?ray', base_filename, re.I) is not None] except: continue return Quality.UNKNOWN