Exemple #1
0
    def scan_jobs(self, all=False, action=True):
        """ Scan "incomplete" for missing folders,
            'all' is True: Include active folders
            'action' is True, do the recovery action
            returns list of orphaned folders
        """
        from sabnzbd.api import build_history
        result = []
        # Folders from the download queue
        if all:
            registered = []
        else:
            registered = [nzo.work_name for nzo in self.__nzo_list]

        # Retryable folders from History
        items = build_history(output=True)[0]
        # Anything waiting or active or retryable is a known item
        registered.extend([platform_encode(os.path.basename(item['path']))
                           for item in items if item['retry'] or item['loaded'] or item['status'] == Status.QUEUED])

        # Repair unregistered folders
        for folder in globber_full(cfg.download_dir.get_path()):
            name = os.path.basename(folder)
            if os.path.isdir(folder) and name not in registered and name not in IGNORED_FOLDERS:
                if action:
                    logging.info('Repairing job %s', folder)
                    self.repair_job(folder)
                result.append(os.path.basename(folder))
            else:
                if action:
                    logging.info('Skipping repair for job %s', folder)
        return result
Exemple #2
0
    def retry_all_jobs(self, history_db):
        """ Retry all retryable jobs in History """
        from sabnzbd.api import build_history
        result = []

        # Retryable folders from History
        items = build_history()[0]
        registered = [(platform_encode(os.path.basename(item['path'])),
                       item['nzo_id']) for item in items if item['retry']]

        for job in registered:
            logging.info('Repairing job %s', job[0])
            result.append(self.repair_job(job[0]))
            history_db.remove_history(job[1])
        return bool(result)
Exemple #3
0
    def retry_all_jobs(self, history_db):
        """ Retry all retryable jobs in History """
        from sabnzbd.api import build_history
        result = []

        # Retryable folders from History
        items = build_history()[0]
        registered = [(platform_encode(os.path.basename(item['path'])),
                       item['nzo_id'])
                       for item in items if item['retry']]

        for job in registered:
            logging.info('Repairing job %s', job[0])
            result.append(self.repair_job(job[0]))
            history_db.remove_history(job[1])
        return bool(result)
Exemple #4
0
    def scan_jobs(self, all=False, action=True):
        """ Scan "incomplete" for missing folders,
            'all' is True: Include active folders
            'action' is True, do the recovery action
            returns list of orphaned folders
        """
        from sabnzbd.api import build_history
        result = []
        # Folders from the download queue
        if all:
            registered = []
        else:
            registered = [nzo.work_name for nzo in self.__nzo_list]

        # Retryable folders from History
        items = build_history(output=True)[0]
        # Anything waiting or active or retryable is a known item
        registered.extend([
            platform_encode(os.path.basename(item['path'])) for item in items
            if item['retry'] or item['loaded']
            or item['status'] == Status.QUEUED
        ])

        # Repair unregistered folders
        for folder in globber_full(cfg.download_dir.get_path()):
            name = os.path.basename(folder)
            if os.path.isdir(
                    folder
            ) and name not in registered and name not in IGNORED_FOLDERS:
                if action:
                    logging.info('Repairing job %s', folder)
                    self.repair_job(folder)
                result.append(os.path.basename(folder))
            else:
                if action:
                    logging.info('Skipping repair for job %s', folder)
        return result