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
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)
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