Private GIT

Skip to content
Snippets Groups Projects
Commit 30248ecc authored by Dustyn Gibson's avatar Dustyn Gibson
Browse files

Fix kat to search anime category for RSS and add some protect against fails

Replaces #3055
parent 63866b6d
No related branches found
No related tags found
No related merge requests found
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
import traceback import traceback
import datetime
from urllib import urlencode from urllib import urlencode
import xmltodict import xmltodict
...@@ -50,8 +49,7 @@ class KATProvider(generic.TorrentProvider): ...@@ -50,8 +49,7 @@ class KATProvider(generic.TorrentProvider):
self.urls = { self.urls = {
'base_url': 'https://kat.cr/', 'base_url': 'https://kat.cr/',
'search': 'https://kat.cr/usearch/', 'search': 'https://kat.cr/%s/',
'rss': 'https://kat.cr/tv/',
} }
self.url = self.urls['base_url'] self.url = self.urls['base_url']
...@@ -73,24 +71,22 @@ class KATProvider(generic.TorrentProvider): ...@@ -73,24 +71,22 @@ class KATProvider(generic.TorrentProvider):
items = {'Season': [], 'Episode': [], 'RSS': []} items = {'Season': [], 'Episode': [], 'RSS': []}
# select the correct category # select the correct category
if self.show.anime: anime = (self.show and self.show.anime) or (epObj and epObj.show and epObj.show.anime) or False
self.search_params.update({'category': 'anime'}) self.search_params['category'] = ('tv', 'anime')[anime]
logger.log("search param 'category': 'anime' instead of 'tv' ", logger.DEBUG)
else:
self.search_params.update({'category': 'tv'})
logger.log("search param 'category': 'tv' ", logger.DEBUG)
for mode in search_strings.keys(): for mode in search_strings.keys():
logger.log(u"Search Mode: %s" % mode, logger.DEBUG) logger.log(u"Search Mode: %s" % mode, logger.DEBUG)
for search_string in search_strings[mode]: for search_string in search_strings[mode]:
self.search_params.update({'q': search_string.encode('utf-8'), 'field': ('seeders', 'time_add')[mode == 'RSS']}) self.search_params['q'] = search_string.encode('utf-8') if mode != 'RSS' else ''
self.search_params['field'] = 'seeders' if mode != 'RSS' else 'time_add'
if mode != 'RSS': if mode != 'RSS':
logger.log(u"Search string: %s" % search_string, logger.DEBUG) logger.log(u"Search string: %s" % search_string, logger.DEBUG)
url_fmt_string = 'usearch' if mode != 'RSS' else search_string
try: try:
searchURL = self.urls[('search', 'rss')[mode == 'RSS']] + '?' + urlencode(self.search_params) searchURL = self.urls['search'] % url_fmt_string + '?' + urlencode(self.search_params)
logger.log(u"Search URL: %s" % searchURL, logger.DEBUG) logger.log(u"Search URL: %s" % searchURL, logger.DEBUG)
data = self.getURL(searchURL) data = self.getURL(searchURL)
#data = self.getURL(self.urls[('search', 'rss')[mode == 'RSS']], params=self.search_params) #data = self.getURL(self.urls[('search', 'rss')[mode == 'RSS']], params=self.search_params)
...@@ -104,7 +100,7 @@ class KATProvider(generic.TorrentProvider): ...@@ -104,7 +100,7 @@ class KATProvider(generic.TorrentProvider):
try: try:
data = xmltodict.parse(HTMLParser.HTMLParser().unescape(data.encode('utf-8')).replace('&', '&')) data = xmltodict.parse(HTMLParser.HTMLParser().unescape(data.encode('utf-8')).replace('&', '&'))
except ExpatError as e: except ExpatError:
logger.log(u"Failed parsing provider. Traceback: %r\n%r" % (traceback.format_exc(), data), logger.ERROR) logger.log(u"Failed parsing provider. Traceback: %r\n%r" % (traceback.format_exc(), data), logger.ERROR)
continue continue
...@@ -139,11 +135,6 @@ class KATProvider(generic.TorrentProvider): ...@@ -139,11 +135,6 @@ class KATProvider(generic.TorrentProvider):
except (AttributeError, TypeError, KeyError): except (AttributeError, TypeError, KeyError):
continue continue
try:
pubdate = datetime.datetime.strptime(item['pubDate'], '%a, %d %b %Y %H:%M:%S +0000')
except Exception:
pubdate = datetime.datetime.today()
if not all([title, download_url]): if not all([title, download_url]):
continue continue
...@@ -158,7 +149,7 @@ class KATProvider(generic.TorrentProvider): ...@@ -158,7 +149,7 @@ class KATProvider(generic.TorrentProvider):
logger.log(u"Found result " + title + " but that doesn't seem like a verified result so I'm ignoring it", logger.DEBUG) logger.log(u"Found result " + title + " but that doesn't seem like a verified result so I'm ignoring it", logger.DEBUG)
continue continue
item = title, download_url, size, seeders, leechers item = title, download_url, size, seeders, leechers, info_hash
if mode != 'RSS': if mode != 'RSS':
logger.log(u"Found result: %s " % title, logger.DEBUG) logger.log(u"Found result: %s " % title, logger.DEBUG)
...@@ -187,7 +178,7 @@ class KATCache(tvcache.TVCache): ...@@ -187,7 +178,7 @@ class KATCache(tvcache.TVCache):
self.minTime = 20 self.minTime = 20
def _getRSSData(self): def _getRSSData(self):
search_params = {'RSS': ['']} search_params = {'RSS': ['tv', 'anime']}
return {'entries': self.provider._doSearch(search_params)} return {'entries': self.provider._doSearch(search_params)}
provider = KATProvider() provider = KATProvider()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment