def findEpisode (episode, forceQuality=None): if episode.status == DISCBACKLOG: logger.log("NZBs.org doesn't support disc backlog. Use newzbin or download it manually from NZBs.org") return [] if sickbeard.NZBS_UID in (None, "") or sickbeard.NZBS_HASH in (None, ""): raise exceptions.AuthException("NZBs.org authentication details are empty, check your config") logger.log("Searching NZBs.org for " + episode.prettyName(True)) if forceQuality != None: epQuality = forceQuality elif episode.show.quality == BEST: epQuality = ANY else: epQuality = episode.show.quality if epQuality == SD: quality = {"catid": 1} elif epQuality == HD: quality = {"catid": 14} else: quality = {"type": 1} sceneSearchStrings = set(helpers.makeSceneSearchString(episode)) itemList = [] results = [] for curString in sceneSearchStrings: itemList += _doSearch("^"+curString, quality) if len(itemList) > 0: break for item in itemList: if item.findtext('title') == None or item.findtext('link') == None: logger.log("The XML returned from the NZBs.org RSS feed is incomplete, this result is unusable: "+data, logger.ERROR) continue title = item.findtext('title') url = item.findtext('link') logger.log("Found result " + title + " at " + url, logger.DEBUG) result = classes.NZBSearchResult(episode) result.provider = providerName.lower() result.url = url result.extraInfo = [title] result.quality = epQuality results.append(result) return results
def findEpisode (episode, manualSearch=False): if sickbeard.NZBS_UID in (None, "") or sickbeard.NZBS_HASH in (None, ""): raise exceptions.AuthException("NZBs.org authentication details are empty, check your config") logger.log("Searching NZBs.org for " + episode.prettyName(True)) myCache = NZBsCache() myCache.updateCache() nzbResults = myCache.searchCache(episode) logger.log("Cache results: "+str(nzbResults), logger.DEBUG) # if we got some results then use them no matter what. # OR # return anyway unless we're doing a backlog/missing or manual search if nzbResults or not manualSearch: return nzbResults sceneSearchStrings = set(helpers.makeSceneSearchString(episode)) itemList = [] results = [] for curString in sceneSearchStrings: itemList += _doSearch("^"+curString) for item in itemList: title = item.findtext('title') url = item.findtext('link') quality = Quality.nameQuality(title) if not episode.show.wantEpisode(episode.season, episode.episode, quality): logger.log("Ignoring result "+title+" because we don't want an episode that is "+Quality.qualityStrings[quality], logger.DEBUG) continue logger.log("Found result " + title + " at " + url, logger.DEBUG) result = classes.NZBSearchResult(episode) result.provider = providerName.lower() result.url = url result.extraInfo = [title] result.quality = quality results.append(result) return results
def findEpisode (episode, forceQuality=None, manualSearch=False): if episode.status == DISCBACKLOG: logger.log("NZBs.org doesn't support disc backlog. Use newzbin or download it manually from NZBs.org") return [] if sickbeard.NZBS_UID in (None, "") or sickbeard.NZBS_HASH in (None, ""): raise exceptions.AuthException("NZBs.org authentication details are empty, check your config") logger.log("Searching NZBs.org for " + episode.prettyName(True)) if forceQuality != None: epQuality = forceQuality elif episode.show.quality == BEST: epQuality = ANY else: epQuality = episode.show.quality if epQuality == SD: quality = {"catid": 1} elif epQuality == HD: quality = {"catid": 14} else: quality = {"type": 1} myCache = NZBsCache() myCache.updateCache() cacheResults = myCache.searchCache(episode.show, episode.season, episode.episode, epQuality) logger.log("Cache results: "+str(cacheResults), logger.DEBUG) nzbResults = [] for curResult in cacheResults: title = curResult["name"] url = curResult["url"] logger.log("Found result " + title + " at " + url) result = classes.NZBSearchResult(episode) result.provider = providerName.lower() result.url = url result.extraInfo = [title] result.quality = epQuality nzbResults.append(result) # if we got some results then use them no matter what. # OR # return anyway unless we're doing a backlog/missing or manual search if nzbResults or not (episode.status in (BACKLOG, MISSED) or manualSearch): return nzbResults sceneSearchStrings = set(helpers.makeSceneSearchString(episode)) itemList = [] results = [] for curString in sceneSearchStrings: itemList += _doSearch("^"+curString, quality) if len(itemList) > 0: break for item in itemList: title = item.findtext('title') url = item.findtext('link') if epQuality == HD and ("720p" not in title or "itouch" in title.lower()): logger.log("Ignoring result "+title+" because it doesn't contain 720p in the name or is an iTouch release", logger.DEBUG) continue logger.log("Found result " + title + " at " + url, logger.DEBUG) result = classes.NZBSearchResult(episode) result.provider = providerName.lower() result.url = url result.extraInfo = [title] result.quality = epQuality results.append(result) return results