# find out nzbget version to branch logic, 0.8.x and older will return 0 nzbget_version_str = nzbGetRPC.version() nzbget_version = config.to_int( nzbget_version_str[:nzbget_version_str.find(".")]) # v8 and older, no priority or dupe info if nzbget_version == 0: if nzbcontent64: nzbget_result = nzbGetRPC.append(nzb_filename, sickbeard.NZBGET_CATEGORY, add_to_top, nzbcontent64) else: # appendurl not supported on older versions, so d/l nzb data from url ourselves if nzb.resultType == "nzb": genProvider = GenericProvider("") data = genProvider.getURL(nzb.url) if data: nzbcontent64 = standard_b64encode(data) nzbget_result = nzbGetRPC.append( nzb_filename, sickbeard.NZBGET_CATEGORY, add_to_top, nzbcontent64) # v12+ pass dupekey + dupescore elif nzbget_version >= 12: if nzbcontent64: nzbget_result = nzbGetRPC.append(nzb_filename, sickbeard.NZBGET_CATEGORY, nzbgetprio, False, nzbcontent64, False, dupekey,
def sendNZB(nzb, proper=False): """ Sends NZB to NZBGet client :param nzb: nzb object :param proper: True if this is a Proper download, False if not. Defaults to False """ addToTop = False nzbgetprio = 0 category = sickbeard.NZBGET_CATEGORY if nzb.show.is_anime: category = sickbeard.NZBGET_CATEGORY_ANIME if sickbeard.NZBGET_USE_HTTPS: nzbgetXMLrpc = "https://%(username)s:%(password)s@%(host)s/xmlrpc" else: nzbgetXMLrpc = "http://%(username)s:%(password)s@%(host)s/xmlrpc" if sickbeard.NZBGET_HOST == None: logging.error("No NZBget host found in configuration. Please configure it.") return False url = nzbgetXMLrpc % {"host": sickbeard.NZBGET_HOST, "username": sickbeard.NZBGET_USERNAME, "password": sickbeard.NZBGET_PASSWORD} nzbGetRPC = xmlrpclib.ServerProxy(url) try: if nzbGetRPC.writelog("INFO", "SiCKRAGE connected to drop of %s any moment now." % (nzb.name + ".nzb")): logging.debug("Successful connected to NZBget") else: logging.error("Successful connected to NZBget, but unable to send a message") except httplib.socket.error: logging.error( "Please check your NZBget host and port (if it is running). NZBget is not responding to this combination") return False except xmlrpclib.ProtocolError as e: if e.errmsg == "Unauthorized": logging.error("NZBget username or password is incorrect.") else: logging.error("Protocol Error: " + e.errmsg) return False dupekey = "" dupescore = 0 # if it aired recently make it high priority and generate DupeKey/Score for curEp in nzb.episodes: if dupekey == "": if curEp.show.indexer == 1: dupekey = "SiCKRAGE-" + str(curEp.show.indexerid) elif curEp.show.indexer == 2: dupekey = "SiCKRAGE-tvr" + str(curEp.show.indexerid) dupekey += "-" + str(curEp.season) + "." + str(curEp.episode) if datetime.date.today() - curEp.airdate <= datetime.timedelta(days=7): addToTop = True nzbgetprio = sickbeard.NZBGET_PRIORITY else: category = sickbeard.NZBGET_CATEGORY_BACKLOG if nzb.show.is_anime: category = sickbeard.NZBGET_CATEGORY_ANIME_BACKLOG if nzb.quality != Quality.UNKNOWN: dupescore = nzb.quality * 100 if proper: dupescore += 10 nzbcontent64 = None if nzb.resultType == "nzbdata": data = nzb.extraInfo[0] nzbcontent64 = standard_b64encode(data) logging.info("Sending NZB to NZBget") logging.debug("URL: " + url) try: # Find out if nzbget supports priority (Version 9.0+), old versions beginning with a 0.x will use the old command nzbget_version_str = nzbGetRPC.version() nzbget_version = helpers.tryInt(nzbget_version_str[:nzbget_version_str.find(".")]) if nzbget_version == 0: if nzbcontent64 is not None: nzbget_result = nzbGetRPC.append(nzb.name + ".nzb", category, addToTop, nzbcontent64) else: if nzb.resultType == "nzb": genProvider = GenericProvider("") data = genProvider.getURL(nzb.url) if data == None: return False nzbcontent64 = standard_b64encode(data) nzbget_result = nzbGetRPC.append(nzb.name + ".nzb", category, addToTop, nzbcontent64) elif nzbget_version == 12: if nzbcontent64 is not None: nzbget_result = nzbGetRPC.append(nzb.name + ".nzb", category, nzbgetprio, False, nzbcontent64, False, dupekey, dupescore, "score") else: nzbget_result = nzbGetRPC.appendurl(nzb.name + ".nzb", category, nzbgetprio, False, nzb.url, False, dupekey, dupescore, "score") # v13+ has a new combined append method that accepts both (url and content) # also the return value has changed from boolean to integer # (Positive number representing NZBID of the queue item. 0 and negative numbers represent error codes.) elif nzbget_version >= 13: nzbget_result = True if nzbGetRPC.append(nzb.name + ".nzb", nzbcontent64 if nzbcontent64 is not None else nzb.url, category, nzbgetprio, False, False, dupekey, dupescore, "score") > 0 else False else: if nzbcontent64 is not None: nzbget_result = nzbGetRPC.append(nzb.name + ".nzb", category, nzbgetprio, False, nzbcontent64) else: nzbget_result = nzbGetRPC.appendurl(nzb.name + ".nzb", category, nzbgetprio, False, nzb.url) if nzbget_result: logging.debug("NZB sent to NZBget successfully") return True else: logging.error("NZBget could not add %s to the queue" % (nzb.name + ".nzb")) return False except Exception: logging.error("Connect Error to NZBget: could not add %s to the queue" % (nzb.name + ".nzb")) return False
data = nzb.extraInfo[0] nzbcontent64 = standard_b64encode(data) logger.log(u"Sending NZB to NZBget") logger.log(u"URL: " + url, logger.DEBUG) try: # Find out if nzbget supports priority (Version 9.0+), old versions beginning with a 0.x will use the old command nzbget_version_str = nzbGetRPC.version() nzbget_version = helpers.tryInt(nzbget_version_str[:nzbget_version_str.find(".")]) if nzbget_version == 0: if nzbcontent64 is not None: nzbget_result = nzbGetRPC.append(nzb.name + ".nzb", category, addToTop, nzbcontent64) else: if nzb.resultType == "nzb": genProvider = GenericProvider("") data = genProvider.getURL(nzb.url) if (data == None): return False nzbcontent64 = standard_b64encode(data) nzbget_result = nzbGetRPC.append(nzb.name + ".nzb", category, addToTop, nzbcontent64) elif nzbget_version == 12: if nzbcontent64 is not None: nzbget_result = nzbGetRPC.append(nzb.name + ".nzb", category, nzbgetprio, False, nzbcontent64, False, dupekey, dupescore, "score") else: nzbget_result = nzbGetRPC.appendurl(nzb.name + ".nzb", category, nzbgetprio, False, nzb.url, False, dupekey, dupescore, "score") # v13+ has a new combined append method that accepts both (url and content) # also the return value has changed from boolean to integer # (Positive number representing NZBID of the queue item. 0 and negative numbers represent error codes.)
def send_nzb(nzb, proper=False): result = False add_to_top = False nzbget_prio = 0 authed, auth_msg, rpc_client = test_nzbget(sickbeard.NZBGET_HOST, sickbeard.NZBGET_USE_HTTPS, sickbeard.NZBGET_USERNAME, sickbeard.NZBGET_PASSWORD) if not authed: return authed dupekey = '' dupescore = 0 # if it aired recently make it high priority and generate DupeKey/Score for curEp in nzb.episodes: if '' == dupekey: dupekey = "SickGear-%s%s" % (sickbeard.indexerApi( curEp.show.indexer).config.get('dupekey', ''), curEp.show.indexerid) dupekey += '-%s.%s' % (curEp.season, curEp.episode) if datetime.date.today() - curEp.airdate <= datetime.timedelta(days=7): add_to_top = True nzbget_prio = sickbeard.NZBGET_PRIORITY if Quality.UNKNOWN != nzb.quality: dupescore = nzb.quality * 100 if proper: dupescore += 10 nzbcontent64 = None if 'nzbdata' == nzb.resultType: data = nzb.get_data() if not data: return False nzbcontent64 = standard_b64encode(data) elif 'Anizb' == nzb.provider.name and 'nzb' == nzb.resultType: gen_provider = GenericProvider('') data = gen_provider.get_url(nzb.url) if None is data: return result nzbcontent64 = standard_b64encode(data) logger.log(u'Sending NZB to NZBGet: %s' % nzb.name) try: # Find out if nzbget supports priority (Version 9.0+), old versions beginning with a 0.x will use the old cmd nzbget_version_str = rpc_client.version() nzbget_version = tryInt( nzbget_version_str[:nzbget_version_str.find('.')]) # v13+ has a combined append method that accepts both (url and content) # also the return value has changed from boolean to integer # (Positive number representing NZBID of the queue item. 0 and negative numbers represent error codes.) if 13 <= nzbget_version: nzbget_result = rpc_client.append( '%s.nzb' % nzb.name, (nzbcontent64, nzb.url)[None is nzbcontent64], sickbeard.NZBGET_CATEGORY, nzbget_prio, False, False, dupekey, dupescore, 'score') > 0 elif 12 == nzbget_version: if nzbcontent64 is not None: nzbget_result = rpc_client.append('%s.nzb' % nzb.name, sickbeard.NZBGET_CATEGORY, nzbget_prio, False, nzbcontent64, False, dupekey, dupescore, 'score') else: nzbget_result = rpc_client.appendurl('%s.nzb' % nzb.name, sickbeard.NZBGET_CATEGORY, nzbget_prio, False, nzb.url, False, dupekey, dupescore, 'score') elif 0 == nzbget_version: if nzbcontent64 is not None: nzbget_result = rpc_client.append('%s.nzb' % nzb.name, sickbeard.NZBGET_CATEGORY, add_to_top, nzbcontent64) else: if 'nzb' == nzb.resultType: gen_provider = GenericProvider('') data = gen_provider.get_url(nzb.url) if None is data: return result nzbcontent64 = standard_b64encode(data) nzbget_result = rpc_client.append('%s.nzb' % nzb.name, sickbeard.NZBGET_CATEGORY, add_to_top, nzbcontent64) else: if nzbcontent64 is not None: nzbget_result = rpc_client.append('%s.nzb' % nzb.name, sickbeard.NZBGET_CATEGORY, nzbget_prio, False, nzbcontent64) else: nzbget_result = rpc_client.appendurl('%s.nzb' % nzb.name, sickbeard.NZBGET_CATEGORY, nzbget_prio, False, nzb.url) if nzbget_result: logger.log(u'NZB sent to NZBget successfully', logger.DEBUG) result = True else: logger.log( u'NZBget could not add %s to the queue' % ('%s.nzb' % nzb.name), logger.ERROR) except: logger.log( u'Connect Error to NZBget: could not add %s to the queue' % ('%s.nzb' % nzb.name), logger.ERROR) return result
def _blacklist_torrent_url(torrentUrl): logger.log(u'Blacklisting the url "%s"' % (torrentUrl), logger.MESSAGE) from sickbeard.providers.generic import GenericProvider GenericProvider.blacklistUrl(torrentUrl)
def sendNZB(nzb, proper=False): """ Sends NZB to NZBGet client :param nzb: nzb object :param proper: True if this is a Proper download, False if not. Defaults to False """ addToTop = False nzbgetprio = 0 category = sickbeard.NZBGET_CATEGORY if nzb.show.is_anime: category = sickbeard.NZBGET_CATEGORY_ANIME if sickbeard.NZBGET_USE_HTTPS: nzbgetXMLrpc = "https://%(username)s:%(password)s@%(host)s/xmlrpc" else: nzbgetXMLrpc = "http://%(username)s:%(password)s@%(host)s/xmlrpc" if sickbeard.NZBGET_HOST == None: logging.error( "No NZBget host found in configuration. Please configure it.") return False url = nzbgetXMLrpc % { "host": sickbeard.NZBGET_HOST, "username": sickbeard.NZBGET_USERNAME, "password": sickbeard.NZBGET_PASSWORD } nzbGetRPC = xmlrpclib.ServerProxy(url) try: if nzbGetRPC.writelog( "INFO", "SiCKRAGE connected to drop of %s any moment now." % (nzb.name + ".nzb")): logging.debug("Successful connected to NZBget") else: logging.error( "Successful connected to NZBget, but unable to send a message") except httplib.socket.error: logging.error( "Please check your NZBget host and port (if it is running). NZBget is not responding to this combination" ) return False except xmlrpclib.ProtocolError as e: if e.errmsg == "Unauthorized": logging.error("NZBget username or password is incorrect.") else: logging.error("Protocol Error: " + e.errmsg) return False dupekey = "" dupescore = 0 # if it aired recently make it high priority and generate DupeKey/Score for curEp in nzb.episodes: if dupekey == "": if curEp.show.indexer == 1: dupekey = "SiCKRAGE-" + str(curEp.show.indexerid) elif curEp.show.indexer == 2: dupekey = "SiCKRAGE-tvr" + str(curEp.show.indexerid) dupekey += "-" + str(curEp.season) + "." + str(curEp.episode) if datetime.date.today() - curEp.airdate <= datetime.timedelta(days=7): addToTop = True nzbgetprio = sickbeard.NZBGET_PRIORITY else: category = sickbeard.NZBGET_CATEGORY_BACKLOG if nzb.show.is_anime: category = sickbeard.NZBGET_CATEGORY_ANIME_BACKLOG if nzb.quality != Quality.UNKNOWN: dupescore = nzb.quality * 100 if proper: dupescore += 10 nzbcontent64 = None if nzb.resultType == "nzbdata": data = nzb.extraInfo[0] nzbcontent64 = standard_b64encode(data) logging.info("Sending NZB to NZBget") logging.debug("URL: " + url) try: # Find out if nzbget supports priority (Version 9.0+), old versions beginning with a 0.x will use the old command nzbget_version_str = nzbGetRPC.version() nzbget_version = helpers.tryInt( nzbget_version_str[:nzbget_version_str.find(".")]) if nzbget_version == 0: if nzbcontent64 is not None: nzbget_result = nzbGetRPC.append(nzb.name + ".nzb", category, addToTop, nzbcontent64) else: if nzb.resultType == "nzb": genProvider = GenericProvider("") data = genProvider.getURL(nzb.url) if data == None: return False nzbcontent64 = standard_b64encode(data) nzbget_result = nzbGetRPC.append(nzb.name + ".nzb", category, addToTop, nzbcontent64) elif nzbget_version == 12: if nzbcontent64 is not None: nzbget_result = nzbGetRPC.append(nzb.name + ".nzb", category, nzbgetprio, False, nzbcontent64, False, dupekey, dupescore, "score") else: nzbget_result = nzbGetRPC.appendurl(nzb.name + ".nzb", category, nzbgetprio, False, nzb.url, False, dupekey, dupescore, "score") # v13+ has a new combined append method that accepts both (url and content) # also the return value has changed from boolean to integer # (Positive number representing NZBID of the queue item. 0 and negative numbers represent error codes.) elif nzbget_version >= 13: nzbget_result = True if nzbGetRPC.append( nzb.name + ".nzb", nzbcontent64 if nzbcontent64 is not None else nzb.url, category, nzbgetprio, False, False, dupekey, dupescore, "score") > 0 else False else: if nzbcontent64 is not None: nzbget_result = nzbGetRPC.append(nzb.name + ".nzb", category, nzbgetprio, False, nzbcontent64) else: nzbget_result = nzbGetRPC.appendurl(nzb.name + ".nzb", category, nzbgetprio, False, nzb.url) if nzbget_result: logging.debug("NZB sent to NZBget successfully") return True else: logging.error("NZBget could not add %s to the queue" % (nzb.name + ".nzb")) return False except Exception: logging.error( "Connect Error to NZBget: could not add %s to the queue" % (nzb.name + ".nzb")) return False
def send_nzb(nzb): result = False add_to_top = False nzbget_prio = 0 authed, auth_msg, rpc_client = test_nzbget( sickbeard.NZBGET_HOST, sickbeard.NZBGET_USE_HTTPS, sickbeard.NZBGET_USERNAME, sickbeard.NZBGET_PASSWORD) if not authed: return authed dupekey = '' dupescore = 0 # if it aired recently make it high priority and generate DupeKey/Score for curEp in nzb.episodes: if '' == dupekey: dupekey = 'SickGear-%s%s' % ( sickbeard.indexerApi(curEp.show.indexer).config.get('dupekey', ''), curEp.show.indexerid) dupekey += '-%s.%s' % (curEp.season, curEp.episode) if datetime.date.today() - curEp.airdate <= datetime.timedelta(days=7) or \ datetime.date.fromordinal(1) >= curEp.airdate: add_to_top = True nzbget_prio = sickbeard.NZBGET_PRIORITY if Quality.UNKNOWN != nzb.quality: dupescore = nzb.quality * 100 dupescore += (0, 9 + nzb.properlevel)[0 < nzb.properlevel] nzbcontent64 = None if 'nzbdata' == nzb.resultType: data = nzb.get_data() if not data: return False nzbcontent64 = standard_b64encode(data) elif 'Anizb' == nzb.provider.name and 'nzb' == nzb.resultType: gen_provider = GenericProvider('') data = gen_provider.get_url(nzb.url) if None is data: return result nzbcontent64 = standard_b64encode(data) logger.log(u'Sending NZB to NZBGet: %s' % nzb.name) try: # Find out if nzbget supports priority (Version 9.0+), old versions beginning with a 0.x will use the old cmd nzbget_version_str = rpc_client.version() nzbget_version = tryInt(nzbget_version_str[:nzbget_version_str.find('.')]) # v13+ has a combined append method that accepts both (url and content) # also the return value has changed from boolean to integer # (Positive number representing NZBID of the queue item. 0 and negative numbers represent error codes.) if 13 <= nzbget_version: nzbget_result = rpc_client.append( '%s.nzb' % nzb.name, (nzbcontent64, nzb.url)[None is nzbcontent64], sickbeard.NZBGET_CATEGORY, nzbget_prio, False, False, dupekey, dupescore, 'score') > 0 elif 12 == nzbget_version: if nzbcontent64 is not None: nzbget_result = rpc_client.append('%s.nzb' % nzb.name, sickbeard.NZBGET_CATEGORY, nzbget_prio, False, nzbcontent64, False, dupekey, dupescore, 'score') else: nzbget_result = rpc_client.appendurl('%s.nzb' % nzb.name, sickbeard.NZBGET_CATEGORY, nzbget_prio, False, nzb.url, False, dupekey, dupescore, 'score') elif 0 == nzbget_version: if nzbcontent64 is not None: nzbget_result = rpc_client.append('%s.nzb' % nzb.name, sickbeard.NZBGET_CATEGORY, add_to_top, nzbcontent64) else: if 'nzb' == nzb.resultType: gen_provider = GenericProvider('') data = gen_provider.get_url(nzb.url) if None is data: return result nzbcontent64 = standard_b64encode(data) nzbget_result = rpc_client.append('%s.nzb' % nzb.name, sickbeard.NZBGET_CATEGORY, add_to_top, nzbcontent64) else: if nzbcontent64 is not None: nzbget_result = rpc_client.append('%s.nzb' % nzb.name, sickbeard.NZBGET_CATEGORY, nzbget_prio, False, nzbcontent64) else: nzbget_result = rpc_client.appendurl('%s.nzb' % nzb.name, sickbeard.NZBGET_CATEGORY, nzbget_prio, False, nzb.url) if nzbget_result: logger.log(u'NZB sent to NZBGet successfully', logger.DEBUG) result = True else: logger.log(u'NZBGet could not add %s to the queue' % ('%s.nzb' % nzb.name), logger.ERROR) except(StandardError, Exception): logger.log(u'Connect Error to NZBGet: could not add %s to the queue' % ('%s.nzb' % nzb.name), logger.ERROR) return result