Private GIT

Skip to content
Snippets Groups Projects
Commit 4e9e5310 authored by miigotu's avatar miigotu
Browse files

Merge pull request #2827 from SiCKRAGETV/nyaatorrents

Fix NyaaTorrents
parents 8eec04fa 5d8a1a0b
Branches
Tags
No related merge requests found
......@@ -46,63 +46,71 @@ class NyaaProvider(generic.TorrentProvider):
self.url = self.urls['base_url']
self.minseed = 0
self.minleech = 0
self.confirmed = False
def isEnabled(self):
return self.enabled
def getQuality(self, item, anime=False):
title = item.get('title')
quality = Quality.sceneQuality(title, anime)
return quality
def findSearchResults(self, show, episodes, search_mode, manualSearch=False, downCurQuality=False):
return generic.TorrentProvider.findSearchResults(self, show, episodes, search_mode, manualSearch, downCurQuality)
def _get_season_search_strings(self, ep_obj):
return [x for x in show_name_helpers.makeSceneSeasonSearchString(self.show, ep_obj)]
def _get_episode_search_strings(self, ep_obj, add_string=''):
return [x for x in show_name_helpers.makeSceneSearchString(self.show, ep_obj)]
def _doSearch(self, search_string, search_mode='eponly', epcount=0, age=0, epObj=None):
#FIXME
def _doSearch(self, search_strings, search_mode='eponly', epcount=0, age=0, epObj=None):
if self.show and not self.show.is_anime:
return []
results = []
items = {'Season': [], 'Episode': [], 'RSS': []}
for mode in search_strings.keys():
logger.log(u"Search Mode: %s" % mode, logger.DEBUG)
for search_string in search_strings[mode]:
if mode != 'RSS':
logger.log(u"Search string: %s" % search_string, logger.DEBUG)
params = {
"term": search_string.encode('utf-8'),
"page": 'rss',
"cats": '1_0', # All anime
"sort": '2', # Sort Descending By Seeders
"sort": 2, # Sort Descending By Seeders
"order": 1
}
if mode != 'RSS':
params["term"] = search_string.encode('utf-8')
searchURL = self.url + '?page=rss&' + urllib.urlencode(params)
searchURL = self.url + '?' + urllib.urlencode(params)
logger.log(u"Search URL: %s" % searchURL, logger.DEBUG)
summary_regex = ur"(\d+) seeder\(s\), (\d+) leecher\(s\), \d+ download\(s\) - (\d+.?\d* [KMGT]iB)(.*)"
s = re.compile(summary_regex, re.DOTALL)
results = []
for curItem in self.cache.getRSSFeed(searchURL, items=['entries'])['entries'] or []:
title = curItem[0]
download_url = curItem[1]
#FIXME
size = -1
seeders = 1
leechers = 0
title = curItem['title']
download_url = curItem['link']
if not all([title, download_url]):
continue
seeders, leechers, size, verified = s.findall(curItem['summary'])[0]
size = self._convertSize(size)
# Filter unseeded torrent
#if seeders < self.minseed or leechers < self.minleech:
# if mode != 'RSS':
# logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG)
# continue
if seeders < self.minseed or leechers < self.minleech:
if mode != 'RSS':
logger.log(u"Discarding torrent because it doesn't meet the minimum seeders or leechers: {0} (S:{1} L:{2})".format(title, seeders, leechers), logger.DEBUG)
continue
if self.confirmed and not verified and mode != 'RSS':
logger.log(u"Found result " + title + " but that doesn't seem like a verified result so I'm ignoring it", logger.DEBUG)
continue
item = title, download_url, size, seeders, leechers
if mode != 'RSS':
logger.log(u"Found result: %s " % title, logger.DEBUG)
#FIX ME SORTING
results.append(curItem)
items[mode].append(item)
# For each search mode sort all the items by seeders if available
items[mode].sort(key=lambda tup: tup[3], reverse=True)
results += items[mode]
return results
......@@ -114,6 +122,19 @@ class NyaaProvider(generic.TorrentProvider):
return match.group(1)
return None
def _convertSize(self, size):
size, modifier = size.split(' ')
size = float(size)
if modifier in 'KiB':
size = size * 1024
elif modifier in 'MiB':
size = size * 1024**2
elif modifier in 'GiB':
size = size * 1024**3
elif modifier in 'TiB':
size = size * 1024**4
return size
def seedRatio(self):
return self.ratio
......@@ -126,16 +147,7 @@ class NyaaCache(tvcache.TVCache):
self.minTime = 15
def _getRSSData(self):
params = {
"page": 'rss', # Use RSS page
"order": '1', # Sort Descending By Date
"cats": '1_37', # Limit to English-translated Anime (for now)
}
url = self.provider.url + '?' + urllib.urlencode(params)
logger.log(u"Cache update URL: %s" % url, logger.DEBUG)
return self.getRSSFeed(url)
search_params = {'RSS': ['']}
return {'entries': self.provider._doSearch(search_params)}
provider = NyaaProvider()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment