def insert_future(self, future, filename, msgid, data, pp=None, script=None, cat=None, priority=NORMAL_PRIORITY, nzbname=None, nzo_info=None): """ Refresh a placeholder nzo with an actual nzo """ assert isinstance(future, NzbObject) if nzo_info is None: nzo_info = {} nzo_id = future.nzo_id if nzo_id in self.__nzo_table: try: sabnzbd.remove_data(nzo_id, future.workpath) logging.info("Regenerating item: %s", nzo_id) r, u, d = future.repair_opts if not r is None: pp = sabnzbd.opts_to_pp(r, u, d) scr = future.script if scr is None: scr = script categ = future.cat if categ is None: categ = cat categ, pp, script, priority = cat_to_opts(categ, pp, script, priority) # Remember old priority old_prio = future.priority try: future.__init__(filename, msgid, pp, scr, nzb=data, futuretype=False, cat=categ, priority=priority, nzbname=nzbname, nzo_info=nzo_info) future.nzo_id = nzo_id self.save(future) except ValueError: self.remove(nzo_id, False) except TypeError: self.remove(nzo_id, False) # Make sure the priority is changed now that we know the category if old_prio != priority: future.priority = None self.set_priority(future.nzo_id, priority) if cfg.auto_sort(): self.sort_by_avg_age() self.reset_try_list() except: logging.error(Ta('Error while adding %s, removing'), nzo_id) logging.info("Traceback: ", exc_info = True) self.remove(nzo_id, False) else: logging.info("Item %s no longer in queue, omitting", nzo_id)
def build_history_info(nzo, storage='', downpath='', postproc_time=0, script_output='', script_line=''): """ Collects all the information needed for the database """ if not downpath: downpath = nzo.downpath path = decode_factory(downpath) storage = decode_factory(storage) script_line = decode_factory(script_line) flagRepair, flagUnpack, flagDelete = nzo.repair_opts nzo_info = decode_factory(nzo.nzo_info) url = decode_factory(nzo.url) completed = int(time.time()) name = decode_factory(nzo.final_name) nzb_name = decode_factory(nzo.filename) category = decode_factory(nzo.cat) pps = ['', 'R', 'U', 'D'] try: pp = pps[sabnzbd.opts_to_pp(flagRepair, flagUnpack, flagDelete)] except: pp = '' script = decode_factory(nzo.script) status = decode_factory(nzo.status) nzo_id = nzo.nzo_id bytes = nzo.bytes_downloaded if script_output: # Compress the output of the script script_log = sqlite3.Binary(zlib.compress(script_output)) # else: script_log = '' download_time = decode_factory(nzo_info.get('download_time', 0)) downloaded = nzo.bytes_downloaded completeness = 0 fail_message = decode_factory(nzo.fail_msg) url_info = nzo_info.get('details', '') or nzo_info.get('more_info', '') # Get the dictionary containing the stages and their unpack process stages = decode_factory(nzo.unpack_info) # Pack the dictionary up into a single string # Stage Name is separated by ::: stage lines by ; and stages by \r\n lines = [] for key, results in stages.iteritems(): lines.append('%s:::%s' % (key, ';'.join(results))) stage_log = '\r\n'.join(lines) # Reuse the old 'report' column to indicate a URL-fetch report = 'future' if nzo.futuretype else '' # Analyze series info only when job is finished series = u'' if postproc_time: seriesname, season, episode, dummy = sabnzbd.newsunpack.analyse_show( nzo.final_name) if seriesname and season and episode: series = u'%s/%s/%s' % (seriesname.lower(), season, episode) return (completed, name, nzb_name, category, pp, script, report, url, status, nzo_id, storage, path, script_log, script_line, download_time, postproc_time, stage_log, downloaded, completeness, fail_message, url_info, bytes, series, nzo.md5sum)
def build_history_info(nzo, storage='', downpath='', postproc_time=0, script_output='', script_line=''): ''' Collects all the information needed for the database ''' if not downpath: downpath = nzo.downpath path = decode_factory(downpath) storage = decode_factory(storage) script_line = decode_factory(script_line) flagRepair, flagUnpack, flagDelete = nzo.repair_opts nzo_info = decode_factory(nzo.nzo_info) # Get the url and newzbin msgid report = decode_factory(nzo_info.get('msgid', '')) if report: url = format_source_url(report) else: url = decode_factory(nzo.url) #group = nzo.group completed = int(time.time()) name = decode_factory(nzo.final_name) nzb_name = decode_factory(nzo.filename) category = decode_factory(nzo.cat) pps = ['', 'R', 'U', 'D'] try: pp = pps[sabnzbd.opts_to_pp(flagRepair, flagUnpack, flagDelete)] except: pp = '' script = decode_factory(nzo.script) status = decode_factory(nzo.status) nzo_id = nzo.nzo_id bytes = nzo.bytes_downloaded if script_output: # Compress the output of the script script_log = sqlite3.Binary(zlib.compress(script_output)) # else: script_log = '' download_time = decode_factory(nzo_info.get('download_time', 0)) downloaded = nzo.bytes_downloaded completeness = 0 fail_message = decode_factory(nzo.fail_msg) url_info = nzo_info.get('more_info', '') # Get the dictionary containing the stages and their unpack process stages = decode_factory(nzo.unpack_info) # Pack the ditionary up into a single string # Stage Name is seperated by ::: stage lines by ; and stages by \r\n lines = [] for key, results in stages.iteritems(): lines.append('%s:::%s' % (key, ';'.join(results))) stage_log = '\r\n'.join(lines) return (completed, name, nzb_name, category, pp, script, report, url, status, nzo_id, storage, path, \ script_log, script_line, download_time, postproc_time, stage_log, downloaded, completeness, \ fail_message, url_info, bytes,)
def build_history_info(nzo, storage='', downpath='', postproc_time=0, script_output='', script_line=''): """ Collects all the information needed for the database """ if not downpath: downpath = nzo.downpath path = decode_factory(downpath) storage = decode_factory(storage) script_line = decode_factory(script_line) flagRepair, flagUnpack, flagDelete = nzo.repair_opts nzo_info = decode_factory(nzo.nzo_info) url = decode_factory(nzo.url) completed = int(time.time()) name = decode_factory(nzo.final_name) nzb_name = decode_factory(nzo.filename) category = decode_factory(nzo.cat) pp = _PP_LOOKUP.get(sabnzbd.opts_to_pp(flagRepair, flagUnpack, flagDelete), 'X') script = decode_factory(nzo.script) status = decode_factory(nzo.status) nzo_id = nzo.nzo_id bytes = nzo.bytes_downloaded if script_output: # Compress the output of the script script_log = sqlite3.Binary(zlib.compress(script_output)) # else: script_log = '' download_time = decode_factory(nzo_info.get('download_time', 0)) downloaded = nzo.bytes_downloaded completeness = 0 fail_message = decode_factory(nzo.fail_msg) url_info = nzo_info.get('details', '') or nzo_info.get('more_info', '') # Get the dictionary containing the stages and their unpack process stages = decode_factory(nzo.unpack_info) # Pack the dictionary up into a single string # Stage Name is separated by ::: stage lines by ; and stages by \r\n lines = [] for key, results in stages.iteritems(): lines.append('%s:::%s' % (key, ';'.join(results))) stage_log = '\r\n'.join(lines) # Reuse the old 'report' column to indicate a URL-fetch report = 'future' if nzo.futuretype else '' # Analyze series info only when job is finished series = u'' if postproc_time: seriesname, season, episode, dummy = sabnzbd.newsunpack.analyse_show(nzo.final_name) if seriesname and season and episode: series = u'%s/%s/%s' % (seriesname.lower(), season, episode) # See whatever the first password was, for the Retry password = '' passwords = get_all_passwords(nzo) if passwords: password = passwords[0] return (completed, name, nzb_name, category, pp, script, report, url, status, nzo_id, storage, path, script_log, script_line, download_time, postproc_time, stage_log, downloaded, completeness, fail_message, url_info, bytes, series, nzo.md5sum, password)
def build_history_info(nzo, storage="", downpath="", postproc_time=0, script_output="", script_line=""): """ Collects all the information needed for the database """ if not downpath: downpath = nzo.downpath path = decode_factory(downpath) storage = decode_factory(storage) script_line = decode_factory(script_line) flagRepair, flagUnpack, flagDelete = nzo.repair_opts nzo_info = decode_factory(nzo.nzo_info) url = decode_factory(nzo.url) completed = int(time.time()) name = decode_factory(nzo.final_name) nzb_name = decode_factory(nzo.filename) category = decode_factory(nzo.cat) pps = ["", "R", "U", "D"] try: pp = pps[sabnzbd.opts_to_pp(flagRepair, flagUnpack, flagDelete)] except: pp = "" script = decode_factory(nzo.script) status = decode_factory(nzo.status) nzo_id = nzo.nzo_id bytes = nzo.bytes_downloaded if script_output: # Compress the output of the script script_log = sqlite3.Binary(zlib.compress(script_output)) # else: script_log = "" download_time = decode_factory(nzo_info.get("download_time", 0)) downloaded = nzo.bytes_downloaded completeness = 0 fail_message = decode_factory(nzo.fail_msg) url_info = nzo_info.get("details", "") or nzo_info.get("more_info", "") # Get the dictionary containing the stages and their unpack process stages = decode_factory(nzo.unpack_info) # Pack the dictionary up into a single string # Stage Name is separated by ::: stage lines by ; and stages by \r\n lines = [] for key, results in stages.iteritems(): lines.append("%s:::%s" % (key, ";".join(results))) stage_log = "\r\n".join(lines) # Reuse the old 'report' column to indicate a URL-fetch report = "future" if nzo.futuretype else "" # Analyze series info only when job is finished series = u"" if postproc_time: seriesname, season, episode, dummy = sabnzbd.newsunpack.analyse_show(nzo.final_name) if seriesname and season and episode: series = u"%s/%s/%s" % (seriesname.lower(), season, episode) return ( completed, name, nzb_name, category, pp, script, report, url, status, nzo_id, storage, path, script_log, script_line, download_time, postproc_time, stage_log, downloaded, completeness, fail_message, url_info, bytes, series, nzo.md5sum, )
def build_history_info(nzo, storage='', downpath='', postproc_time=0, script_output='', script_line=''): ''' Collects all the information needed for the database ''' if not downpath: downpath = nzo.downpath path = decode_factory(downpath) storage = decode_factory(storage) script_line = decode_factory(script_line) flagRepair, flagUnpack, flagDelete = nzo.repair_opts nzo_info = decode_factory(nzo.nzo_info) # Get the url and newzbin msgid report = decode_factory(nzo_info.get('msgid', '')) if report: url = format_source_url(report) else: url = decode_factory(nzo.url) #group = nzo.group completed = int(time.time()) name = decode_factory(nzo.final_name) nzb_name = decode_factory(nzo.filename) category = decode_factory(nzo.cat) pps = ['','R','U','D'] try: pp = pps[sabnzbd.opts_to_pp(flagRepair, flagUnpack, flagDelete)] except: pp = '' script = decode_factory(nzo.script) status = decode_factory(nzo.status) nzo_id = nzo.nzo_id bytes = nzo.bytes_downloaded if script_output: # Compress the output of the script script_log = sqlite3.Binary(zlib.compress(script_output)) # else: script_log = '' download_time = decode_factory(nzo_info.get('download_time', 0)) downloaded = nzo.bytes_downloaded completeness = 0 fail_message = decode_factory(nzo.fail_msg) url_info = nzo_info.get('more_info', '') # Get the dictionary containing the stages and their unpack process stages = decode_factory(nzo.unpack_info) # Pack the ditionary up into a single string # Stage Name is seperated by ::: stage lines by ; and stages by \r\n lines = [] for key, results in stages.iteritems(): lines.append('%s:::%s' % (key, ';'.join(results))) stage_log = '\r\n'.join(lines) return (completed, name, nzb_name, category, pp, script, report, url, status, nzo_id, storage, path, \ script_log, script_line, download_time, postproc_time, stage_log, downloaded, completeness, \ fail_message, url_info, bytes,)