Example #1
0
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
Example #2
0
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
Example #3
0
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