From a25eac6c4e2d934af038742bf63dc03ac0f3931c Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 18 Aug 2013 11:47:07 +0200 Subject: [PATCH] Make SceneAccess multiprovider --- .../core/providers/torrent/sceneaccess/main.py | 56 +++++++++++++++------- 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/couchpotato/core/providers/torrent/sceneaccess/main.py b/couchpotato/core/providers/torrent/sceneaccess/main.py index b2d3dd6..166ded0 100644 --- a/couchpotato/core/providers/torrent/sceneaccess/main.py +++ b/couchpotato/core/providers/torrent/sceneaccess/main.py @@ -2,13 +2,21 @@ from bs4 import BeautifulSoup from couchpotato.core.helpers.encoding import tryUrlencode, toUnicode from couchpotato.core.helpers.variable import tryInt from couchpotato.core.logger import CPLog +from couchpotato.core.providers.base import MultiProvider +from couchpotato.core.providers.movie.base import MovieProvider from couchpotato.core.providers.torrent.base import TorrentProvider import traceback log = CPLog(__name__) -class SceneAccess(TorrentProvider): +class SceneAccess(MultiProvider): + + def getTypes(self): + return [Movie] + + +class Base(TorrentProvider): urls = { 'test': 'https://www.sceneaccess.eu/', @@ -19,28 +27,26 @@ class SceneAccess(TorrentProvider): 'download': 'https://www.sceneaccess.eu/%s', } - cat_ids = [ - ([22], ['720p', '1080p']), - ([7], ['cam', 'ts', 'dvdrip', 'tc', 'r5', 'scr', 'brrip']), - ([8], ['dvdr']), - ] - http_time_between_calls = 1 #seconds - def _search(self, movie, quality, results): + def _buildUrl(self, search, quality_identifier): url = self.urls['search'] % ( - self.getCatId(quality['identifier'])[0], - self.getCatId(quality['identifier'])[0] + self.getCatId(quality_identifier)[0], + self.getCatId(quality_identifier)[0] ) arguments = tryUrlencode({ - 'search': movie['library']['identifier'], + 'search': search, 'method': 1, }) url = "%s&%s" % (url, arguments) + return url + def _search(self, media, quality, results): + + url = self.buildUrl(media, quality) data = self.getHTMLData(url, opener = self.login_opener) if data: @@ -73,13 +79,6 @@ class SceneAccess(TorrentProvider): except: log.error('Failed getting results from %s: %s', (self.getName(), traceback.format_exc())) - def getLoginParams(self): - return tryUrlencode({ - 'username': self.conf('username'), - 'password': self.conf('password'), - 'submit': 'come on in', - }) - def getMoreInfo(self, item): full_description = self.getCache('sceneaccess.%s' % item['id'], item['detail_url'], cache_timeout = 25920000) html = BeautifulSoup(full_description) @@ -89,7 +88,28 @@ class SceneAccess(TorrentProvider): item['description'] = description return item + # Login + def getLoginParams(self): + return tryUrlencode({ + 'username': self.conf('username'), + 'password': self.conf('password'), + 'submit': 'come on in', + }) + def loginSuccess(self, output): return '/inbox' in output.lower() loginCheckSuccess = loginSuccess + + +class Movie(Base, MovieProvider): + + cat_ids = [ + ([22], ['720p', '1080p']), + ([7], ['cam', 'ts', 'dvdrip', 'tc', 'r5', 'scr', 'brrip']), + ([8], ['dvdr']), + ] + + def buildUrl(self, media, quality): + return self._buildUrl(media['library']['identifier'], quality['identifier']) +