diff --git a/couchpotato/core/providers/torrent/hdbits/__init__.py b/couchpotato/core/providers/torrent/hdbits/__init__.py index f0873798..1e9aa3ce 100644 --- a/couchpotato/core/providers/torrent/hdbits/__init__.py +++ b/couchpotato/core/providers/torrent/hdbits/__init__.py @@ -22,11 +22,6 @@ config = [{ 'name': 'username', 'default': '', }, - { - 'name': 'password', - 'default': '', - 'type': 'password', - }, { 'name': 'passkey', 'default': '', diff --git a/couchpotato/core/providers/torrent/hdbits/main.py b/couchpotato/core/providers/torrent/hdbits/main.py index 1ecc97e4..ce17bbac 100644 --- a/couchpotato/core/providers/torrent/hdbits/main.py +++ b/couchpotato/core/providers/torrent/hdbits/main.py @@ -1,7 +1,9 @@ -from bs4 import BeautifulSoup from couchpotato.core.helpers.variable import tryInt from couchpotato.core.logger import CPLog from couchpotato.core.providers.torrent.base import TorrentProvider + +import re +import json import traceback log = CPLog(__name__) @@ -11,49 +13,51 @@ class HDBits(TorrentProvider): urls = { 'test': 'https://hdbits.org/', - 'login': 'https://hdbits.org/login/doLogin/', - 'detail': 'https://hdbits.org/details.php?id=%s&source=browse', - 'search': 'https://hdbits.org/json_search.php?imdb=%s', - 'download': 'https://hdbits.org/download.php/%s.torrent?id=%s&passkey=%s&source=details.browse', - 'login_check': 'http://hdbits.org/inbox.php', + 'detail': 'https://hdbits.org/details.php?id=%s', + 'download': 'https://hdbits.org/download.php?id=%s&passkey=%s', + 'api': 'https://hdbits.org/api/torrents' } http_time_between_calls = 1 #seconds + def _post_query(self, **params): + + post_data = { + 'username': self.conf('username'), + 'passkey': self.conf('passkey') + } + post_data.update(params) + + try: + result = self.getJsonData(self.urls['api'], data = json.dumps(post_data)) + + if result: + if result['status'] != 0: + log.error('Error searching hdbits: %s' % result['message']) + else: + return result['data'] + except: + pass + + return None + def _search(self, movie, quality, results): - data = self.getJsonData(self.urls['search'] % movie['library']['identifier']) + match = re.match(r'tt(\d{7})', movie['library']['identifier']) + + data = self._post_query(imdb = {'id': match.group(1)}) if data: try: for result in data: results.append({ 'id': result['id'], - 'name': result['title'], - 'url': self.urls['download'] % (result['id'], result['id'], self.conf('passkey')), + 'name': result['name'], + 'url': self.urls['download'] % (result['id'], self.conf('passkey')), 'detail_url': self.urls['detail'] % result['id'], 'size': self.parseSize(result['size']), - 'seeders': tryInt(result['seeder']), - 'leechers': tryInt(result['leecher']) + 'seeders': tryInt(result['seeders']), + 'leechers': tryInt(result['leechers']) }) - except: log.error('Failed getting results from %s: %s', (self.getName(), traceback.format_exc())) - - def getLoginParams(self): - data = self.getHTMLData('https://hdbits.org/login', cache_timeout = 0) - - bs = BeautifulSoup(data) - secret = bs.find('input', attrs = {'name': 'lol'})['value'] - - return { - 'uname': self.conf('username'), - 'password': self.conf('password'), - 'returnto': '/', - 'lol': secret - } - - def loginSuccess(self, output): - return '/logout.php' in output.lower() - - loginCheckSuccess = loginSuccess