Private GIT

Skip to content
Snippets Groups Projects
Commit e0e8f0e7 authored by Nic Wolfe's avatar Nic Wolfe
Browse files

Search newznab providers with exception names too

parent c134784e
Branches
Tags
No related merge requests found
...@@ -30,6 +30,7 @@ import generic ...@@ -30,6 +30,7 @@ import generic
from sickbeard import classes from sickbeard import classes
from sickbeard.helpers import sanitizeSceneName from sickbeard.helpers import sanitizeSceneName
from sickbeard import scene_exceptions
from sickbeard import encodingKludge as ek from sickbeard import encodingKludge as ek
from sickbeard import exceptions from sickbeard import exceptions
...@@ -69,37 +70,47 @@ class NewznabProvider(generic.NZBProvider): ...@@ -69,37 +70,47 @@ class NewznabProvider(generic.NZBProvider):
def _get_season_search_strings(self, show, season=None): def _get_season_search_strings(self, show, season=None):
params = {}
if not show: if not show:
return params return [{}]
to_return = []
# add new query strings for exceptions
name_exceptions = scene_exceptions.get_scene_exceptions(show.tvdbid)
for cur_exception in name_exceptions:
cur_params = {}
# search directly by tvrage id # search directly by tvrage id
if show.tvrid: if show.tvrid:
params['rid'] = show.tvrid cur_params['rid'] = show.tvrid
# if we can't then fall back on a very basic name search # if we can't then fall back on a very basic name search
else: else:
params['q'] = sanitizeSceneName(show.name) cur_params['q'] = sanitizeSceneName(cur_exception)
if season != None: if season != None:
# air-by-date means &season=2010&q=2010.03, no other way to do it atm # air-by-date means &season=2010&q=2010.03, no other way to do it atm
if show.air_by_date: if show.air_by_date:
params['season'] = season.split('-')[0] cur_params['season'] = season.split('-')[0]
if 'q' in params: if 'q' in cur_params:
params['q'] += '.' + season.replace('-', '.') cur_params['q'] += '.' + season.replace('-', '.')
else: else:
params['q'] = season.replace('-', '.') cur_params['q'] = season.replace('-', '.')
else: else:
params['season'] = season cur_params['season'] = season
return [params] # hack to only add a single result if it's a rageid search
if not ('rid' in cur_params and to_return):
to_return.append(cur_params)
return to_return
def _get_episode_search_strings(self, ep_obj): def _get_episode_search_strings(self, ep_obj):
params = {} params = {}
if not ep_obj: if not ep_obj:
return params return [params]
# search directly by tvrage id # search directly by tvrage id
if ep_obj.show.tvrid: if ep_obj.show.tvrid:
...@@ -117,7 +128,24 @@ class NewznabProvider(generic.NZBProvider): ...@@ -117,7 +128,24 @@ class NewznabProvider(generic.NZBProvider):
params['season'] = ep_obj.season params['season'] = ep_obj.season
params['ep'] = ep_obj.episode params['ep'] = ep_obj.episode
return [params] to_return = [params]
# only do exceptions if we are searching by name
if 'q' in params:
# add new query strings for exceptions
name_exceptions = scene_exceptions.get_scene_exceptions(ep_obj.show.tvdbid)
for cur_exception in name_exceptions:
# don't add duplicates
if cur_exception == ep_obj.show.name:
continue
cur_return = params.copy()
cur_return['q'] = sanitizeSceneName(cur_exception)
to_return.append(cur_return)
return to_return
def _doGeneralSearch(self, search_string): def _doGeneralSearch(self, search_string):
return self._doSearch({'q': search_string}) return self._doSearch({'q': search_string})
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment