diff --git a/sickbeard/providers/alpharatio.py b/sickbeard/providers/alpharatio.py index 39dd4d8ba6306856628f072d89dc3df4cd71a276..9aebd87370851d0aadb911b325f96377b48e8676 100644 --- a/sickbeard/providers/alpharatio.py +++ b/sickbeard/providers/alpharatio.py @@ -24,6 +24,7 @@ import traceback from sickbeard import logger from sickbeard import tvcache from sickbeard.bs4_parser import BS4Parser +from sickrage.helper.common import convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -109,13 +110,14 @@ class AlphaRatioProvider(TorrentProvider): url = result.find('a', attrs={'title': 'Download'}) try: - title = link.contents[0] - download_url = self.urls['download'] % (url['href']) - seeders = cells[len(cells) - 2].contents[0] - leechers = cells[len(cells) - 1].contents[0] - # FIXME - size = -1 - except (AttributeError, TypeError): + num_cells = len(cells) + title = link.contents[0] if link.contents[0] else None + download_url = self.urls['download'] % (url['href']) if url['href'] else None + seeders = cells[num_cells - 2].contents[0] if cells[len(cells) - 2].contents[0] else 1 + leechers = cells[num_cells - 1].contents[0] if cells[len(cells) - 1].contents[0] else 0 + torrent_size = cells[len(cells) - 4].contents[0] + size = convert_size(torrent_size) or -1 + except (AttributeError, TypeError, KeyError, ValueError): continue if not all([title, download_url]): diff --git a/sickbeard/providers/btdigg.py b/sickbeard/providers/btdigg.py index 099b7116b2f3467e8a36ba51c16b7668813240b0..81bca3e05f89bb2dafc48abb73fd35273d773ff7 100644 --- a/sickbeard/providers/btdigg.py +++ b/sickbeard/providers/btdigg.py @@ -22,6 +22,7 @@ from urllib import urlencode from sickbeard import logger from sickbeard import tvcache +from sickrage.helper.common import convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -70,43 +71,49 @@ class BTDIGGProvider(TorrentProvider): logger.log(u"No data returned to be parsed!!!", logger.DEBUG) continue - for torrent in jdata: - if not torrent['name']: - logger.log(u"Ignoring result since it has no name", logger.DEBUG) - continue - - if torrent['ff']: - logger.log(u"Ignoring result for %s since it's a fake (level = %s)" % (torrent['name'], torrent['ff']), logger.DEBUG) - continue - - if not torrent['files']: - logger.log(u"Ignoring result for %s without files" % torrent['name'], logger.DEBUG) - continue - - download_url = torrent['magnet'] + self._custom_trackers - - if not download_url: - logger.log(u"Ignoring result for %s without a url" % torrent['name'], logger.DEBUG) - continue - - # FIXME - seeders = 1 - leechers = 0 - - # # Filter unseeded torrent (Unsupported) - # 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 mode != 'RSS': - logger.log(u"Found result: %s" % torrent['name'], logger.DEBUG) - - item = torrent['name'], download_url, torrent['size'], seeders, leechers - items[mode].append(item) - - # # For each search mode sort all the items by seeders if available (Unsupported) - # items[mode].sort(key=lambda tup: tup[3], reverse=True) + try: + + for torrent in jdata: + if not torrent['name']: + logger.log(u"Ignoring result since it has no name", logger.DEBUG) + continue + + if torrent['ff']: + logger.log(u"Ignoring result for %s since it's a fake (level = %s)" % (torrent['name'], torrent['ff']), logger.DEBUG) + continue + + if not torrent['files']: + logger.log(u"Ignoring result for %s without files" % torrent['name'], logger.DEBUG) + continue + + download_url = torrent['magnet'] + self._custom_trackers if torrent['magnet'] else None + + # Provider doesn't provide seeders/leechers + seeders = 1 + leechers = 0 + torrent_size = torrent['size'] + size = convert_size(torrent_size) or -1 + + if not all([title, download_url]): + continue + + # Filter unseeded torrent (Unsupported) + #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 + + item = title, download_url, size, seeders, leechers + if mode != 'RSS': + logger.log(u"Found result: %s " % title, logger.DEBUG) + + items[mode].append(item) + + except Exception: + logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.WARNING) + + # 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] diff --git a/sickbeard/providers/tntvillage.py b/sickbeard/providers/tntvillage.py index 430467a283a93cefd7809c77fe45a1350ed5d8ca..f4c2167dfe3a2c36e6e58116f6b2bcfe441b32d7 100644 --- a/sickbeard/providers/tntvillage.py +++ b/sickbeard/providers/tntvillage.py @@ -26,6 +26,7 @@ from sickbeard import db from sickbeard.bs4_parser import BS4Parser from sickbeard.name_parser.parser import NameParser, InvalidNameException, InvalidShowException +from sickrage.helper.common import convert_size from sickrage.helper.exceptions import AuthException from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -336,8 +337,8 @@ class TNTVillageProvider(TorrentProvider): leechers = int(leechers.strip('[]')) seeders = result.find_all('td')[3].find_all('td')[2].text seeders = int(seeders.strip('[]')) - # FIXME - size = -1 + torrent_size = result.find_all('td')[3].find_all('td')[3].text.strip('[]') + " GB" + size = convert_size(torrent_size) or -1 except (AttributeError, TypeError): continue diff --git a/sickbeard/providers/torrentday.py b/sickbeard/providers/torrentday.py index 9c79bbd6b0f9f2eb435452af6603dc67ab9d2e0f..d758d985e8ea41e9f333ce11a8f79577ff69fb28 100644 --- a/sickbeard/providers/torrentday.py +++ b/sickbeard/providers/torrentday.py @@ -20,6 +20,7 @@ import re import requests from sickbeard import logger from sickbeard import tvcache +from sickrage.helper.common import convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -129,12 +130,12 @@ class TorrentDayProvider(TorrentProvider): for torrent in torrents: - title = re.sub(r"\[.*\=.*\].*\[/.*\]", "", torrent['name']) - download_url = self.urls['download'] % (torrent['id'], torrent['fname']) - seeders = int(torrent['seed']) - leechers = int(torrent['leech']) - # FIXME - size = -1 + title = re.sub(r"\[.*\=.*\].*\[/.*\]", "", torrent['name']) if torrent['name'] else None + download_url = self.urls['download'] % (torrent['id'], torrent['fname']) if torrent['id'] and torrent['fname'] else None + seeders = int(torrent['seed']) if torrent['seed'] else 1 + leechers = int(torrent['leech']) if torrent['leech'] else 0 + torrent_size = torrent['size'] + size = convert_size(torrent_size) or -1 if not all([title, download_url]): continue