def add_msgid(msgid, pp=None, script=None, cat=None, priority=None, nzbname=None): """ Add NZB based on newzbin report number, attributes optional """ if pp and pp == "-1": pp = None if script and script.lower() == 'default': script = None if cat and cat.lower() == 'default': cat = None if cfg.newzbin_username() and cfg.newzbin_password(): logging.info('Fetching msgid %s from www.newzbin2.es', msgid) msg = T('fetching msgid %s from www.newzbin2.es') % msgid future_nzo = NzbQueue.do.generate_future(msg, pp, script, cat=cat, url=msgid, priority=priority, nzbname=nzbname) MSGIDGrabber.do.grab(msgid, future_nzo) else: logging.error( Ta('Error Fetching msgid %s from www.newzbin2.es - Please make sure your Username and Password are set' ), msgid)
def add_msgid(msgid, pp=None, script=None, cat=None, priority=None, nzbname=None): """ Add NZB based on newzbin report number, attributes optional """ if pp and pp=="-1": pp = None if script and script.lower()=='default': script = None if cat and cat.lower()=='default': cat = None if cfg.newzbin_username() and cfg.newzbin_password(): logging.info('Fetching msgid %s from www.newzbin.com', msgid) msg = T('fetching msgid %s from www.newzbin.com') % msgid future_nzo = NzbQueue.do.generate_future(msg, pp, script, cat=cat, url=msgid, priority=priority, nzbname=nzbname) MSGIDGrabber.do.grab(msgid, future_nzo) else: logging.error(Ta('Error Fetching msgid %s from www.newzbin.com - Please make sure your Username and Password are set'), msgid)
def run(self, delete=None, force=False): if not (cfg.newzbin_bookmarks() or force): return if not (cfg.newzbin_username() and cfg.newzbin_password()): return headers = { 'User-Agent': 'SABnzbd+/%s' % sabnzbd.__version__, } # Connect to Newzbin try: if _HAVE_SSL: conn = httplib.HTTPSConnection(cfg.newzbin_url()) else: conn = httplib.HTTPConnection(cfg.newzbin_url()) if delete: logging.debug('Trying to delete Newzbin bookmark %s', delete) postdata = { 'username': cfg.newzbin_username(), 'password': cfg.newzbin_password(), 'action': 'delete', \ 'reportids' : delete } else: logging.info('Fetching Newzbin bookmarks') postdata = { 'username': cfg.newzbin_username(), 'password': cfg.newzbin_password(), 'action': 'fetch'} postdata = urllib.urlencode(postdata) headers['Content-type'] = 'application/x-www-form-urlencoded' fetchurl = '/api/bookmarks/' conn.request('POST', fetchurl, postdata, headers) response = conn.getresponse() except: _warn_user('Problem accessing Newzbin server.') logging.info("Traceback: ", exc_info = True) return data = response.read() # Get the status rcode = str(response.status) # Official return codes: # 200 = OK, NZB content follows # 204 = No content # 400 = Bad Request, please supply all parameters # (this generally means reportid or fileid is missing; missing user/pass gets you a 401) # 401 = Unauthorised, check username/password? # 402 = Payment Required, not Premium # 403 = Forbidden (incorrect auth) # 500 = Internal Server Error, please report to Administrator # 503 = Service Unavailable, site is currently down if rcode not in ('500', '503'): _access_ok() if rcode == '204': logging.debug("No bookmarks set") elif rcode in ('401', '403'): logging.warning(Ta('Unauthorised, check your newzbin username/password')) elif rcode in ('402'): logging.warning(Ta('You have no credit on your Newzbin account')) elif rcode in ('500', '503'): _warn_user('Newzbin has a server problem (%s).' % rcode) elif rcode == '200': if delete: if data.startswith('1'): logging.info('Deleted newzbin bookmark %s', delete) if delete in self.bookmarks: self.bookmarks.remove(delete) else: if delete in self.bookmarks: logging.warning(Ta('Could not delete newzbin bookmark %s'), delete) else: for line in data.split('\n'): try: msgid, size, text = line.split('\t', 2) except: msgid = size = text = None if msgid and (msgid not in self.bookmarks): self.bookmarks.append(msgid) logging.info("Found new bookmarked msgid %s (%s)", msgid, text) sabnzbd.add_msgid(int(msgid), None, None, priority=None) else: logging.error(Ta('Newzbin gives undocumented error code (%s)'), rcode) self._save() self.__busy = False
def _grabnzb(msgid): """ Grab one msgid from newzbin """ msg = '' retry = (60, None, None, None) nzo_info = {'msgid': msgid} logging.info('Fetching NZB for Newzbin report #%s', msgid) headers = {'User-agent' : 'SABnzbd+/%s' % sabnzbd.version.__version__} # Connect to Newzbin try: if _HAVE_SSL: conn = httplib.HTTPSConnection(cfg.newzbin_url()) else: conn = httplib.HTTPConnection(cfg.newzbin_url()) postdata = { 'username': cfg.newzbin_username(), 'password': cfg.newzbin_password(), 'reportid': msgid } postdata = urllib.urlencode(postdata) headers['Content-type'] = 'application/x-www-form-urlencoded' fetchurl = '/api/dnzb/' conn.request('POST', fetchurl, postdata, headers) response = conn.getresponse() # Save debug info if we have to data = response.read() except: _warn_user('Problem accessing Newzbin server, wait 1 min.') logging.info("Traceback: ", exc_info = True) return retry # Get the filename rcode = response.getheader('X-DNZB-RCode') rtext = response.getheader('X-DNZB-RText') try: nzo_info['more_info'] = response.getheader('X-DNZB-MoreInfo') except: # Only some reports will generate a moreinfo header pass if not (rcode or rtext): logging.error(T('Newzbin server changed its protocol')) return retry # Official return codes: # 200 = OK, NZB content follows # 400 = Bad Request, please supply all parameters # (this generally means reportid or fileid is missing; missing user/pass gets you a 401) # 401 = Unauthorised, check username/password? # 402 = Payment Required, not Premium # 404 = Not Found, data doesn't exist? # (only working for reportids, see Technical Limitations) # 450 = Try Later, wait <x> seconds for counter to reset # (for an explanation of this, see DNZB Rate Limiting) # 500 = Internal Server Error, please report to Administrator # 503 = Service Unavailable, site is currently down if rcode in ('500', '503'): _warn_user('Newzbin has a server problem (%s, %s), wait 5 min.' % (rcode, rtext)) return retry _access_ok() if rcode == '450': wait_re = re.compile('wait (\d+) seconds') try: wait = int(wait_re.findall(rtext)[0]) except: wait = 60 if wait > 60: wait = 60 logging.debug("Newzbin says we should wait for %s sec", wait) return int(wait+1), None, None, None if rcode in ('402'): msg = Ta('You have no credit on your Newzbin account') return None, None, None, msg if rcode in ('401'): msg = Ta('Unauthorised, check your newzbin username/password') return None, None, None, msg if rcode in ('400', '404'): msg = Ta('Newzbin report %s not found') % msgid return None, None, None, msg if rcode != '200': msg = Ta('Newzbin gives undocumented error code (%s, %s)') % (rcode, rtext) return 60, None, None, msg # Process data report_name = response.getheader('X-DNZB-Name') report_cat = response.getheader('X-DNZB-Category') if not (report_name and report_cat): msg = Ta('Newzbin server fails to give info for %s') % msgid return 60, None, None, msg # sanitize report_name newname = sanitize_foldername(report_name) if len(newname) > 80: newname = newname[0:79].strip('. ') newname += ".nzb" logging.info('Successfully fetched report %s - %s (cat=%s) (%s)', msgid, report_name, report_cat, newname) return (newname, data, report_cat, nzo_info)
def run(self, delete=None): headers = { 'User-Agent': 'SABnzbd+/%s' % sabnzbd.__version__, } # Connect to Newzbin try: if _HAVE_SSL: conn = httplib.HTTPSConnection('www.newzbin.com') else: conn = httplib.HTTPConnection('www.newzbin.com') if delete: logging.debug('Trying to delete Newzbin bookmark %s', delete) postdata = { 'username': cfg.newzbin_username(), 'password': cfg.newzbin_password(), 'action': 'delete', \ 'reportids' : delete } else: logging.info('Fetching Newzbin bookmarks') postdata = { 'username': cfg.newzbin_username(), 'password': cfg.newzbin_password(), 'action': 'fetch'} postdata = urllib.urlencode(postdata) headers['Content-type'] = 'application/x-www-form-urlencoded' fetchurl = '/api/bookmarks/' conn.request('POST', fetchurl, postdata, headers) response = conn.getresponse() except: _warn_user('Problem accessing Newzbin server.') logging.info("Traceback: ", exc_info = True) return data = response.read() # Get the status rcode = str(response.status) # Official return codes: # 200 = OK, NZB content follows # 204 = No content # 400 = Bad Request, please supply all parameters # (this generally means reportid or fileid is missing; missing user/pass gets you a 401) # 401 = Unauthorised, check username/password? # 402 = Payment Required, not Premium # 403 = Forbidden (incorrect auth) # 500 = Internal Server Error, please report to Administrator # 503 = Service Unavailable, site is currently down if rcode not in ('500', '503'): _access_ok() if rcode == '204': logging.debug("No bookmarks set") elif rcode in ('401', '403'): logging.warning(Ta('Unauthorised, check your newzbin username/password')) elif rcode in ('402'): logging.warning(Ta('You have no credit on your Newzbin account')) elif rcode in ('500', '503'): _warn_user('Newzbin has a server problem (%s).' % rcode) elif rcode == '200': if delete: if data.startswith('1'): logging.info('Deleted newzbin bookmark %s', delete) if delete in self.bookmarks: self.bookmarks.remove(delete) else: if delete in self.bookmarks: logging.warning(Ta('Could not delete newzbin bookmark %s'), delete) else: for line in data.split('\n'): try: msgid, size, text = line.split('\t', 2) except: msgid = size = text = None if msgid and (msgid not in self.bookmarks): self.bookmarks.append(msgid) logging.info("Found new bookmarked msgid %s (%s)", msgid, text) sabnzbd.add_msgid(int(msgid), None, None, priority=None) else: logging.error(Ta('Newzbin gives undocumented error code (%s)'), rcode) self._save() self.__busy = False
def _grabnzb(msgid): """ Grab one msgid from newzbin """ msg = '' retry = (60, None, None, None) nzo_info = {'msgid': msgid} logging.info('Fetching NZB for Newzbin report #%s', msgid) headers = {'User-agent' : 'SABnzbd+/%s' % sabnzbd.version.__version__} # Connect to Newzbin try: if _HAVE_SSL: conn = httplib.HTTPSConnection('www.newzbin.com') else: conn = httplib.HTTPConnection('www.newzbin.com') postdata = { 'username': cfg.newzbin_username(), 'password': cfg.newzbin_password(), 'reportid': msgid } postdata = urllib.urlencode(postdata) headers['Content-type'] = 'application/x-www-form-urlencoded' fetchurl = '/api/dnzb/' conn.request('POST', fetchurl, postdata, headers) response = conn.getresponse() # Save debug info if we have to data = response.read() except: _warn_user('Problem accessing Newzbin server, wait 1 min.') logging.info("Traceback: ", exc_info = True) return retry # Get the filename rcode = response.getheader('X-DNZB-RCode') rtext = response.getheader('X-DNZB-RText') try: nzo_info['more_info'] = response.getheader('X-DNZB-MoreInfo') except: # Only some reports will generate a moreinfo header pass if not (rcode or rtext): logging.error(T('Newzbin server changed its protocol')) return None, None, None, None # Official return codes: # 200 = OK, NZB content follows # 400 = Bad Request, please supply all parameters # (this generally means reportid or fileid is missing; missing user/pass gets you a 401) # 401 = Unauthorised, check username/password? # 402 = Payment Required, not Premium # 404 = Not Found, data doesn't exist? # (only working for reportids, see Technical Limitations) # 450 = Try Later, wait <x> seconds for counter to reset # (for an explanation of this, see DNZB Rate Limiting) # 500 = Internal Server Error, please report to Administrator # 503 = Service Unavailable, site is currently down if rcode in ('500', '503'): _warn_user('Newzbin has a server problem (%s, %s), wait 5 min.' % (rcode, rtext)) return retry _access_ok() if rcode == '450': wait_re = re.compile('wait (\d+) seconds') try: wait = int(wait_re.findall(rtext)[0]) except: wait = 60 if wait > 60: wait = 60 logging.debug("Newzbin says we should wait for %s sec", wait) return int(wait+1), None, None, None if rcode in ('402'): msg = Ta('You have no credit on your Newzbin account') return None, None, None, msg if rcode in ('401'): msg = Ta('Unauthorised, check your newzbin username/password') return None, None, None, msg if rcode in ('400', '404'): msg = Ta('Newzbin report %s not found') % msgid return None, None, None, msg if rcode != '200': msg = Ta('Newzbin gives undocumented error code (%s, %s)') % (rcode, rtext) return None, None, None, msg # Process data report_name = response.getheader('X-DNZB-Name') report_cat = response.getheader('X-DNZB-Category') if not (report_name and report_cat): msg = Ta('Newzbin server fails to give info for %s') % msgid return None, None, None, msg # sanitize report_name newname = sanitize_foldername(report_name) if len(newname) > 80: newname = newname[0:79].strip('. ') newname += ".nzb" logging.info('Successfully fetched report %s - %s (cat=%s) (%s)', msgid, report_name, report_cat, newname) return (newname, data, report_cat, nzo_info)