def scene_quality(name, anime=False): # pylint: disable=too-many-branches, too-many-statements """ Return The quality from the scene episode File :param name: Episode filename to analyse :param anime: Boolean to indicate if the show we're resolving is Anime :return: Quality """ if not name: return Quality.UNKNOWN name = ek(path.basename, name) result = None ep = EpisodeTags(name) if anime: sd_options = tags.anime_sd.search(name) hd_options = tags.anime_hd.search(name) full_hd = tags.anime_fullhd.search(name) ep.rex[b'bluray'] = tags.anime_bluray # BluRay if ep.bluray and (full_hd or hd_options): result = Quality.FULLHDBLURAY if full_hd else Quality.HDBLURAY # HD TV elif not ep.bluray and (full_hd or hd_options): result = Quality.FULLHDTV if full_hd else Quality.HDTV # SD DVD elif ep.dvd: result = Quality.SDDVD # SD TV elif sd_options: result = Quality.SDTV return Quality.UNKNOWN if result is None else result # Is it UHD? if ep.vres in [2160, 4320] and ep.scan == 'p': # BluRay full_res = (ep.vres == 4320) if ep.avc and ep.bluray: result = Quality.UHD_4K_BLURAY if not full_res else Quality.UHD_8K_BLURAY # WEB-DL elif (ep.avc and ep.itunes) or ep.web: result = Quality.UHD_4K_WEBDL if not full_res else Quality.UHD_8K_WEBDL # HDTV elif ep.avc and ep.tv == 'hd': result = Quality.UHD_4K_TV if not full_res else Quality.UHD_8K_TV # Is it HD? elif ep.vres in [1080, 720]: if ep.scan == 'p': # BluRay full_res = (ep.vres == 1080) if ep.avc and (ep.bluray or ep.hddvd): result = Quality.FULLHDBLURAY if full_res else Quality.HDBLURAY # WEB-DL elif (ep.avc and ep.itunes) or ep.web: result = Quality.FULLHDWEBDL if full_res else Quality.HDWEBDL # HDTV elif ep.avc and ep.tv == 'hd': result = Quality.FULLHDTV if full_res else Quality.HDTV #1080 HDTV h264 # MPEG2 encoded elif all([ep.vres == 1080, ep.tv == 'hd', ep.mpeg]): result = Quality.RAWHDTV elif all([ep.vres == 720, ep.tv == 'hd', ep.mpeg]): result = Quality.RAWHDTV elif (ep.res == '1080i') and ep.tv == 'hd' and ( ep.mpeg or (ep.raw and ep.avc_non_free)): result = Quality.RAWHDTV elif ep.hrws: result = Quality.HDTV # Is it SD? elif ep.xvid or ep.avc: # SD DVD if ep.dvd or ep.bluray: result = Quality.SDDVD # SDTV elif ep.res == '480p' or any([ep.tv, ep.sat, ep.web]): result = Quality.SDTV elif ep.dvd: # SD DVD result = Quality.SDDVD elif ep.tv: # SD TV/HD TV result = Quality.SDTV return Quality.UNKNOWN if result is None else result
def scene_quality(name, anime=False): # pylint: disable=too-many-branches, too-many-statements """ Return The quality from the scene episode File :param name: Episode filename to analyse :param anime: Boolean to indicate if the show we're resolving is Anime :return: Quality """ if not name: return Quality.UNKNOWN name = ek(path.basename, name) result = None ep = EpisodeTags(name) if anime: sd_options = tags.anime_sd.search(name) hd_options = tags.anime_hd.search(name) full_hd = tags.anime_fullhd.search(name) ep.rex[b'bluray'] = tags.anime_bluray # BluRay if ep.bluray and (full_hd or hd_options): result = Quality.FULLHDBLURAY if full_hd else Quality.HDBLURAY # HD TV elif not ep.bluray and (full_hd or hd_options): result = Quality.FULLHDTV if full_hd else Quality.HDTV # SD DVD elif ep.dvd: result = Quality.SDDVD # SD TV elif sd_options: result = Quality.SDTV return Quality.UNKNOWN if result is None else result # Is it UHD? if ep.vres in [2160, 4320] and ep.scan == 'p': # BluRay full_res = (ep.vres == 4320) if ep.avc and ep.bluray: result = Quality.UHD_4K_BLURAY if not full_res else Quality.UHD_8K_BLURAY # WEB-DL elif (ep.avc and ep.itunes) or ep.web: result = Quality.UHD_4K_WEBDL if not full_res else Quality.UHD_8K_WEBDL # HDTV elif ep.avc and ep.tv == 'hd': result = Quality.UHD_4K_TV if not full_res else Quality.UHD_8K_TV # Is it HD? elif ep.vres in [1080, 720]: if ep.scan == 'p': # BluRay full_res = (ep.vres == 1080) if ep.avc and (ep.bluray or ep.hddvd): result = Quality.FULLHDBLURAY if full_res else Quality.HDBLURAY # WEB-DL elif (ep.avc and ep.itunes) or ep.web: result = Quality.FULLHDWEBDL if full_res else Quality.HDWEBDL # HDTV elif ep.avc and ep.tv == 'hd': if not all([ep.vres == 1080, ep.raw, ep.avc_non_free]): result = Quality.FULLHDTV if full_res else Quality.HDTV else: result = Quality.RAWHDTV elif all([ep.vres == 720, ep.tv == 'hd', ep.mpeg]): result = Quality.RAWHDTV elif (ep.res == '1080i') and ep.tv == 'hd' and (ep.mpeg or (ep.raw and ep.avc_non_free)): result = Quality.RAWHDTV elif ep.hrws: result = Quality.HDTV # Is it SD? elif ep.xvid or ep.avc: # SD DVD if ep.dvd or ep.bluray: result = Quality.SDDVD # SDTV elif ep.res == '480p' or any([ep.tv, ep.sat, ep.web]): result = Quality.SDTV elif ep.dvd: # SD DVD result = Quality.SDDVD elif ep.tv: # SD TV/HD TV result = Quality.SDTV return Quality.UNKNOWN if result is None else result