def getResult(self, episodes): """ Returns a result of the correct type for this provider """ result = classes.NZBDataSearchResult(episodes) result.provider = self return result
def get_result(self, episodes, url): result = None if url and False is self._init_api(): result = classes.NZBDataSearchResult(episodes) result.get_data_func = self.get_data result.url = url if None is result: result = classes.NZBSearchResult(episodes) result.url = url result.provider = self return result
def get_result(self, episodes, url): result = None if url and False is self._init_api(): data = self.get_url(url) if data: if '</nzb>' not in data or 'seem to be logged in' in data: logger.log(u'Failed nzb data response: %s' % data, logger.DEBUG) return result result = classes.NZBDataSearchResult(episodes) result.extraInfo += [data] if None is result: result = classes.NZBSearchResult(episodes) result.url = url result.provider = self return result
def get_result(self, episodes, url): result = None if url and False is self._init_api(): data = self.get_url(url, timeout=90) if not data: return result if '<strong>Limit Reached</strong>' in data: logger.log('Daily Nzb Download limit reached', logger.DEBUG) return result if '</nzb>' not in data or 'seem to be logged in' in data: logger.log('Failed nzb data response: %s' % data, logger.DEBUG) return result result = classes.NZBDataSearchResult(episodes) result.extraInfo += [data] if None is result: result = classes.NZBSearchResult(episodes) result.url = url result.provider = self return result
def split_result(obj): """ Split obj into separate episodes. :param obj: to search for results :return: a list of episode objects or an empty list """ url_data = helpers.getURL(obj.url, session=helpers.make_session(), returns='content') if url_data is None: logger.log( "Unable to load url " + obj.url + ", can't download season NZB", logger.ERROR) return [] # parse the season ep name try: parsed_obj = NameParser(False, showObj=obj.show).parse(obj.name) except (InvalidNameException, InvalidShowException) as error: logger.log("{0}".format(error), logger.DEBUG) return [] # bust it up season = 1 if parsed_obj.season_number is None else parsed_obj.season_number separate_nzbs, xmlns = get_season_nzbs(obj.name, url_data, season) result_list = [] # TODO: Re-evaluate this whole section # If we have valid results and hit an exception, we ignore the results found so far. # Maybe we should return the results found or possibly continue with the next iteration of the loop # Also maybe turn this into a function and generate the results_list with a list comprehension instead for new_nzb in separate_nzbs: logger.log("Split out " + new_nzb + " from " + obj.name, logger.DEBUG) # pylint: disable=no-member # parse the name try: parsed_obj = NameParser(False, showObj=obj.show).parse(new_nzb) except (InvalidNameException, InvalidShowException) as error: logger.log("{0}".format(error), logger.DEBUG) return [] # make sure the result is sane if (parsed_obj.season_number != season) or (parsed_obj.season_number is None and season != 1): # pylint: disable=no-member logger.log( "Found " + new_nzb + " inside " + obj.name + " but it doesn't seem to belong to the same season, ignoring it", logger.WARNING) continue elif not parsed_obj.episode_numbers: # pylint: disable=no-member logger.log( "Found " + new_nzb + " inside " + obj.name + " but it doesn't seem to be a valid episode NZB, ignoring it", logger.WARNING) continue want_ep = True for ep_num in parsed_obj.episode_numbers: if not obj.extraInfo[0].wantEpisode(season, ep_num, obj.quality): logger.log("Ignoring result: " + new_nzb, logger.DEBUG) want_ep = False break if not want_ep: continue # get all the associated episode objects ep_obj_list = [ obj.extraInfo[0].getEpisode(season, ep) for ep in parsed_obj.episode_numbers ] # make a result cur_obj = classes.NZBDataSearchResult(ep_obj_list) cur_obj.name = new_nzb cur_obj.provider = obj.provider cur_obj.quality = obj.quality cur_obj.extraInfo = [create_nzb_string(separate_nzbs[new_nzb], xmlns)] result_list.append(cur_obj) return result_list
def splitResult(result): urlData = helpers.getURL(result.url) if urlData is None: logger.log( u"Unable to load url " + result.url + ", can't download season NZB", logger.ERROR) return False # parse the season ep name try: np = NameParser(False) parse_result = np.parse(result.name, True) except InvalidNameException: logger.log( u"Unable to parse the filename " + result.name + " into a valid episode", logger.WARNING) return False # bust it up season = parse_result.season_number if parse_result.season_number != None else 1 separateNZBs, xmlns = getSeasonNZBs(result.name, urlData, season) resultList = [] for newNZB in separateNZBs: logger.log(u"Split out " + newNZB + " from " + result.name, logger.DEBUG) # parse the name try: np = NameParser(False) parse_result = np.parse(newNZB, True) except InvalidNameException: logger.log( u"Unable to parse the filename " + newNZB + " into a valid episode", logger.WARNING) return False # make sure the result is sane if (parse_result.season_number != None and parse_result.season_number != season) or ( parse_result.season_number == None and season != 1): logger.log( u"Found " + newNZB + " inside " + result.name + " but it doesn't seem to belong to the same season, ignoring it", logger.WARNING) continue elif len(parse_result.episode_numbers) == 0: logger.log( u"Found " + newNZB + " inside " + result.name + " but it doesn't seem to be a valid episode NZB, ignoring it", logger.WARNING) continue wantEp = True for epNo in parse_result.episode_numbers: if not result.extraInfo[0].wantEpisode(season, epNo, result.quality): logger.log( u"Ignoring result " + newNZB + " because we don't want an episode that is " + Quality.qualityStrings[result.quality], logger.DEBUG) wantEp = False break if not wantEp: continue # get all the associated episode objects epObjList = [] for curEp in parse_result.episode_numbers: epObjList.append(result.extraInfo[0].getEpisode(season, curEp)) # make a result curResult = classes.NZBDataSearchResult(epObjList) curResult.name = newNZB curResult.provider = result.provider curResult.quality = result.quality curResult.extraInfo = [createNZBString(separateNZBs[newNZB], xmlns)] resultList.append(curResult) return resultList
def splitResult(result): """ Split result into seperate episodes :param result: search result object :return: False upon failure, a list of episode objects otherwise """ urlData = helpers.getURL(result.url, session=requests.Session(), needBytes=True) if urlData is None: logging.error("Unable to load url " + result.url + ", can't download season NZB") return False # parse the season ep name try: np = NameParser(False, showObj=result.show) parse_result = np.parse(result.name) except InvalidNameException: logging.debug("Unable to parse the filename " + result.name + " into a valid episode") return False except InvalidShowException: logging.debug("Unable to parse the filename " + result.name + " into a valid show") return False # bust it up season = parse_result.season_number if parse_result.season_number != None else 1 separateNZBs, xmlns = getSeasonNZBs(result.name, urlData, season) resultList = [] for newNZB in separateNZBs: logging.debug("Split out " + newNZB + " from " + result.name) # parse the name try: np = NameParser(False, showObj=result.show) parse_result = np.parse(newNZB) except InvalidNameException: logging.debug("Unable to parse the filename " + newNZB + " into a valid episode") return False except InvalidShowException: logging.debug("Unable to parse the filename " + newNZB + " into a valid show") return False # make sure the result is sane if (parse_result.season_number != None and parse_result.season_number != season) or ( parse_result.season_number == None and season != 1): logging.warning( "Found " + newNZB + " inside " + result.name + " but it doesn't seem to belong to the same season, ignoring it") continue elif len(parse_result.episode_numbers) == 0: logging.warning( "Found " + newNZB + " inside " + result.name + " but it doesn't seem to be a valid episode NZB, ignoring it") continue wantEp = True for epNo in parse_result.episode_numbers: if not result.extraInfo[0].wantEpisode(season, epNo, result.quality): logging.info("Ignoring result " + newNZB + " because we don't want an episode that is " + Quality.qualityStrings[result.quality]) wantEp = False break if not wantEp: continue # get all the associated episode objects epObjList = [] for curEp in parse_result.episode_numbers: epObjList.append(result.extraInfo[0].getEpisode(season, curEp)) # make a result curResult = classes.NZBDataSearchResult(epObjList) curResult.name = newNZB curResult.provider = result.provider curResult.quality = result.quality curResult.extraInfo = [createNZBString(separateNZBs[newNZB], xmlns)] resultList.append(curResult) return resultList
if (parse_result.season_number != None and parse_result.season_number != season) or (parse_result.season_number == None and season != 1): logger.log(u"Found "+newNZB+" inside "+result.name+" but it doesn't seem to belong to the same season, ignoring it", logger.WARNING) continue elif len(parse_result.episode_numbers) == 0: logger.log(u"Found "+newNZB+" inside "+result.name+" but it doesn't seem to be a valid episode NZB, ignoring it", logger.WARNING) continue wantEp = True for epNo in parse_result.episode_numbers: if not result.extraInfo[0].wantEpisode(season, epNo, result.quality): logger.log(u"Ignoring result "+newNZB+" because we don't want an episode that is "+Quality.qualityStrings[result.quality], logger.DEBUG) wantEp = False break if not wantEp: continue # get all the associated episode objects epObjList = [] for curEp in parse_result.episode_numbers: epObjList.append(result.extraInfo[0].getEpisode(season, curEp)) # make a result curResult = classes.NZBDataSearchResult(epObjList) curResult.name = newNZB curResult.provider = result.provider curResult.quality = result.quality curResult.extraInfo = [createNZBString(separateNZBs[newNZB], xmlns)] resultList.append(curResult) return resultList