def run(self): from sabnzbd.nzbqueue import NzbQueue while 1: art_tup = self.queue.get() if not art_tup: break if self.queue.qsize() < MIN_DECODE_QUEUE and sabnzbd.downloader.Downloader.do.delayed: sabnzbd.downloader.Downloader.do.undelay() article, lines = art_tup nzf = article.nzf nzo = nzf.nzo data = None register = True if lines: logme = None try: logging.debug("Decoding %s", article) data = decode(article, lines) nzf.article_count += 1 except IOError, e: logme = Ta('Decoding %s failed') % article logging.info(logme) sabnzbd.downloader.Downloader.do.pause() article.fetcher = None NzbQueue.do.reset_try_lists(nzf, nzo) register = False except CrcError, e: logme = Ta('CRC Error in %s (%s -> %s)') % (article, e.needcrc, e.gotcrc) logging.info(logme) data = e.data if cfg.fail_on_crc(): new_server_found = self.__search_new_server(article) if new_server_found: register = False logme = None except BadYenc, e: logme = Ta('Badly formed yEnc article in %s') % article logging.info(logme) if cfg.fail_on_crc(): new_server_found = self.__search_new_server(article) if new_server_found: register = False logme = None
def run(self): from sabnzbd.nzbqueue import NzbQueue while 1: sleep(0.001) art_tup = self.queue.get() if not art_tup: break if self.queue.qsize() < MIN_DECODE_QUEUE and sabnzbd.downloader.Downloader.do.delayed: sabnzbd.downloader.Downloader.do.undelay() article, lines = art_tup nzf = article.nzf nzo = nzf.nzo art_id = article.article killed = False data = None register = True # Finish article found = False # Proper article found if lines: logme = None try: if nzo.precheck: raise BadYenc register = True logging.debug("Decoding %s", art_id) data = decode(article, lines) nzf.article_count += 1 found = True except IOError, e: logme = Ta('Decoding %s failed') % art_id logging.warning(logme) logging.info("Traceback: ", exc_info = True) sabnzbd.downloader.Downloader.do.pause() article.fetcher = None NzbQueue.do.reset_try_lists(nzf, nzo) register = False except CrcError, e: logme = Ta('CRC Error in %s (%s -> %s)') % (art_id, e.needcrc, e.gotcrc) logging.info(logme) data = e.data if cfg.fail_on_crc(): new_server_found = self.__search_new_server(article) if new_server_found: register = False logme = None except BadYenc: # Handles precheck and badly formed articles killed = False found = False if nzo.precheck and lines and lines[0].startswith('223 '): # STAT was used, so we only get a status code found = True else: # Examine headers (for precheck) or body (for download) # And look for DMCA clues (while skipping "X-" headers) for line in lines: lline = line.lower() if 'message-id:' in lline: found = True if not line.startswith('X-') and match_str(lline, ('dmca', 'removed', 'cancel', 'blocked')): killed = True break if killed: logme = 'Article removed from server (%s)' logging.info(logme, art_id) if nzo.precheck: if found and not killed: # Pre-check, proper article found, just register logging.debug('Server has article %s', art_id) register = True elif not killed and not found: logme = Ta('Badly formed yEnc article in %s') % art_id logging.info(logme) if not found or killed: new_server_found = self.__search_new_server(article) if new_server_found: register = False logme = None
def run(self): from sabnzbd.nzbqueue import NzbQueue while 1: sleep(0.001) art_tup = self.queue.get() if not art_tup: break if self.queue.qsize( ) < MIN_DECODE_QUEUE and sabnzbd.downloader.Downloader.do.delayed: sabnzbd.downloader.Downloader.do.undelay() article, lines = art_tup nzf = article.nzf nzo = nzf.nzo art_id = article.article killed = False data = None register = True # Finish article found = False # Proper article found if lines: logme = None try: if nzo.precheck: raise BadYenc register = True logging.debug("Decoding %s", art_id) data = decode(article, lines) nzf.article_count += 1 found = True except IOError, e: logme = Ta('Decoding %s failed') % art_id logging.warning(logme) logging.info("Traceback: ", exc_info=True) sabnzbd.downloader.Downloader.do.pause() article.fetcher = None NzbQueue.do.reset_try_lists(nzf, nzo) register = False except CrcError, e: logme = Ta('CRC Error in %s (%s -> %s)') % ( art_id, e.needcrc, e.gotcrc) logging.info(logme) data = e.data if cfg.fail_on_crc(): new_server_found = self.__search_new_server(article) if new_server_found: register = False logme = None except BadYenc: # Handles precheck and badly formed articles killed = False found = False if nzo.precheck and lines and lines[0].startswith('223 '): # STAT was used, so we only get a status code found = True else: # Examine headers (for precheck) or body (for download) # And look for DMCA clues (while skipping "X-" headers) for line in lines: lline = line.lower() if 'message-id:' in lline: found = True if not line.startswith('X-') and match_str( lline, ('dmca', 'removed', 'cancel', 'blocked')): killed = True break if killed: logme = 'Article removed from server (%s)' logging.info(logme, art_id) if nzo.precheck: if found and not killed: # Pre-check, proper article found, just register logging.debug('Server has article %s', art_id) register = True elif not killed and not found: logme = Ta('Badly formed yEnc article in %s') % art_id logging.info(logme) if not found or killed: new_server_found = self.__search_new_server(article) if new_server_found: register = False logme = None