Exemple #1
0
 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
         ]
Exemple #2
0
    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