From d8eabf635a6a81c32cd231e4e37e4a6631f1587d Mon Sep 17 00:00:00 2001 From: Janez Troha Date: Mon, 2 Jul 2012 13:30:35 +0200 Subject: [PATCH] Magnet type for TPB and transmssion support --- .../core/downloaders/transmission/main.py | 1 - .../providers/torrent/thepiratebay/main.py | 44 +++++++++++-------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/couchpotato/core/downloaders/transmission/main.py b/couchpotato/core/downloaders/transmission/main.py index f8cac7b2..3ac8c21d 100644 --- a/couchpotato/core/downloaders/transmission/main.py +++ b/couchpotato/core/downloaders/transmission/main.py @@ -167,7 +167,6 @@ class Transmission(Downloader): remote_torrent = tc.add_torrent_file(b64encode(filedata), arguments=params) # Change settings of added torrents - print remote_torrent tc.set_torrent(remote_torrent['torrent-added']['hashString' ], torrent_params) return True diff --git a/couchpotato/core/providers/torrent/thepiratebay/main.py b/couchpotato/core/providers/torrent/thepiratebay/main.py index 626e1210..885b4c60 100644 --- a/couchpotato/core/providers/torrent/thepiratebay/main.py +++ b/couchpotato/core/providers/torrent/thepiratebay/main.py @@ -14,8 +14,6 @@ log = CPLog(__name__) class ThePirateBay(TorrentProvider): - urls = {'detail': '%s/torrent/%s', 'search': '%s/search/%s/0/7/%d'} - cat_ids = [([207], ['720p', '1080p']), ([201], [ 'cam', 'ts', @@ -25,10 +23,15 @@ class ThePirateBay(TorrentProvider): 'scr', 'brrip', ]), ([202], ['dvdr'])] + cat_backup_id = 200 - def getAPIurl(self): - return ("http://thepiratebay.se", self.conf('domain_for_tpb'))[self.conf('domain_for_tpb') != None] + def __init__(self): + super(ThePirateBay, self).__init__() + self.urls = {"test": self.getAPIurl(), 'detail': '%s/torrent/%s', 'search': '%s/search/%s/0/7/%d'} + + def getAPIurl(self, url=""): + return (("http://thepiratebay.se", self.conf('domain_for_tpb'))[self.conf('domain_for_tpb') != None]) + url def search(self, movie, quality): @@ -38,8 +41,10 @@ class ThePirateBay(TorrentProvider): movie_name = re.sub("\W", ' ', getTitle(movie['library'])) movie_name = re.sub(' ', ' ', movie_name) + log.info('API url: %s', self.getAPIurl()) log.info('Cleaned Name: %s', movie_name) + cache_key = 'thepiratebay.%s.%s' % (movie['library' ]['identifier'], quality.get('identifier')) searchUrl = self.urls['search'] % (self.getAPIurl(), @@ -64,19 +69,20 @@ class ThePirateBay(TorrentProvider): size = re.search('Size (?P.+),', unicode(result.select("font.detDesc")[0])).group("size") if link and download: new = { - 'type': 'torrent', + 'type': 'magnet', 'check_nzb': False, 'description': '', 'provider': self.getName(), } + trusted = (0, 10)[result.find('img', alt=re.compile('Trusted')) != None] vip = (0, 20)[result.find('img', alt=re.compile('VIP')) != None] moderated = (0, 50)[result.find('img', alt=re.compile('Moderator')) != None] - log.info('Name: %s', link.string) + log.info('Name: %s', link.string) log.info('Seeders: %s', result.findAll('td' )[2].string) log.info('Leechers: %s', result.findAll('td' @@ -88,24 +94,26 @@ class ThePirateBay(TorrentProvider): new['name'] = link.string new['id'] = re.search('/(?P\d+)/', link['href' ]).group('id') - new['url'] = link['href'] - new['download'] = self.getAPIurl() + download['href'] + new['url'] = self.getAPIurl(link['href']) + new['magnet'] = unicode(download['href']) # forcing of storing full magnet data new['size'] = self.parseSize(size) new['seeders'] = int(result.findAll('td')[2].string) new['leechers'] = int(result.findAll('td' )[3].string) - new['imdbid'] = movie['library']['identifier'] - new['prtbscore'] = trusted + vip + moderated + new['TPB_score'] = trusted + vip + moderated new['extra_score'] = self.extra_score new['score'] = fireEvent('score.calculate', new, movie, single=True) + + isImdb = self.imdbMatch(self.getAPIurl(link['href']), movie['library']['identifier']) + is_correct_movie = fireEvent( 'searcher.correct_movie', nzb=new, movie=movie, quality=quality, - imdb_results=True, + imdb_results=isImdb, single_category=False, single=True, ) @@ -122,10 +130,7 @@ class ThePirateBay(TorrentProvider): return results def extra_score(self, torrent): - url = self.getAPIurl() + torrent['url'] - log.info('extra_score: %s', url) - imdbId = torrent['imdbid'] - return self.imdbMatch(url, imdbId) + torrent['prtbscore'] + return torrent["TPB_score"] def imdbMatch(self, url, imdbId): log.info('imdbMatch: %s', url) @@ -134,10 +139,13 @@ class ThePirateBay(TorrentProvider): pass except: log.error('Failed to open %s.' % url) - return 0 + return False imdbIdAlt = re.sub('tt[0]*', 'tt', imdbId) data = unicode(data, errors='ignore') if 'imdb.com/title/' + imdbId in data or 'imdb.com/title/' \ + imdbIdAlt in data: - return 50 - return 0 + return True + return False + + def download(self, url='', nzb_id=''): + return url