diff --git a/sickbeard/providers/bitsnoop.py b/sickbeard/providers/bitsnoop.py index 5e89e174debd1c478522c4f23be6a953f3d850f0..72417a428f3d1daffc6e3f68e2b3c4c35ea380c4 100644 --- a/sickbeard/providers/bitsnoop.py +++ b/sickbeard/providers/bitsnoop.py @@ -92,9 +92,10 @@ class BitSnoopProvider(TorrentProvider): # pylint: disable=too-many-instance-at if not (title and download_url): continue - seeders = try_int(item.find('numseeders').text, 0) - leechers = try_int(item.find('numleechers').text, 0) - size = try_int(item.find('size').text, -1) + seeders = try_int(item.find('numseeders').text) + leechers = try_int(item.find('numleechers').text) + torrent_size = item.find('size').text + size = convert_size(torrent_size) or -1 info_hash = item.find('infohash').text diff --git a/sickbeard/providers/cpasbien.py b/sickbeard/providers/cpasbien.py index 83ed1e9349a8fb4cdef3740266ff228e2316b337..6a8640404c47ae996cb7c754f01c7f200d0dd55b 100644 --- a/sickbeard/providers/cpasbien.py +++ b/sickbeard/providers/cpasbien.py @@ -21,7 +21,7 @@ import traceback from sickbeard import logger from sickbeard import tvcache -from sickrage.helper.common import try_int +from sickrage.helper.common import try_int, convert_size from sickbeard.bs4_parser import BS4Parser from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -80,9 +80,11 @@ class CpasbienProvider(TorrentProvider): title = torrent.find(class_="titre").get_text(strip=True).replace("HDTV", "HDTV x264-CPasBien") tmp = torrent.find("a")['href'].split('/')[-1].replace('.html', '.torrent').strip() download_url = (self.url + '/telechargement/%s' % tmp) - size = self._convertSize(torrent.find(class_="poid").get_text(strip=True)) seeders = try_int(torrent.find(class_="up").get_text(strip=True)) leechers = try_int(torrent.find(class_="down").get_text(strip=True)) + torrent_size = torrent.find(class_="poid").get_text() + + size = convert_size(torrent_size) or -1 except (AttributeError, TypeError, KeyError, IndexError): continue @@ -114,27 +116,6 @@ class CpasbienProvider(TorrentProvider): def seed_ratio(self): return self.ratio - @staticmethod - def _convertSize(sizeString): - size = sizeString[:-2].strip() - modifier = sizeString[-2:].upper() - try: - size = float(size) - if modifier in 'KO': - size *= 1024 ** 1 - elif modifier in 'MO': - size *= 1024 ** 2 - elif modifier in 'GO': - size *= 1024 ** 3 - elif modifier in 'TO': - size *= 1024 ** 4 - else: - raise - except Exception: - size = -1 - - return long(size) - class CpasbienCache(tvcache.TVCache): def __init__(self, provider_obj): diff --git a/sickbeard/providers/danishbits.py b/sickbeard/providers/danishbits.py index b531cbb4d5992375783aef8c11aadeb6cbe26f1c..1afa8ef8cdd55773b39462d861ea18e1dac2c71c 100644 --- a/sickbeard/providers/danishbits.py +++ b/sickbeard/providers/danishbits.py @@ -20,10 +20,10 @@ import traceback import urllib import time -import re from sickbeard import logger from sickbeard import tvcache +from sickrage.helper.common import convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider from sickbeard.bs4_parser import BS4Parser @@ -146,7 +146,9 @@ class DanishbitsProvider(TorrentProvider): # pylint: disable=too-many-instance- download_url = self.urls['base_url'] + result.find('span', attrs={'class': 'right'}).find('a')['href'] seeders = int(result.find_all('td')[6].text) leechers = int(result.find_all('td')[7].text) - size = self._convertSize(result.find_all('td')[2].text) + torrent_size = result.find_all('td')[2].text + + size = convert_size(torrent_size) or -1 freeleech = result.find('span', class_='freeleech') # except (AttributeError, TypeError, KeyError): # logger.log(u"attrErr: {0}, tErr: {1}, kErr: {2}".format(AttributeError, TypeError, KeyError), logger.DEBUG) @@ -180,26 +182,6 @@ class DanishbitsProvider(TorrentProvider): # pylint: disable=too-many-instance- return results - @staticmethod - def _convertSize(size): - regex = re.compile(r'(.+?\w{2})\d+ file\w') - m = regex.match(size) - size = m.group(1) - - size, modifier = size[:-2], size[-2:] - size = size.replace(',', '') # strip commas from comma separated values - - size = float(size) - if modifier in 'KB': - size *= 1024 ** 1 - elif modifier in 'MB': - size *= 1024 ** 2 - elif modifier in 'GB': - size *= 1024 ** 3 - elif modifier in 'TB': - size *= 1024 ** 4 - return long(size) - def seedRatio(self): return self.ratio diff --git a/sickbeard/providers/extratorrent.py b/sickbeard/providers/extratorrent.py index c32c5640c37bb6308362b94b5a41f0228e2eaf27..aef704283d4b62cf11bc46d905ce37d39f8554e2 100644 --- a/sickbeard/providers/extratorrent.py +++ b/sickbeard/providers/extratorrent.py @@ -22,7 +22,7 @@ import sickbeard from sickbeard import logger from sickbeard import tvcache from sickbeard.common import USER_AGENT -from sickrage.helper.common import try_int +from sickrage.helper.common import try_int, convert_size from sickbeard.bs4_parser import BS4Parser from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -74,9 +74,10 @@ class ExtraTorrentProvider(TorrentProvider): # pylint: disable=too-many-instanc for item in parser.findAll('item'): try: title = re.sub(r'^<!\[CDATA\[|\]\]>$', '', item.find('title').get_text(strip=True)) - size = try_int(item.find('size').get_text(strip=True), -1) seeders = try_int(item.find('seeders').get_text(strip=True)) leechers = try_int(item.find('leechers').get_text(strip=True)) + torrent_size = item.find('size').get_text() + size = convert_size(torrent_size) or -1 if sickbeard.TORRENT_METHOD == 'blackhole': enclosure = item.find('enclosure') # Backlog doesnt have enclosure diff --git a/sickbeard/providers/gftracker.py b/sickbeard/providers/gftracker.py index 79da127b9418f064b86bf7bda3e0b8cb42f4e6f4..888426c31221d6ac5f3a5686fc1da9697e047dd7 100644 --- a/sickbeard/providers/gftracker.py +++ b/sickbeard/providers/gftracker.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.helper.exceptions import AuthException from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -126,10 +127,7 @@ class GFTrackerProvider(TorrentProvider): leechers = int(shares[1]) torrent_size = cells[7].get_text().split("/", 1)[0] - if re.match(r"\d+([,\.]\d+)?\s*[KkMmGgTt]?[Bb]", torrent_size): - size = self._convertSize(torrent_size.strip()) - else: - size = -1 + size = convert_size(torrent_size) or -1 except (AttributeError, TypeError): continue @@ -162,23 +160,6 @@ class GFTrackerProvider(TorrentProvider): def seed_ratio(self): return self.ratio - def _convertSize(self, sizeString): - size = sizeString[:-2].strip() - modifier = sizeString[-2:].upper() - try: - size = float(size) - if modifier in 'KB': - size *= 1024 ** 1 - elif modifier in 'MB': - size *= 1024 ** 2 - elif modifier in 'GB': - size *= 1024 ** 3 - elif modifier in 'TB': - size *= 1024 ** 4 - except Exception: - size = -1 - return long(size) - class GFTrackerCache(tvcache.TVCache): def __init__(self, provider_obj): diff --git a/sickbeard/providers/hd4free.py b/sickbeard/providers/hd4free.py index 4cf1526a486c0a09a7c3d601c39f5efcb0699fd3..80700de509cd48187c31fcfa5228c598ce7a8184 100644 --- a/sickbeard/providers/hd4free.py +++ b/sickbeard/providers/hd4free.py @@ -20,6 +20,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 @@ -87,9 +88,11 @@ class HD4FREEProvider(TorrentProvider): # pylint: disable=too-many-instance-att seeders = jdata[i]["seeders"] leechers = jdata[i]["leechers"] title = jdata[i]["release_name"] - size = jdata[i]["size"] + 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 diff --git a/sickbeard/providers/hdspace.py b/sickbeard/providers/hdspace.py index addac0b45e58dea7e03dfe028294a2fe40f6e9bc..d186ddd1d442b180c6ab8bf5d3efd7ef52613711 100644 --- a/sickbeard/providers/hdspace.py +++ b/sickbeard/providers/hdspace.py @@ -26,6 +26,7 @@ from bs4 import BeautifulSoup from sickbeard import logger from sickbeard import tvcache +from sickrage.helper.common import convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -138,7 +139,8 @@ class HDSpaceProvider(TorrentProvider): download_url = self.urls['base_url'] + dl_href seeders = int(result.find('span', attrs={'class': 'seedy'}).find('a').text) leechers = int(result.find('span', attrs={'class': 'leechy'}).find('a').text) - size = re.match(r'.*?([0-9]+,?\.?[0-9]* [KkMmGg]+[Bb]+).*', str(result), re.DOTALL).group(1) + torrent_size = re.match(r'.*?([0-9]+,?\.?[0-9]* [KkMmGg]+[Bb]+).*', str(result), re.DOTALL).group(1) + size = convert_size(torrent_size) or -1 if not all([title, download_url]): continue @@ -168,19 +170,6 @@ class HDSpaceProvider(TorrentProvider): def seed_ratio(self): return self.ratio - def _convertSize(self, size): - size, modifier = size.split(' ') - size = float(size) - if modifier in 'KB': - size *= 1024 ** 1 - elif modifier in 'MB': - size *= 1024 ** 2 - elif modifier in 'GB': - size *= 1024 ** 3 - elif modifier in 'TB': - size *= 1024 ** 4 - return long(size) - class HDSpaceCache(tvcache.TVCache): def __init__(self, provider_obj): diff --git a/sickbeard/providers/hdtorrents.py b/sickbeard/providers/hdtorrents.py index 49ad271ca423b9792871596f2fd78fb44e8ad2df..7fe30484a05c34580a08c54d3a4d083b5581255d 100644 --- a/sickbeard/providers/hdtorrents.py +++ b/sickbeard/providers/hdtorrents.py @@ -25,7 +25,7 @@ from sickbeard import logger from sickbeard import tvcache from sickbeard.bs4_parser import BS4Parser -from sickrage.helper.common import try_int +from sickrage.helper.common import try_int, convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -152,7 +152,9 @@ class HDTorrentsProvider(TorrentProvider): # pylint: disable=too-many-instance- title = cells[labels.index(u'Filename')].a.get_text(strip=True) seeders = try_int(cells[labels.index(u'S')].get_text(strip=True)) leechers = try_int(cells[labels.index(u'L')].get_text(strip=True)) - size = self._convertSize(cells[labels.index(u'Size')].get_text(strip=True)) + torrent_size = cells[labels.index(u'Size')].get_text() + + size = convert_size(torrent_size) or -1 download_url = self.url + '/' + cells[labels.index(u'Dl')].a['href'] except (AttributeError, TypeError, KeyError, ValueError, IndexError): continue @@ -182,22 +184,6 @@ class HDTorrentsProvider(TorrentProvider): # pylint: disable=too-many-instance- def seed_ratio(self): return self.ratio - @staticmethod - def _convertSize(size): - try: - modifier = size[-2:].upper() - size = float(size[:-2].strip()) - - units = ['KB', 'MB', 'GB', 'TB', 'PB'] - if modifier in units: - size *= 1024. ** units.index(modifier) - else: - raise - except Exception: - size = -1 - - return long(size) - class HDTorrentsCache(tvcache.TVCache): def __init__(self, provider_obj): diff --git a/sickbeard/providers/hounddawgs.py b/sickbeard/providers/hounddawgs.py index f6fa855453df7e21e9dc62d5396efa155c2e9013..74757f70373bed922e6658ac74ecfb4ffdc4862b 100644 --- a/sickbeard/providers/hounddawgs.py +++ b/sickbeard/providers/hounddawgs.py @@ -22,7 +22,7 @@ import traceback from sickbeard import logger from sickbeard import tvcache from sickbeard.bs4_parser import BS4Parser -from sickrage.helper.common import try_int +from sickrage.helper.common import try_int, convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -149,7 +149,7 @@ class HoundDawgsProvider(TorrentProvider): # pylint: disable=too-many-instance- download_url = self.urls['base_url'] + allAs[0].attrs['href'] torrent_size = result.find("td", class_="nobr").find_next_sibling("td").string if torrent_size: - size = self._convertSize(torrent_size) + size = convert_size(torrent_size) or -1 seeders = try_int((result.findAll('td')[6]).text) leechers = try_int((result.findAll('td')[7]).text) @@ -181,19 +181,6 @@ class HoundDawgsProvider(TorrentProvider): # pylint: disable=too-many-instance- return results - @staticmethod - def _convertSize(size): - size = re.sub(r'[i, ]+', '', size) - matches = re.match(r'([\d.]+)([TGMK])', size.strip().upper()) - if not matches: - return -1 - - size = matches.group(1) - modifier = matches.group(2) - - mod = {'K': 1, 'M': 2, 'G': 3, 'T': 4} - return long(float(size) * 1024 ** mod[modifier]) - def seed_ratio(self): return self.ratio diff --git a/sickbeard/providers/iptorrents.py b/sickbeard/providers/iptorrents.py index 4fde4c7684e3f62d6a726e628e1f1aec1b2b08bb..d9abd5b00e56af0725e30ecf260ba25fc1414f11 100644 --- a/sickbeard/providers/iptorrents.py +++ b/sickbeard/providers/iptorrents.py @@ -21,6 +21,7 @@ import re from sickbeard import logger from sickbeard import tvcache from sickbeard.bs4_parser import BS4Parser +from sickrage.helper.common import convert_size from sickrage.helper.exceptions import AuthException, ex from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -127,9 +128,10 @@ class IPTorrentsProvider(TorrentProvider): try: title = result.find_all('td')[1].find('a').text download_url = self.urls['base_url'] + result.find_all('td')[3].find('a')['href'] - size = self._convertSize(result.find_all('td')[5].text) seeders = int(result.find('td', attrs={'class': 'ac t_seeders'}).text) leechers = int(result.find('td', attrs={'class': 'ac t_leechers'}).text) + torrent_size = result.find_all('td')[5].text + size = convert_size(torrent_size) or -1 except (AttributeError, TypeError, KeyError): continue @@ -161,20 +163,6 @@ class IPTorrentsProvider(TorrentProvider): def seed_ratio(self): return self.ratio - @staticmethod - def _convertSize(size): - size, modifier = size.split(' ') - size = float(size) - if modifier in 'KB': - size *= 1024 ** 1 - elif modifier in 'MB': - size *= 1024 ** 2 - elif modifier in 'GB': - size *= 1024 ** 3 - elif modifier in 'TB': - size *= 1024 ** 4 - return long(size) - class IPTorrentsCache(tvcache.TVCache): def __init__(self, provider_obj): diff --git a/sickbeard/providers/kat.py b/sickbeard/providers/kat.py index 2472449e29d23dd636b212b45d15e9357ccb73af..5262b6db9111174df02234ae9d8cd60a31a00307 100755 --- a/sickbeard/providers/kat.py +++ b/sickbeard/providers/kat.py @@ -26,7 +26,7 @@ import sickbeard from sickbeard import logger from sickbeard import tvcache from sickbeard.common import USER_AGENT -from sickrage.helper.common import try_int +from sickrage.helper.common import try_int, convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -114,10 +114,11 @@ class KATProvider(TorrentProvider): if not (title and download_url): continue - seeders = try_int(item.find('torrent:seeds').text, 0) - leechers = try_int(item.find('torrent:peers').text, 0) - verified = bool(try_int(item.find('torrent:verified').text, 0)) - size = try_int(item.find('torrent:contentlength').text) + seeders = try_int(item.find('torrent:seeds').text) + leechers = try_int(item.find('torrent:peers').text) + verified = bool(try_int(item.find('torrent:verified').text)) + torrent_size = item.find('torrent:contentlength').text + size = convert_size(torrent_size) or -1 info_hash = item.find('torrent:infohash').text # link = item['link'] diff --git a/sickbeard/providers/limetorrents.py b/sickbeard/providers/limetorrents.py index 6a73e2d846a531f689098b9b59a8e9c465088dcf..d9abea5bed718aa68ecfb74b2643e113f3a68d84 100644 --- a/sickbeard/providers/limetorrents.py +++ b/sickbeard/providers/limetorrents.py @@ -21,7 +21,7 @@ from bs4 import BeautifulSoup from sickbeard import logger from sickbeard import tvcache from sickbeard.common import USER_AGENT -from sickrage.helper.common import try_int +from sickrage.helper.common import try_int, convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -97,7 +97,10 @@ class LimeTorrentsProvider(TorrentProvider): # pylint: disable=too-many-instance description = item.find('description').text.partition(',') seeders = try_int(description[0].lstrip('Seeds: ').strip()) leechers = try_int(description[2].lstrip('Leechers ').strip()) - size = try_int(item.find('size').text, -1) + + torrent_size = item.find('size').text + + size = convert_size(torrent_size) or -1 except (AttributeError, TypeError, KeyError, ValueError): continue diff --git a/sickbeard/providers/morethantv.py b/sickbeard/providers/morethantv.py index 71892f1e7766fad006478162a3a625a596b2ab2d..d1b8476034ba92bcf1532186d82d046aa0be6265 100644 --- a/sickbeard/providers/morethantv.py +++ b/sickbeard/providers/morethantv.py @@ -28,6 +28,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.helper.exceptions import AuthException from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -145,12 +146,10 @@ class MoreThanTVProvider(TorrentProvider): download_url = self.urls['download'] % torrent_id_long seeders = cells[6].contents[0] - leechers = cells[7].contents[0] + torrent_size = cells[4].text.strip() - size = -1 - if re.match(r'\d+([,\.]\d+)?\s*[KkMmGgTt]?[Bb]', cells[4].contents[0]): - size = self._convertSize(cells[4].text.strip()) + size = convert_size(torrent_size) or -1 except (AttributeError, TypeError): continue @@ -183,23 +182,6 @@ class MoreThanTVProvider(TorrentProvider): def seed_ratio(self): return self.ratio - def _convertSize(self, sizeString): - size = sizeString[:-2].strip() - modifier = sizeString[-2:].upper() - try: - size = float(size) - if modifier in 'KB': - size *= 1024 ** 1 - elif modifier in 'MB': - size *= 1024 ** 2 - elif modifier in 'GB': - size *= 1024 ** 3 - elif modifier in 'TB': - size *= 1024 ** 4 - except Exception: - size = -1 - return long(size) - class MoreThanTVCache(tvcache.TVCache): def __init__(self, provider_obj): diff --git a/sickbeard/providers/newpct.py b/sickbeard/providers/newpct.py index 9305b0384573d42e6ae9d6cf07981c3a010f754c..b1dba3c91aa54e5d14c4bf681188566f793e0174 100644 --- a/sickbeard/providers/newpct.py +++ b/sickbeard/providers/newpct.py @@ -27,6 +27,7 @@ from sickbeard import helpers 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 @@ -113,17 +114,18 @@ class newpctProvider(TorrentProvider): for row in torrent_table[:-1]: try: - torrent_size = row.findAll('td')[2] torrent_row = row.findAll('a')[0] download_url = torrent_row.get('href', '') - size = self._convertSize(torrent_size.text) + title = self._processTitle(torrent_row.get('title', '')) # Provider does not provide seeders/leechers seeders = 1 leechers = 0 + torrent_size = row.findAll('td')[2].text + size = convert_size(torrent_size) or -1 except (AttributeError, TypeError): continue @@ -199,19 +201,6 @@ class newpctProvider(TorrentProvider): return False - @staticmethod - def _convertSize(size): - size, modifier = size.split(' ') - size = float(size) - if modifier in 'KB': - size *= 1024 ** 1 - elif modifier in 'MB': - size *= 1024 ** 2 - elif modifier in 'GB': - size *= 1024 ** 3 - elif modifier in 'TB': - size *= 1024 ** 4 - return long(size) @staticmethod def _processTitle(title): diff --git a/sickbeard/providers/newznab.py b/sickbeard/providers/newznab.py index 9c458647dfa999ed6a58f5543b19cb66ed3297a8..0d9c8e370b9165cc4a2fda7fba08e0f2881b5ba2 100644 --- a/sickbeard/providers/newznab.py +++ b/sickbeard/providers/newznab.py @@ -37,7 +37,7 @@ from sickbeard import db from sickbeard.common import Quality from sickrage.helper.encoding import ek, ss from sickrage.show.Show import Show -from sickrage.helper.common import try_int +from sickrage.helper.common import try_int, convert_size # from sickbeard.common import USER_AGENT from sickrage.providers.nzb.NZBProvider import NZBProvider @@ -357,15 +357,17 @@ class NewznabProvider(NZBProvider): continue seeders = leechers = None - size = try_int(item.size, -1) + torrent_size = item.size for attr in item.findAll('newznab:attr') + item.findAll('torznab:attr'): - size = try_int(attr['value'], -1) if attr['name'] == 'size' else size + torrent_size = attr['value'] if attr['name'] == 'size' else torrent_size seeders = try_int(attr['value'], 1) if attr['name'] == 'seeders' else seeders - leechers = try_int(attr['value'], 0) if attr['name'] == 'peers' else leechers + leechers = try_int(attr['value']) if attr['name'] == 'peers' else leechers - if not size or (torznab and (seeders is None or leechers is None)): + if not torrent_size or (torznab and (seeders is None or leechers is None)): continue + size = convert_size(torrent_size) or -1 + result = {'title': title, 'link': download_url, 'size': size, 'seeders': seeders, 'leechers': leechers} results.append(result) diff --git a/sickbeard/providers/nyaatorrents.py b/sickbeard/providers/nyaatorrents.py index fddc7b923db01d930122eabd6fa73dfdf8cacf40..0c3e96c1fa7d375dd7e47f875b59963f6b630e45 100644 --- a/sickbeard/providers/nyaatorrents.py +++ b/sickbeard/providers/nyaatorrents.py @@ -22,6 +22,7 @@ import re from sickbeard import logger from sickbeard import tvcache +from sickrage.helper.common import convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -80,8 +81,8 @@ class NyaaProvider(TorrentProvider): if not all([title, download_url]): continue - seeders, leechers, size, verified = s.findall(curItem['summary'])[0] - size = self._convertSize(size) + seeders, leechers, torrent_size, verified = s.findall(curItem['summary'])[0] + size = convert_size(torrent_size) or -1 # Filter unseeded torrent if seeders < self.minseed or leechers < self.minleech: @@ -106,20 +107,6 @@ class NyaaProvider(TorrentProvider): return results - @staticmethod - def _convertSize(size): - size, modifier = size.split(' ') - size = float(size) - if modifier in 'KiB': - size *= 1024 ** 1 - elif modifier in 'MiB': - size *= 1024 ** 2 - elif modifier in 'GiB': - size *= 1024 ** 3 - elif modifier in 'TiB': - size *= 1024 ** 4 - return long(size) - def seed_ratio(self): return self.ratio diff --git a/sickbeard/providers/pretome.py b/sickbeard/providers/pretome.py index 96fcf5ede873ffd568e784f00bf6a6a74b1b5a98..851a3def1ac5e64a5f61b86208ac76f79232f9a5 100644 --- a/sickbeard/providers/pretome.py +++ b/sickbeard/providers/pretome.py @@ -24,11 +24,11 @@ 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 class PretomeProvider(TorrentProvider): - def __init__(self): TorrentProvider.__init__(self, "Pretome") @@ -134,10 +134,8 @@ class PretomeProvider(TorrentProvider): # Need size for failed downloads handling if size is None: - if re.match(r'[0-9]+,?\.?[0-9]*[KkMmGg]+[Bb]+', cells[7].text): - size = self._convertSize(cells[7].text) - if not size: - size = -1 + torrent_size = cells[7].text + size = convert_size(torrent_size) or -1 except (AttributeError, TypeError): continue @@ -170,20 +168,6 @@ class PretomeProvider(TorrentProvider): def seed_ratio(self): return self.ratio - def _convertSize(self, sizeString): - size = sizeString[:-2] - modifier = sizeString[-2:] - size = float(size) - if modifier in 'KB': - size *= 1024 ** 1 - elif modifier in 'MB': - size *= 1024 ** 2 - elif modifier in 'GB': - size *= 1024 ** 3 - elif modifier in 'TB': - size *= 1024 ** 4 - return long(size) - class PretomeCache(tvcache.TVCache): def __init__(self, provider_obj): diff --git a/sickbeard/providers/rarbg.py b/sickbeard/providers/rarbg.py index b13b62597709ebf13ce143ee834ac65588ef64d5..bd03bda7a08c954c0dcc288169a5ed7fd446e8fa 100644 --- a/sickbeard/providers/rarbg.py +++ b/sickbeard/providers/rarbg.py @@ -27,6 +27,7 @@ from sickbeard import logger from sickbeard import tvcache from sickbeard.common import USER_AGENT from sickbeard.indexers.indexer_config import INDEXER_TVDB +from sickrage.helper.common import convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -217,9 +218,10 @@ class RarbgProvider(TorrentProvider): try: title = item['title'] download_url = item['download'] - size = item['size'] seeders = item['seeders'] leechers = item['leechers'] + torrent_size = item['size'] + size = convert_size(torrent_size) or -1 # pubdate = item['pubdate'] if not all([title, download_url]): diff --git a/sickbeard/providers/scc.py b/sickbeard/providers/scc.py index 0aac6ce591f12b9fcd8d9e56e8119a0a1a3af58b..9d57d04ae1991f61dcca08342db56d5ce369f329 100644 --- a/sickbeard/providers/scc.py +++ b/sickbeard/providers/scc.py @@ -26,6 +26,7 @@ import sickbeard from sickbeard.common import cpu_presets from sickbeard import logger from sickbeard import tvcache +from sickrage.helper.common import convert_size from sickbeard.bs4_parser import BS4Parser from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -136,7 +137,9 @@ class SCCProvider(TorrentProvider): # pylint: disable=too-many-instance-attribu download_url = self.urls['download'] % url['href'] seeders = int(result.find('td', attrs={'class': 'ttr_seeders'}).string) leechers = int(result.find('td', attrs={'class': 'ttr_leechers'}).string) - size = self._convertSize(result.find('td', attrs={'class': 'ttr_size'}).contents[0]) + torrent_size = result.find('td', attrs={'class': 'ttr_size'}).contents[0] + + size = convert_size(torrent_size) or -1 except (AttributeError, TypeError): continue @@ -165,20 +168,6 @@ class SCCProvider(TorrentProvider): # pylint: disable=too-many-instance-attribu def seed_ratio(self): return self.ratio - @staticmethod - def _convertSize(size): - size, base = size.split() - size = float(size) - if base in 'KB': - size *= 1024 ** 1 - elif base in 'MB': - size *= 1024 ** 2 - elif base in 'GB': - size *= 1024 ** 3 - elif base in 'TB': - size *= 1024 ** 4 - return long(size) - class SCCCache(tvcache.TVCache): def __init__(self, provider_obj): diff --git a/sickbeard/providers/scenetime.py b/sickbeard/providers/scenetime.py index 25c3fbfad25c072861692e26cd015152331cf7cb..1d5113835efb5d2462aed9d316dfc8d1500bae12 100644 --- a/sickbeard/providers/scenetime.py +++ b/sickbeard/providers/scenetime.py @@ -23,6 +23,7 @@ import urllib 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 from sickrage.helper.common import try_int @@ -118,7 +119,9 @@ class SceneTimeProvider(TorrentProvider): seeders = try_int(cells[labels.index('Seeders')].get_text(strip=True)) leechers = try_int(cells[labels.index('Leechers')].get_text(strip=True)) - size = self._convertSize(cells[labels.index('Size')].get_text(strip=True)) + torrent_size = cells[labels.index('Size')].get_text() + + size = convert_size(torrent_size) or -1 except (AttributeError, TypeError, KeyError, ValueError): continue @@ -148,26 +151,6 @@ class SceneTimeProvider(TorrentProvider): def seed_ratio(self): return self.ratio - @staticmethod - def _convertSize(size): - modifier = size[-2:].upper() - size = size[:-2].strip() - try: - size = float(size) - if modifier in 'KB': - size *= 1024 ** 1 - elif modifier in 'MB': - size *= 1024 ** 2 - elif modifier in 'GB': - size *= 1024 ** 3 - elif modifier in 'TB': - size *= 1024 ** 4 - else: - raise - except Exception: - size = -1 - - return long(size) class SceneTimeCache(tvcache.TVCache): def __init__(self, provider_obj): diff --git a/sickbeard/providers/speedcd.py b/sickbeard/providers/speedcd.py index 3d1fb437b4be62a8f0f3f2e0681a7fb0cfe6eec2..749fb07fb978d95210454919f3c7dd0010a37bdb 100644 --- a/sickbeard/providers/speedcd.py +++ b/sickbeard/providers/speedcd.py @@ -21,6 +21,7 @@ import re from sickbeard import logger from sickbeard import tvcache +from sickrage.helper.common import convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -105,7 +106,9 @@ class SpeedCDProvider(TorrentProvider): download_url = self.urls['download'] % (torrent['id']) seeders = int(torrent['seed']) leechers = int(torrent['leech']) - size = self._convertSize(torrent['size']) + torrent_size = torrent['size'] + + size = convert_size(torrent_size) or -1 if not all([title, download_url]): continue @@ -132,27 +135,6 @@ class SpeedCDProvider(TorrentProvider): def seed_ratio(self): return self.ratio - @staticmethod - def _convertSize(size): - modifier = size[-2:].upper() - size = size[:-2].strip() - try: - size = float(size) - if modifier in 'KB': - size *= 1024 ** 1 - elif modifier in 'MB': - size *= 1024 ** 2 - elif modifier in 'GB': - size *= 1024 ** 3 - elif modifier in 'TB': - size *= 1024 ** 4 - else: - raise - except Exception: - size = -1 - - return long(size) - class SpeedCDCache(tvcache.TVCache): def __init__(self, provider_obj): diff --git a/sickbeard/providers/strike.py b/sickbeard/providers/strike.py index d48b0f9ea96ea9ff15ceaeab364d700c23d146db..af3c34b24772916e76fc839162f9981a2fd3b897 100644 --- a/sickbeard/providers/strike.py +++ b/sickbeard/providers/strike.py @@ -19,6 +19,7 @@ from sickbeard import logger from sickbeard import tvcache +from sickrage.helper.common import convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -58,7 +59,8 @@ class STRIKEProvider(TorrentProvider): seeders = ('seeds' in item and item['seeds']) or 0 leechers = ('leeches' in item and item['leeches']) or 0 title = ('torrent_title' in item and item['torrent_title']) or '' - size = ('size' in item and item['size']) or 0 + torrent_size = ('size' in item and item['size']) + size = convert_size(torrent_size) or -1 download_url = ('magnet_uri' in item and item['magnet_uri']) or '' if not all([title, download_url]): diff --git a/sickbeard/providers/t411.py b/sickbeard/providers/t411.py index 9ef558461bbd259749e1500bffd3ecb908d0d6ea..ccdc22920367fef51060946f37e7b082683c3c07 100644 --- a/sickbeard/providers/t411.py +++ b/sickbeard/providers/t411.py @@ -24,6 +24,7 @@ from requests.auth import AuthBase from sickbeard import logger from sickbeard import tvcache from sickbeard.common import USER_AGENT +from sickrage.helper.common import convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -123,10 +124,11 @@ class T411Provider(TorrentProvider): if not all([title, download_url]): continue - size = int(torrent['size']) seeders = int(torrent['seeders']) leechers = int(torrent['leechers']) verified = bool(torrent['isVerified']) + torrent_size = torrent['size'] + size = convert_size(torrent_size) or -1 # Filter unseeded torrent if seeders < self.minseed or leechers < self.minleech: diff --git a/sickbeard/providers/thepiratebay.py b/sickbeard/providers/thepiratebay.py index c2211a622fb7dda3159f6a1ecf03fa259ed9d7b4..c795e2dbaf5b51a9efb4444e81feacb73c6594a5 100644 --- a/sickbeard/providers/thepiratebay.py +++ b/sickbeard/providers/thepiratebay.py @@ -23,6 +23,7 @@ from urllib import urlencode from sickbeard import logger from sickbeard import tvcache from sickbeard.common import USER_AGENT +from sickrage.helper.common import convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -94,9 +95,12 @@ class ThePirateBayProvider(TorrentProvider): title = torrent.group('title') download_url = torrent.group('url') # id = int(torrent.group('id')) - size = self._convertSize(torrent.group('size')) + seeders = int(torrent.group('seeders')) leechers = int(torrent.group('leechers')) + torrent_size = torrent.group('size') + + size = convert_size(torrent_size) or -1 if not all([title, download_url]): continue @@ -126,19 +130,6 @@ class ThePirateBayProvider(TorrentProvider): return results - def _convertSize(self, size): - size, modifier = size.split(' ') - size = float(size) - if modifier in 'KiB': - size *= 1024 ** 1 - elif modifier in 'MiB': - size *= 1024 ** 2 - elif modifier in 'GiB': - size *= 1024 ** 3 - elif modifier in 'TiB': - size *= 1024 ** 4 - return long(size) - def seed_ratio(self): return self.ratio diff --git a/sickbeard/providers/torrentbytes.py b/sickbeard/providers/torrentbytes.py index e22c5eb300f10783ee3bbd232426596813a0e9b9..4a799d2bedc791f27c92afa0d58714780de72f5d 100644 --- a/sickbeard/providers/torrentbytes.py +++ b/sickbeard/providers/torrentbytes.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 @@ -106,7 +107,7 @@ class TorrentBytesProvider(TorrentProvider): for result in torrent_rows[1:]: cells = result.find_all('td') - size = None + torrent_size = None link = cells[1].find('a', attrs={'class': 'index'}) full_id = link['href'].replace('details.php?id=', '') @@ -132,11 +133,7 @@ class TorrentBytesProvider(TorrentProvider): leechers = int(cells[9].find('span').contents[0]) # Need size for failed downloads handling - if size is None: - if re.match(r'[0-9]+,?\.?[0-9]*[KkMmGg]+[Bb]+', cells[6].text): - size = self._convertSize(cells[6].text) - if not size: - size = -1 + torrent_size = cells[6].text if torrent_size is None else torrent_size except (AttributeError, TypeError): continue @@ -150,6 +147,8 @@ class TorrentBytesProvider(TorrentProvider): 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 + 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) @@ -169,20 +168,6 @@ class TorrentBytesProvider(TorrentProvider): def seed_ratio(self): return self.ratio - def _convertSize(self, sizeString): - size = sizeString[:-2] - modifier = sizeString[-2:] - size = float(size) - if modifier in 'KB': - size *= 1024 ** 1 - elif modifier in 'MB': - size *= 1024 ** 2 - elif modifier in 'GB': - size *= 1024 ** 3 - elif modifier in 'TB': - size *= 1024 ** 4 - return long(size) - class TorrentBytesCache(tvcache.TVCache): def __init__(self, provider_obj): diff --git a/sickbeard/providers/torrentleech.py b/sickbeard/providers/torrentleech.py index b4596a75d53ccd3a25cefd27239e6d704b33a136..b2210ba88520d77165da91006691960cc90c6947 100644 --- a/sickbeard/providers/torrentleech.py +++ b/sickbeard/providers/torrentleech.py @@ -23,10 +23,9 @@ import urllib from sickbeard import logger from sickbeard import tvcache from sickbeard.bs4_parser import BS4Parser +from sickrage.helper.common import try_int, convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider -from sickrage.helper.common import try_int - class TorrentLeechProvider(TorrentProvider): @@ -116,7 +115,9 @@ class TorrentLeechProvider(TorrentProvider): seeders = try_int(result.find('td', class_='seeders').get_text(strip=True)) leechers = try_int(result.find('td', class_='leechers').get_text(strip=True)) - size = self._convertSize(result.find_all('td')[labels.index('Size')].get_text(strip=True)) + torrent_size = result.find_all('td')[labels.index('Size')].get_text() + + size = convert_size(torrent_size) or -1 except (AttributeError, TypeError, KeyError, ValueError): continue @@ -145,26 +146,6 @@ class TorrentLeechProvider(TorrentProvider): def seed_ratio(self): return self.ratio - @staticmethod - def _convertSize(size): - modifier = size[-2:].upper() - size = size[:-2].strip() - try: - size = float(size) - if modifier in 'KB': - size = size * 1024 ** 1 - elif modifier in 'MB': - size = size * 1024 ** 2 - elif modifier in 'GB': - size = size * 1024 ** 3 - elif modifier in 'TB': - size = size * 1024**4 - else: - raise - except Exception: - size = -1 - - return long(size) class TorrentLeechCache(tvcache.TVCache): def __init__(self, provider_obj): diff --git a/sickbeard/providers/torrentproject.py b/sickbeard/providers/torrentproject.py index eedb52d6d7a23ef456417ed65d54aeba1d9f2488..82402022766a2bd89f5441b8cd8c07093b212ab7 100644 --- a/sickbeard/providers/torrentproject.py +++ b/sickbeard/providers/torrentproject.py @@ -22,7 +22,7 @@ from urllib import quote_plus from sickbeard import logger from sickbeard import tvcache from sickbeard.common import USER_AGENT -from sickrage.helper.common import try_int +from sickrage.helper.common import try_int, convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -74,7 +74,8 @@ class TORRENTPROJECTProvider(TorrentProvider): continue t_hash = torrents[i]["torrent_hash"] - size = int(torrents[i]["torrent_size"]) + torrent_size = torrents[i]["torrent_size"] + size = convert_size(torrent_size) or -1 try: assert seeders < 10 diff --git a/sickbeard/providers/torrentz.py b/sickbeard/providers/torrentz.py index 3916ccdc0a4ddc8febdb45df5b5f78c8caca946f..40fdd7c0d50db6615d42d127b98dffb0380e6dbd 100644 --- a/sickbeard/providers/torrentz.py +++ b/sickbeard/providers/torrentz.py @@ -24,6 +24,7 @@ from sickbeard import logger from sickbeard import tvcache from sickbeard.common import USER_AGENT from sickbeard.bs4_parser import BS4Parser +from sickrage.helper.common import convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -85,7 +86,8 @@ class TORRENTZProvider(TorrentProvider): # TODO: Add method to generic provider for building magnet from hash. download_url = "magnet:?xt=urn:btih:" + t_hash + "&dn=" + title + self._custom_trackers - size, seeders, leechers = self._split_description(item.find('description').text) + torrent_size, seeders, leechers = self._split_description(item.find('description').text) + size = convert_size(torrent_size) or -1 # Filter unseeded torrent if seeders < self.minseed or leechers < self.minleech: diff --git a/sickbeard/providers/transmitthenet.py b/sickbeard/providers/transmitthenet.py index 928ed49db5e625cce5b71c4c50fa9153efa8d49a..174a0ee48fd02366012e97614ce2080a2a38994a 100644 --- a/sickbeard/providers/transmitthenet.py +++ b/sickbeard/providers/transmitthenet.py @@ -22,7 +22,7 @@ from sickbeard import logger from sickbeard import tvcache from sickbeard.bs4_parser import BS4Parser from sickrage.helper.exceptions import AuthException -from sickrage.helper.common import try_int +from sickrage.helper.common import try_int, convert_size from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -136,7 +136,9 @@ class TransmitTheNetProvider(TorrentProvider): if not title: title = torrent_row.find('a', onmouseout='return nd();').string title = title.replace("[", "").replace("]", "").replace("/ ", "") - size = try_int(temp_anchor['data-filesize']) + + torrent_size = temp_anchor['data-filesize'] + size = convert_size(torrent_size) or -1 temp_anchor = torrent_row.find('span', class_='time').parent.find_next_sibling() seeders = try_int(temp_anchor.text.strip()) diff --git a/sickbeard/providers/tvchaosuk.py b/sickbeard/providers/tvchaosuk.py index 874f4761a1df8bef587e1a31602c71053968d306..3dd680b592e5d3b007135a214837c88fd990ca58 100644 --- a/sickbeard/providers/tvchaosuk.py +++ b/sickbeard/providers/tvchaosuk.py @@ -23,6 +23,7 @@ from sickbeard import tvcache from sickbeard import show_name_helpers from sickbeard.helpers import sanitizeSceneName from sickbeard.bs4_parser import BS4Parser +from sickrage.helper.common import convert_size from sickrage.helper.exceptions import AuthException from sickrage.providers.torrent.TorrentProvider import TorrentProvider @@ -180,10 +181,8 @@ class TVChaosUKProvider(TorrentProvider): # Strip year from the end or we can't parse it! title = re.sub(r'[\. ]?\(\d{4}\)', '', title) - torrent_size = cells[4].getText().strip() - size = -1 - if re.match(r"\d+([,\.]\d+)?\s*[KkMmGgTt]?[Bb]", torrent_size): - size = self._convertSize(torrent_size.rstrip()) + torrent_size = cells[4].getText() + 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) @@ -203,23 +202,6 @@ class TVChaosUKProvider(TorrentProvider): def seed_ratio(self): return self.ratio - def _convertSize(self, sizeString): - size = sizeString[:-2].strip() - modifier = sizeString[-2:].upper() - try: - size = float(size) - if modifier in 'KB': - size *= 1024 ** 1 - elif modifier in 'MB': - size *= 1024 ** 2 - elif modifier in 'GB': - size *= 1024 ** 3 - elif modifier in 'TB': - size *= 1024 ** 4 - except Exception: - size = -1 - return long(size) - class TVChaosUKCache(tvcache.TVCache): def __init__(self, provider_obj):