diff --git a/gui/slick/images/providers/animenzb.gif b/gui/slick/images/providers/animenzb.gif index 9fa65fe495d7885f6f02b96ee3ff8e91511ddba8..6debf8569013f891b439665645115bb2c997379c 100644 Binary files a/gui/slick/images/providers/animenzb.gif and b/gui/slick/images/providers/animenzb.gif differ diff --git a/gui/slick/images/providers/api_dognzb_cr.png b/gui/slick/images/providers/api_dognzb_cr.png new file mode 100644 index 0000000000000000000000000000000000000000..f99e0d6a696d62f519360d51e15f99367e549ae0 Binary files /dev/null and b/gui/slick/images/providers/api_dognzb_cr.png differ diff --git a/gui/slick/images/providers/drunkenslug.png b/gui/slick/images/providers/drunkenslug.png new file mode 100644 index 0000000000000000000000000000000000000000..a3e8188960748753ebcc19f0f0cae4dd4104693d Binary files /dev/null and b/gui/slick/images/providers/drunkenslug.png differ diff --git a/gui/slick/images/providers/drunkenslug_com.png b/gui/slick/images/providers/drunkenslug_com.png new file mode 100644 index 0000000000000000000000000000000000000000..a3e8188960748753ebcc19f0f0cae4dd4104693d Binary files /dev/null and b/gui/slick/images/providers/drunkenslug_com.png differ diff --git a/gui/slick/images/providers/dusky_deepcave.png b/gui/slick/images/providers/dusky_deepcave.png new file mode 100644 index 0000000000000000000000000000000000000000..9b41c190b812bde0be1730e2cd1601521b0a26cc Binary files /dev/null and b/gui/slick/images/providers/dusky_deepcave.png differ diff --git a/gui/slick/images/providers/dusky_deepcave_net.png b/gui/slick/images/providers/dusky_deepcave_net.png new file mode 100644 index 0000000000000000000000000000000000000000..9b41c190b812bde0be1730e2cd1601521b0a26cc Binary files /dev/null and b/gui/slick/images/providers/dusky_deepcave_net.png differ diff --git a/gui/slick/images/providers/nzb_abbeygirl.png b/gui/slick/images/providers/nzb_abbeygirl.png new file mode 100644 index 0000000000000000000000000000000000000000..00661132caede706c761729411d775dc48a81bb7 Binary files /dev/null and b/gui/slick/images/providers/nzb_abbeygirl.png differ diff --git a/gui/slick/images/providers/nzb_abbeygirl_co_uk.png b/gui/slick/images/providers/nzb_abbeygirl_co_uk.png new file mode 100644 index 0000000000000000000000000000000000000000..00661132caede706c761729411d775dc48a81bb7 Binary files /dev/null and b/gui/slick/images/providers/nzb_abbeygirl_co_uk.png differ diff --git a/gui/slick/images/providers/nzb_ag.png b/gui/slick/images/providers/nzb_ag.png new file mode 100644 index 0000000000000000000000000000000000000000..356386a0dd1c6fc18f4e2abe5fdc3eada5bb7369 Binary files /dev/null and b/gui/slick/images/providers/nzb_ag.png differ diff --git a/gui/slick/images/providers/nzbndx.png b/gui/slick/images/providers/nzbndx.png new file mode 100644 index 0000000000000000000000000000000000000000..260fbed4980e1878c7e9fbc569f2a26f571f996d Binary files /dev/null and b/gui/slick/images/providers/nzbndx.png differ diff --git a/gui/slick/images/providers/nzbndx_com.png b/gui/slick/images/providers/nzbndx_com.png new file mode 100644 index 0000000000000000000000000000000000000000..260fbed4980e1878c7e9fbc569f2a26f571f996d Binary files /dev/null and b/gui/slick/images/providers/nzbndx_com.png differ diff --git a/gui/slick/images/providers/nzbs4u.png b/gui/slick/images/providers/nzbs4u.png new file mode 100644 index 0000000000000000000000000000000000000000..b2d709be95e5c81164609ff22f5d9f0b39a89ece Binary files /dev/null and b/gui/slick/images/providers/nzbs4u.png differ diff --git a/gui/slick/images/providers/nzbs4u_net.png b/gui/slick/images/providers/nzbs4u_net.png new file mode 100644 index 0000000000000000000000000000000000000000..b2d709be95e5c81164609ff22f5d9f0b39a89ece Binary files /dev/null and b/gui/slick/images/providers/nzbs4u_net.png differ diff --git a/gui/slick/images/providers/qoqmovies.png b/gui/slick/images/providers/qoqmovies.png new file mode 100644 index 0000000000000000000000000000000000000000..b2d709be95e5c81164609ff22f5d9f0b39a89ece Binary files /dev/null and b/gui/slick/images/providers/qoqmovies.png differ diff --git a/gui/slick/images/providers/qoqmovies_com.png b/gui/slick/images/providers/qoqmovies_com.png new file mode 100644 index 0000000000000000000000000000000000000000..b2d709be95e5c81164609ff22f5d9f0b39a89ece Binary files /dev/null and b/gui/slick/images/providers/qoqmovies_com.png differ diff --git a/gui/slick/images/providers/spots4u.png b/gui/slick/images/providers/spots4u.png new file mode 100644 index 0000000000000000000000000000000000000000..b2d709be95e5c81164609ff22f5d9f0b39a89ece Binary files /dev/null and b/gui/slick/images/providers/spots4u.png differ diff --git a/gui/slick/images/providers/spots4u_nl.png b/gui/slick/images/providers/spots4u_nl.png new file mode 100644 index 0000000000000000000000000000000000000000..b2d709be95e5c81164609ff22f5d9f0b39a89ece Binary files /dev/null and b/gui/slick/images/providers/spots4u_nl.png differ diff --git a/gui/slick/interfaces/default/displayShow.tmpl b/gui/slick/interfaces/default/displayShow.tmpl index b3c9f04766989d7b1cb5f202cafb7dc9e7311dcd..fc40c90b53a170737af9cd8caf98a6de06430e90 100644 --- a/gui/slick/interfaces/default/displayShow.tmpl +++ b/gui/slick/interfaces/default/displayShow.tmpl @@ -344,7 +344,6 @@ <table #if not $show.is_anime then "id=\"showTable\"" else "id=\"animeTable\""# class="displayShowTable display_show" cellspacing="0" border="0" cellpadding="0"> #set $curSeason = -1 -#set $seasonCount = 0 #set $odd = 0 #for $epResult in $sqlResults: #set $epStr = str($epResult["season"]) + "x" + str($epResult["episode"]) @@ -408,10 +407,25 @@ <th data-sorter="false" class="col-search">Search</th> </tr> </thead> - <tbody class="tablesorter-no-sort"> - <tr> - <th class="row-seasonheader displayShowTable" colspan="13" style="width: auto;"> - <h3><a name="season-$epResult["season"]"></a>#if int($epResult["season"]) == 0 then "Specials" else "Season " + str($epResult["season"])#</h3> + <tbody class="tablesorter-no-sort"> + <tr style="height: 60px;"> + <th class="row-seasonheader displayShowTable" colspan="13" style="vertical-align: bottom; width: auto;"> + <h3 style="display: inline;"><a name="season-$epResult["season"]"></a>#if int($epResult["season"]) == 0 then "Specials" else "Season " + str($epResult["season"])#</h3> + #if $sickbeard.DISPLAY_ALL_SEASONS == False: + <button id="showseason-$epResult['season']" type="button" class="btn btn-xs pull-right" data-toggle="collapse" data-target="#collapseSeason-$epResult['season']">Show Episodes</button> + <script type="text/javascript"> + <!-- + \$(function() { + \$('#collapseSeason-$epResult['season']').on('hide.bs.collapse', function () { + \$('#showseason-$epResult['season']').text('Show Episodes'); + }) + \$('#collapseSeason-$epResult['season']').on('show.bs.collapse', function () { + \$('#showseason-$epResult['season']').text('Hide Episodes'); + }) + }); + //--> + </script> + #end if </th> </tr> </tbody> @@ -435,28 +449,25 @@ </tr> #else: </tbody> - <tbody class="tablesorter-no-sort"> - <tr> - <th class="row-seasonheader displayShowTable" colspan="13" style="width: auto;"> - <div class="pull-left"> <h3><a name="season-$epResult["season"]"></a>#if int($epResult["season"]) == 0 then "Specials" else "Season " + str($epResult["season"])#</h3></div> - #if $sickbeard.DISPLAY_ALL_SEASONS == False and $seasonCount >= 1: - <div class="pull-right"> - <button id="showseason-$epResult['season']" type="button" class="btn btn-xs pull-right" data-toggle="collapse" data-target="#collapseSeason-$epResult['season']"><span class="sgicon-arrowdown"></span> Show Episodes</button> + <tbody class="tablesorter-no-sort"> + <tr style="height: 60px;"> + <th class="row-seasonheader displayShowTable" colspan="13" style="vertical-align: bottom; width: auto;"> + <h3 style="display: inline;"><a name="season-$epResult["season"]"></a>#if int($epResult["season"]) == 0 then "Specials" else "Season " + str($epResult["season"])#</h3> + #if $sickbeard.DISPLAY_ALL_SEASONS == False: + <button id="showseason-$epResult['season']" type="button" class="btn btn-xs pull-right" data-toggle="collapse" data-target="#collapseSeason-$epResult['season']">Show Episodes</button> <script type="text/javascript"> <!-- \$(function() { \$('#collapseSeason-$epResult['season']').on('hide.bs.collapse', function () { - \$('#showseason-$epResult['season']').html('<span class="sgicon-arrowdown"></span> Show Episodes'); + \$('#showseason-$epResult['season']').text('Show Episodes'); }) \$('#collapseSeason-$epResult['season']').on('show.bs.collapse', function () { - \$('#showseason-$epResult['season']').html('<span class="sgicon-arrowup"></span> Hide Episodes'); + \$('#showseason-$epResult['season']').text('Hide Episodes'); }) }); //--> </script> - </div> #end if - </th> </tr> </tbody> @@ -480,9 +491,8 @@ </tr> #end if </tbody> - #set $seasonCount = $seasonCount + 1 - #if $sickbeard.DISPLAY_ALL_SEASONS == False and $seasonCount >= 2: - <tbody class="collapse" id="collapseSeason-$epResult['season']"> + #if $sickbeard.DISPLAY_ALL_SEASONS == False: + <tbody class="collapse#if $curSeason == -1 then ' in' else ''#" id="collapseSeason-$epResult['season']"> #else <tbody> #end if diff --git a/sickbeard/helpers.py b/sickbeard/helpers.py index 4ee1a49d8f6e95a3682747a87c51dc27dfdf4f62..ccbe9686e377424713739e70d93dbfb3b236fd31 100644 --- a/sickbeard/helpers.py +++ b/sickbeard/helpers.py @@ -1333,53 +1333,6 @@ def _setUpSession(session, headers): return session -def headURL(url, params=None, headers={}, timeout=30, session=None, json=False, proxyGlypeProxySSLwarning=None): - """ - Checks if URL is valid, without reading it - """ - - session = _setUpSession(session, headers) - session.params = params - - try: - resp = session.head(url, timeout=timeout, allow_redirects=True, verify=session.verify) - - if not resp.ok: - logger.log(u"Requested headURL " + url + " returned status code is " + str( - resp.status_code) + ': ' + codeDescription(resp.status_code), logger.DEBUG) - return False - - if proxyGlypeProxySSLwarning is not None: - if re.search('The site you are attempting to browse is on a secure connection', resp.text): - resp = session.head(proxyGlypeProxySSLwarning, timeout=timeout, allow_redirects=True, verify=session.verify) - - if not resp.ok: - logger.log(u"GlypeProxySSLwarning: Requested headURL " + url + " returned status code is " + str( - resp.status_code) + ': ' + codeDescription(resp.status_code), logger.DEBUG) - return False - - return resp.status_code == 200 - - except requests.exceptions.HTTPError as e: - logger.log(u"HTTP error in headURL %s. Error: %s" % (url, ex(e)), logger.WARNING) - pass - except requests.exceptions.ConnectionError as e: - logger.log(u"Connection error in headURL %s. Error: %s " % (url, ex(e)), logger.WARNING) - pass - except requests.exceptions.Timeout as e: - logger.log(u"Connection timed out accessing headURL %s. Error: %s" % (url, ex(e)), logger.WARNING) - pass - except requests.exceptions.ContentDecodingError: - logger.log(u"Content-Encoding was gzip, but content was not compressed. headURL: %s" % url, logger.DEBUG) - logger.log(traceback.format_exc(), logger.DEBUG) - pass - except Exception as e: - logger.log(u"Unknown exception in headURL %s. Error: %s" % (url, ex(e)), logger.WARNING) - logger.log(traceback.format_exc(), logger.WARNING) - pass - - return False - def getURL(url, post_data=None, params={}, headers={}, timeout=30, session=None, json=False, proxyGlypeProxySSLwarning=None): """ diff --git a/sickbeard/nzbSplitter.py b/sickbeard/nzbSplitter.py index 1cbf10c45c48595200568e3798cca829bff7860b..528778f828c6104c66985fccde90e7953f509225 100644 --- a/sickbeard/nzbSplitter.py +++ b/sickbeard/nzbSplitter.py @@ -159,7 +159,7 @@ def splitResult(result): 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) + Quality.qualityStrings[result.quality], logger.INFO) wantEp = False break if not wantEp: diff --git a/sickbeard/properFinder.py b/sickbeard/properFinder.py index d5dbf6b62663b20e5ae8d6d73a13ba0da33ba561..fc217b9b9a75dd708f89c6121b93e4f4121fa6df 100644 --- a/sickbeard/properFinder.py +++ b/sickbeard/properFinder.py @@ -87,17 +87,21 @@ class ProperFinder(): logger.log(u"Error while searching " + curProvider.name + ", skipping: " + ex(e), logger.ERROR) logger.log(traceback.format_exc(), logger.DEBUG) continue - finally: - threading.currentThread().name = origThreadName # if they haven't been added by a different provider than add the proper to the list for x in curPropers: + if not re.search('(^|[\. _-])(proper|repack)([\. _-]|$)', x.name, re.I): + logger.log(u'findPropers returned a non-proper, we have caught and skipped it but please report this', logger.WARNING) + continue + name = self._genericName(x.name) if not name in propers: logger.log(u"Found new proper: " + x.name, logger.DEBUG) x.provider = curProvider propers[name] = x + threading.currentThread().name = origThreadName + # take the list of unique propers and get it sorted by sortedPropers = sorted(propers.values(), key=operator.attrgetter('date'), reverse=True) finalPropers = [] @@ -205,7 +209,7 @@ class ProperFinder(): historyResults = myDB.select( "SELECT resource FROM history " + "WHERE showid = ? AND season = ? AND episode = ? AND quality = ? AND date >= ? " + - "AND action IN (" + ",".join([str(x) for x in Quality.SNATCHED]) + ")", + "AND action IN (" + ",".join([str(x) for x in Quality.SNATCHED + Quality.DOWNLOADED]) + ")", [curProper.indexerid, curProper.season, curProper.episode, curProper.quality, historyLimit.strftime(history.dateFormat)]) diff --git a/sickbeard/providers/btn.py b/sickbeard/providers/btn.py index 1ca0085ab3806dfe5c1588e99471009a333cbe7d..2268c2dbe69d9582b408304c38bad40073268d1d 100644 --- a/sickbeard/providers/btn.py +++ b/sickbeard/providers/btn.py @@ -454,7 +454,7 @@ class BTNProvider(generic.TorrentProvider): logger.log( u"Ignoring result " + title + " because we don't want an episode that is " + Quality.qualityStrings[ - quality], logger.DEBUG) + quality], logger.INFO) continue diff --git a/sickbeard/providers/frenchtorrentdb.py b/sickbeard/providers/frenchtorrentdb.py index a08ae5963b798c516acae852ed01ad55945f1934..13b78f3418c7a3104a134d3c904baa0ecd4f3b1e 100644 --- a/sickbeard/providers/frenchtorrentdb.py +++ b/sickbeard/providers/frenchtorrentdb.py @@ -178,7 +178,7 @@ class FrenchTorrentDBProvider(generic.TorrentProvider): # check for auth if not self._doLogin(): - return False + return results for mode in search_params.keys(): @@ -244,7 +244,7 @@ class FrenchTorrentDBProvider(generic.TorrentProvider): ) if not sqlResults: - return [] + return results for sqlshow in sqlResults: self.show = helpers.findCertainShow(sickbeard.showList, int(sqlshow["showid"])) @@ -261,23 +261,7 @@ class FrenchTorrentDBProvider(generic.TorrentProvider): def seedRatio(self): return self.ratio - def headURL(self, result): - """ - Check if URL is valid and the file exists at URL. - Original function overwritten because FrenchTorrentDB links only support one request - """ - - # check for auth - if not self._doLogin(): - return False - urls, filename = self._makeURL(result) - - for url in urls: - return url - - return u'' - def _get_season_search_strings(self, ep_obj): search_string = {'Season': []} diff --git a/sickbeard/providers/generic.py b/sickbeard/providers/generic.py index 8d04c71017a79b02c1ea0580d279872542d401c7..b909fb07a45b16c1a0f9cc922741ece00e4ade64 100644 --- a/sickbeard/providers/generic.py +++ b/sickbeard/providers/generic.py @@ -188,34 +188,6 @@ class GenericProvider: return (urls, filename) - def headURL(self, result): - """ - Check if URL is valid and the file exists at URL - """ - - # check for auth - if not self._doLogin(): - return False - - urls, filename = self._makeURL(result) - - if self.proxy.isEnabled(): - self.headers.update({'Referer': self.proxy.getProxyURL()}) - self.proxyGlypeProxySSLwarning = self.proxy.getProxyURL() + 'includes/process.php?action=sslagree&submit=Continue anyway...' - else: - if 'Referer' in self.headers: - self.headers.pop('Referer') - self.proxyGlypeProxySSLwarning = None - - for url in urls: - if 'NO_DOWNLOAD_NAME' in url: - continue - if helpers.headURL(self.proxy._buildURL(url), session=self.session, headers=self.headers, - proxyGlypeProxySSLwarning=self.proxyGlypeProxySSLwarning): - return url - - return u'' - def downloadResult(self, result): """ Save the result to disk. @@ -365,7 +337,7 @@ class GenericProvider: # get season search results for curString in self._get_season_search_strings(epObj): itemList += self._doSearch(curString, search_mode, len(episodes), epObj=epObj) - else: + elif search_mode == 'eponly': # get single episode search results for curString in self._get_episode_search_strings(epObj): itemList += self._doSearch(curString, 'eponly', len(episodes), epObj=epObj) @@ -488,7 +460,7 @@ class GenericProvider: logger.log( u"Ignoring result " + title + " because we don't want an episode that is " + Quality.qualityStrings[ - quality], logger.DEBUG) + quality], logger.INFO) continue diff --git a/sickbeard/providers/hdtorrents.py b/sickbeard/providers/hdtorrents.py index b18e71da2343f7dd7918d90317699e2fa1113e51..73062435395af162e52d73536d1515bb0d6378ba 100644 --- a/sickbeard/providers/hdtorrents.py +++ b/sickbeard/providers/hdtorrents.py @@ -35,7 +35,6 @@ from sickbeard import clients import requests from requests import exceptions from bs4 import BeautifulSoup as soup -#from sickbeard.bs4_parser import BS4Parser from unidecode import unidecode from sickbeard.helpers import sanitizeSceneName from requests.auth import AuthBase @@ -49,8 +48,6 @@ class HDTorrentsProvider(generic.TorrentProvider): self.supportsBacklog = True self.enabled = False - #self._uid = None - #self._hash = None self.session = requests.Session() self.username = None self.password = None @@ -70,8 +67,6 @@ class HDTorrentsProvider(generic.TorrentProvider): self.categories = "&category[]=59&category[]=60&category[]=30&category[]=38" - #self.cookies = None - def isEnabled(self): return self.enabled @@ -90,40 +85,26 @@ class HDTorrentsProvider(generic.TorrentProvider): if any(requests.utils.dict_from_cookiejar(self.session.cookies).values()): return True - # requests automatically handles cookies. - #if self._uid and self._hash: - - # requests.utils.add_dict_to_cookiejar(self.session.cookies, self.cookies) - - else: - - login_params = {'uid': self.username, - 'pwd': self.password, - 'submit': 'Confirm', - } + login_params = {'uid': self.username, + 'pwd': self.password, + 'submit': 'Confirm'} - try: - response = self.session.post(self.urls['login'], data=login_params, timeout=30) - except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError), e: - logger.log(u'Unable to connect to ' + self.name + ' provider: ' + ex(e), logger.ERROR) - return False + try: + response = self.session.post(self.urls['login'], data=login_params, timeout=30) + except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError), e: + logger.log(u'Unable to connect to ' + self.name + ' provider: ' + ex(e), logger.ERROR) + return False - if re.search('You need cookies enabled to log in.', response.text) \ - or response.status_code == 401: - logger.log(u'Invalid username or password for ' + self.name + ' Check your settings', logger.ERROR) - return False - - #self._uid = requests.utils.dict_from_cookiejar(self.session.cookies)['uid'] - #self._hash = requests.utils.dict_from_cookiejar(self.session.cookies)['pass'] - #self.cookies = {'uid': self._uid, - # 'pass': self._hash - #} + if re.search('You need cookies enabled to log in.', response.text) \ + or response.status_code == 401: + logger.log(u'Invalid username or password for ' + self.name + ' Check your settings', logger.ERROR) + return False return True def _get_season_search_strings(self, ep_obj): if not ep_obj: - return search_strings + return [] search_strings = [] for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): @@ -136,7 +117,6 @@ class HDTorrentsProvider(generic.TorrentProvider): search_strings.append(ep_string) - return [search_strings] def _get_episode_search_strings(self, ep_obj, add_string=''): diff --git a/sickbeard/providers/iptorrents.py b/sickbeard/providers/iptorrents.py index d72959335322fca153cf813e9d849506bd790af2..d8eaf5dea334d95f4f00931c9ff9d4cb0b3ae0b0 100644 --- a/sickbeard/providers/iptorrents.py +++ b/sickbeard/providers/iptorrents.py @@ -287,7 +287,7 @@ class IPTorrentsProvider(generic.TorrentProvider): logger.log( u"Ignoring result " + title + " because we don't want an episode that is " + Quality.qualityStrings[ - quality], logger.DEBUG) + quality], logger.INFO) continue diff --git a/sickbeard/providers/libertalia.py b/sickbeard/providers/libertalia.py index 4cc3a07aa105dc20f1543697be9e8f03e3de834e..4670b11de0c5eb43f55e2315d688271de20846f7 100644 --- a/sickbeard/providers/libertalia.py +++ b/sickbeard/providers/libertalia.py @@ -165,7 +165,7 @@ class LibertaliaProvider(generic.TorrentProvider): # check for auth if not self._doLogin(): - return False + return results for mode in search_params.keys(): diff --git a/sickbeard/providers/xthor.py b/sickbeard/providers/xthor.py index 9b0ab91d0dc92cde2604b7b49edd211eaa94c6db..188c6fd12e6e66e6ab675568e91b7055b0cf48e1 100644 --- a/sickbeard/providers/xthor.py +++ b/sickbeard/providers/xthor.py @@ -57,6 +57,7 @@ class XthorProvider(generic.TorrentProvider): self.enabled = False self.username = None self.password = None + self.ratio = None def isEnabled(self): return self.enabled @@ -170,7 +171,7 @@ class XthorProvider(generic.TorrentProvider): # check for auth if not self._doLogin(): - return False + return results for mode in search_params.keys(): @@ -221,7 +222,7 @@ class XthorProvider(generic.TorrentProvider): ) if not sqlResults: - return [] + return results for sqlshow in sqlResults: self.show = helpers.findCertainShow(sickbeard.showList, int(sqlshow["showid"])) diff --git a/sickbeard/scene_numbering.py b/sickbeard/scene_numbering.py index 686729c6ab187dedf12d526c2d2545b6d3fae2e8..eac8cedee3a536968e7f4785dac3ebb777dd6f32 100644 --- a/sickbeard/scene_numbering.py +++ b/sickbeard/scene_numbering.py @@ -497,11 +497,11 @@ def xem_refresh(indexer_id, indexer, force=False): # XEM MAP URL url = "http://thexem.de/map/havemap?origin=%s" % sickbeard.indexerApi(indexer).config['xem_origin'] parsedJSON = sickbeard.helpers.getURL(url, session=xem_session, json=True) - if not parsedJSON or 'result' not in parsedJSON or 'success' not in parsedJSON['result'] or 'data' not in parsedJSON or indexer_id not in parsedJSON['data']: + if not parsedJSON or 'result' not in parsedJSON or 'success' not in parsedJSON['result'] or 'data' not in parsedJSON or str(indexer_id) not in parsedJSON['data']: return # XEM API URL - url = "http://thexem.de/map/all?id=%s&origin=%s&destination=scene" % indexer_id, sickbeard.indexerApi(indexer).config['xem_origin'] + url = "http://thexem.de/map/all?id=%s&origin=%s&destination=scene" % (indexer_id, sickbeard.indexerApi(indexer).config['xem_origin']) parsedJSON = sickbeard.helpers.getURL(url, session=xem_session, json=True) if not parsedJSON or not 'result' in parsedJSON or not 'success' in parsedJSON['result']: diff --git a/sickbeard/search.py b/sickbeard/search.py index 2c48f4fd7889dba664f6e40df1bc490705ea856f..4f4452ef4f7d9356fba844cad6d8b2ae1e6883fa 100644 --- a/sickbeard/search.py +++ b/sickbeard/search.py @@ -237,14 +237,6 @@ def pickBestResult(results, show): logger.log(cur_result.name + u" has previously failed, rejecting it") continue - # Only request HEAD instead of downloading content here, and only after all other checks but before bestresult! - # Otherwise we are spamming providers even when searching with cache only. We can validate now, and download later - if len(cur_result.url) and cur_result.provider: - cur_result.url = cur_result.provider.headURL(cur_result) - if not len(cur_result.url): - logger.log('Skipping %s, URL check failed. Bad result from provider.' % cur_result.name,logger.INFO) - continue - if cur_result.quality in bestQualities and (not bestResult or bestResult.quality < cur_result.quality or bestResult not in bestQualities): bestResult = cur_result elif cur_result.quality in anyQualities and (not bestResult or bestResult not in bestQualities) and (not bestResult or bestResult.quality < cur_result.quality): diff --git a/sickbeard/tvcache.py b/sickbeard/tvcache.py index 4047909909d6182e589f5933a9131774b69a359c..b34f8d5b3dc991d94dfc37c9a6872fb02b95aa9c 100644 --- a/sickbeard/tvcache.py +++ b/sickbeard/tvcache.py @@ -364,7 +364,7 @@ class TVCache(): # if the show says we want that episode then add it to the list if not showObj.wantEpisode(curSeason, curEp, curQuality, manualSearch, downCurQuality): logger.log(u"Skipping " + curResult["name"] + " because we don't want an episode that's " + - Quality.qualityStrings[curQuality], logger.DEBUG) + Quality.qualityStrings[curQuality], logger.INFO) continue epObj = showObj.getEpisode(curSeason, curEp)