Private GIT

Skip to content
Snippets Groups Projects
Commit 345d3844 authored by miigotu's avatar miigotu
Browse files

Fix some small problems in hd4free provider such as size parsing

parent 3e039cff
No related branches found
No related tags found
No related merge requests found
......@@ -30,12 +30,16 @@ class HD4FreeProvider(TorrentProvider): # pylint: disable=too-many-instance-att
TorrentProvider.__init__(self, "HD4Free")
self.url = 'https://hd4free.xyz'
self.ratio = 0
self.cache = HD4FreeCache(self)
self.minseed, self.minleech = 2 * [None]
self.urls = {'search': self.url + '/searchapi.php'}
self.freeleech = None
self.username = None
self.api_key = None
self.freeleech = None
self.minseed = None
self.minleech = None
self.ratio = 0
self.cache = HD4FreeCache(self)
def _check_auth(self):
if self.username and self.api_key:
......@@ -55,21 +59,25 @@ class HD4FreeProvider(TorrentProvider): # pylint: disable=too-many-instance-att
'apikey': self.api_key
}
for mode in search_strings: # Mode = RSS, Season, Episode
for mode in search_strings:
items = []
logger.log(u"Search Mode: %s" % mode, logger.DEBUG)
for search_string in search_strings[mode]:
if mode != 'RSS':
search_params['search'] = search_string.encode('utf-8')
search_params['fl'] = 'true' if self.freeleech else 'false'
if self.freeleech:
search_params['fl'] = 'true'
else:
search_params.pop('fl', '')
if mode != 'RSS':
logger.log(u"Search string: " + search_string.strip(), logger.DEBUG)
search_params['search'] = search_string.encode('utf-8')
else:
search_params.pop('search', '')
search_url = self.urls['search'] + "?" + urlencode(search_params)
logger.log(u"Search URL: %s" % search_url, logger.DEBUG)
searchURL = self.url + "/searchapi.php?" + urlencode(search_params)
logger.log(u"Search URL: %s" % searchURL, logger.DEBUG)
jdata = self.get_url(searchURL, json=True)
jdata = self.get_url(search_url, json=True)
if not jdata:
logger.log(u"No data returned from provider", logger.DEBUG)
continue
......@@ -78,32 +86,33 @@ class HD4FreeProvider(TorrentProvider): # pylint: disable=too-many-instance-att
if jdata['0']['total_results'] == 0:
logger.log(u"Provider has no results for this search", logger.DEBUG)
continue
except (ValueError, KeyError):
pass
except StandardError:
continue
for i in jdata:
seeders = jdata[i]["seeders"]
leechers = jdata[i]["leechers"]
try:
title = jdata[i]["release_name"]
torrent_size = jdata[i]["size"]
download_url = jdata[i]["download_url"]
size = convert_size(torrent_size) or -1
if not all([title, download_url]):
continue
# Filter unseeded torrent
seeders = jdata[i]["seeders"]
leechers = jdata[i]["leechers"]
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
torrent_size = str(jdata[i]["size"]) + ' MB'
size = convert_size(torrent_size) or -1
item = title, download_url, size, seeders, leechers
if mode != 'RSS':
logger.log(u"Found result: %s " % title, logger.DEBUG)
item = title, download_url, size, seeders, leechers
items.append(item)
except StandardError:
continue
# For each search mode sort all the items by seeders if available
items.sort(key=lambda tup: tup[3], reverse=True)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment