def __init__(self, media_type, uncached=False): """ Handles sorting of sources according to users preference :param media_type: Type of media to be sorted (movie/episode) :type media_type: str :param uncached: Whether to include uncached torrents or not :type uncached: bool """ self.sort_method = g.get_int_setting("general.sortsources") self.resolution_list = reversed(get_accepted_resolution_list()) self.media_type = media_type self.torrent_list = [] self.hoster_list = [] self.cloud_files = [] self.source_types = ["torrent_list", "hoster_list", "cloud_files"] self.debrid_priorities = get_debrid_priorities() self._resolution_lambda = lambda i, j, k: i == k["quality"] and \ (j["slug"] == k.get("debrid_provider", "") or (not k.get("debrid_provider", "") and uncached)) self.group_style = [ self._group_method_zero, self._group_method_one, self._group_method_two, lambda: self.torrent_list + self.hoster_list + self.cloud_files ]
def _prem_terminate(self): # pylint: disable=method-hidden if self.canceled: monkey_requests.PRE_TERM_BLOCK = True return True if g.get_bool_setting('preem.cloudfiles') and len( self.sources_information["cloudFiles"]) > 0: monkey_requests.PRE_TERM_BLOCK = True return True if g.get_bool_setting('preem.adaptiveSources') and len( self.sources_information["adaptiveSources"]) > 0: monkey_requests.PRE_TERM_BLOCK = True return True if not g.get_bool_setting('preem.enabled'): return False prem_min = self._get_pre_term_min() pre_term_log_string = 'Pre-emptively Terminated' approved_resolutions = source_utils.get_accepted_resolution_list() prem_resolutions = approved_resolutions[prem_min:] limit = g.get_int_setting('preem.limit') type = g.get_int_setting('preem.type') try: if type == 0 and len( self._get_sources_by_resolution( prem_resolutions, "torrentCacheSources")) >= limit: g.log(pre_term_log_string, 'info') monkey_requests.PRE_TERM_BLOCK = True return True if type == 1 and len( self._get_sources_by_resolution(prem_resolutions, "hosterSources")) >= limit: g.log(pre_term_log_string, 'info') monkey_requests.PRE_TERM_BLOCK = True return True if type == 2: # Terminating on both hosters and torrents sources = self._get_sources_by_resolution( prem_resolutions, "hosterSources") sources.append( self._get_sources_by_resolution(prem_resolutions, "torrentCacheSources")) if len(sources) >= limit: g.log(pre_term_log_string, 'info') monkey_requests.PRE_TERM_BLOCK = True return True except (ValueError, KeyError, IndexError): pass return False