From c832a9e2b23211c7a1c513df722c67b8520f2410 Mon Sep 17 00:00:00 2001 From: Jamie Date: Thu, 14 Nov 2013 14:50:50 +0000 Subject: [PATCH 1/3] Added proxy support --- .../providers/torrent/kickasstorrents/main.py | 65 ++++++++++++++++--- 1 file changed, 56 insertions(+), 9 deletions(-) diff --git a/couchpotato/core/providers/torrent/kickasstorrents/main.py b/couchpotato/core/providers/torrent/kickasstorrents/main.py index b85aadc7..1455404d 100644 --- a/couchpotato/core/providers/torrent/kickasstorrents/main.py +++ b/couchpotato/core/providers/torrent/kickasstorrents/main.py @@ -1,8 +1,11 @@ from bs4 import BeautifulSoup -from couchpotato.core.helpers.variable import tryInt +from couchpotato.core.helpers.encoding import toUnicode, tryUrlencode +from couchpotato.core.helpers.variable import tryInt, cleanHost from couchpotato.core.logger import CPLog from couchpotato.core.providers.torrent.base import TorrentMagnetProvider +from couchpotato.environment import Env import re +import time import traceback log = CPLog(__name__) @@ -11,9 +14,8 @@ log = CPLog(__name__) class KickAssTorrents(TorrentMagnetProvider): urls = { - 'test': 'https://kickass.to/', - 'detail': 'https://kickass.to/%s', - 'search': 'https://kickass.to/%s-i%s/', + 'detail': '%s/%s', + 'search': '%s/%s-i%s/', } cat_ids = [ @@ -28,10 +30,22 @@ class KickAssTorrents(TorrentMagnetProvider): http_time_between_calls = 1 #seconds cat_backup_id = None + proxy_list = [ + 'https://kickass.to', + 'http://kickasstorrents.come.in', + 'http://kickass.pw', + 'http://www.kickassunblock.info', + 'http://www.kickassproxy.info', + ] + + def __init__(self): + self.domain = self.conf('domain') + super(KickAssTorrents, self).__init__() + def _search(self, movie, quality, results): - data = self.getHTMLData(self.urls['search'] % ('m', movie['library']['identifier'].replace('tt', ''))) - + data = self.getHTMLData(self.urls['search'] % (self.getDomain(), 'm', movie['library']['identifier'].replace('tt', ''))) + if data: cat_ids = self.getCatId(quality['identifier']) @@ -41,7 +55,7 @@ class KickAssTorrents(TorrentMagnetProvider): html = BeautifulSoup(data) resultdiv = html.find('div', attrs = {'class':'tabs'}) for result in resultdiv.find_all('div', recursive = False): - if result.get('id').lower() not in cat_ids: + if result.get('id').lower().strip('tab-') not in cat_ids: continue try: @@ -56,12 +70,12 @@ class KickAssTorrents(TorrentMagnetProvider): column_name = table_order[nr] if column_name: - if column_name is 'name': + if column_name == 'name': link = td.find('div', {'class': 'torrentname'}).find_all('a')[1] new['id'] = temp.get('id')[-8:] new['name'] = link.text new['url'] = td.find('a', 'imagnet')['href'] - new['detail_url'] = self.urls['detail'] % link['href'][1:] + new['detail_url'] = self.urls['detail'] % (self.getDomain(), link['href'][1:]) new['score'] = 20 if td.find('a', 'iverif') else 0 elif column_name is 'size': new['size'] = self.parseSize(td.text) @@ -100,3 +114,36 @@ class KickAssTorrents(TorrentMagnetProvider): age += tryInt(nr) * mult return tryInt(age) + + + def isEnabled(self): + return super(KickAssTorrents, self).isEnabled() and self.getDomain() + + def getDomain(self, url = ''): + + if not self.domain: + for proxy in self.proxy_list: + + prop_name = 'kat_proxy.%s' % proxy + last_check = float(Env.prop(prop_name, default = 0)) + if last_check > time.time() - 1209600: + continue + + data = '' + try: + data = self.urlopen(proxy, timeout = 3, show_error = False) + except: + log.debug('Failed kat proxy %s', proxy) + + if 'placeholder="Search query"' in data: + log.debug('Using proxy: %s', proxy) + self.domain = proxy + break + + Env.prop(prop_name, time.time()) + + if not self.domain: + log.error('No kat proxies left, please add one in settings, or let us know which one to add on the forum.') + return None + + return cleanHost(self.domain).rstrip('/') + url From f6281c6dcc97b0388c59c35850dd211b93a0f3c2 Mon Sep 17 00:00:00 2001 From: Jamie Date: Thu, 14 Nov 2013 14:51:27 +0000 Subject: [PATCH 2/3] Update __init__.py --- .../core/providers/torrent/kickasstorrents/__init__.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/couchpotato/core/providers/torrent/kickasstorrents/__init__.py b/couchpotato/core/providers/torrent/kickasstorrents/__init__.py index b095a97d..0b79c81a 100644 --- a/couchpotato/core/providers/torrent/kickasstorrents/__init__.py +++ b/couchpotato/core/providers/torrent/kickasstorrents/__init__.py @@ -18,6 +18,12 @@ config = [{ 'type': 'enabler', 'default': True, }, + { + 'name': 'domain', + 'advanced': True, + 'label': 'Proxy server', + 'description': 'Domain for requests, keep empty to let CouchPotato pick.', + }, { 'name': 'seed_ratio', 'label': 'Seed ratio', From 5a8f28764d34947ffa11e9574de90ad5c935f0dd Mon Sep 17 00:00:00 2001 From: Jamie Date: Sat, 16 Nov 2013 02:30:31 +0000 Subject: [PATCH 3/3] Fix to help find working proxy --- couchpotato/core/providers/torrent/kickasstorrents/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/couchpotato/core/providers/torrent/kickasstorrents/main.py b/couchpotato/core/providers/torrent/kickasstorrents/main.py index 1455404d..0f27f6ac 100644 --- a/couchpotato/core/providers/torrent/kickasstorrents/main.py +++ b/couchpotato/core/providers/torrent/kickasstorrents/main.py @@ -135,7 +135,7 @@ class KickAssTorrents(TorrentMagnetProvider): except: log.debug('Failed kat proxy %s', proxy) - if 'placeholder="Search query"' in data: + if 'search query' in data.lower(): log.debug('Using proxy: %s', proxy) self.domain = proxy break