From df0b35be0bc0e2b13be8c6787bbce03082f0e08e Mon Sep 17 00:00:00 2001 From: zoidberg10 Date: Thu, 27 Sep 2012 20:28:32 +0200 Subject: add filebeer.info/fastshare.cz/quickshare.cz premium, closed #688 --- module/plugins/hoster/QuickshareCz.py | 95 +++++++++++++++++++++++------------ 1 file changed, 63 insertions(+), 32 deletions(-) (limited to 'module/plugins/hoster/QuickshareCz.py') diff --git a/module/plugins/hoster/QuickshareCz.py b/module/plugins/hoster/QuickshareCz.py index ef33d3263..4ea485672 100644 --- a/module/plugins/hoster/QuickshareCz.py +++ b/module/plugins/hoster/QuickshareCz.py @@ -18,51 +18,82 @@ import re from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo +from pycurl import FOLLOWLOCATION class QuickshareCz(SimpleHoster): __name__ = "QuickshareCz" __type__ = "hoster" __pattern__ = r"http://.*quickshare.cz/stahnout-soubor/.*" - __version__ = "0.52" + __version__ = "0.53" __description__ = """Quickshare.cz""" __author_name__ = ("zoidberg") - VAR_PATTERN = r"var ID1 = '(?P[^']+)';var ID2 = '(?P[^']+)';var ID3 = '(?P[^']+)';var ID4 = '(?P[^']+)';var ID5 = '[^']*';var UU_prihlasen = '[^']*';var UU_kredit = [^;]*;var velikost = [^;]*;var kredit_odecet = [^;]*;var CaptchaText = '(?P[^']+)';var server = '(?P[^']+)';" - FILE_OFFLINE_PATTERN = r'' FILE_NAME_PATTERN = r'Název:\s*(?P[^<]+)' FILE_SIZE_PATTERN = r'Velikost:\s*(?P[0-9.]+) (?P[kKMG])i?B' - - def setup(self): - self.multiDL = False + FILE_OFFLINE_PATTERN = r'' def process(self, pyfile): - self.html = self.load(pyfile.url, decode=True) + self.html = self.load(pyfile.url, decode = True) self.getFileInfo() - - # parse the name from the site and set attribute in pyfile - parsed_vars = re.search(self.VAR_PATTERN, self.html) - if parsed_vars is None: self.parseError("VARs") - pyfile.name = parsed_vars.group('ID3') - - # download the file, destination is determined by pyLoad - download_url = parsed_vars.group('Server') + "/download.php" - self.log.debug("File:" + pyfile.name) - self.log.debug("URL:" + download_url) - - self.download(download_url, post={ - "ID1": parsed_vars.group('ID1'), - "ID2": parsed_vars.group('ID2'), - "ID3": parsed_vars.group('ID3'), - "ID4": parsed_vars.group('ID4') - }) - - # check download - check = self.checkDownload({ - "no_slots": "obsazen na 100 %" - }) + # parse js variables + self.jsvars = dict((x, y.strip("'")) for x,y in re.findall(r"var (\w+) = ([0-9.]+|'[^']*')", self.html)) + self.logDebug(self.jsvars) + pyfile.name = self.jsvars['ID3'] + + # determine download type - free or premium + if self.premium: + if 'UU_prihlasen' in self.jsvars: + if self.jsvars['UU_prihlasen'] == '0': + self.logWarning('User not logged in') + self.relogin(user) + self.retry() + elif float(self.jsvars['UU_kredit']) < float(self.jsvars['kredit_odecet']): + self.logWarning('Not enough credit left') + self.premium = False + + if self.premium: + self.handlePremium() + else: + self.handleFree() + + check = self.checkDownload({"err": re.compile(r"\AChyba!")}, max_size=100) + if check == "err": + self.fail("File not found or plugin defect") + + def handleFree(self): + # get download url + download_url = '%s/download.php' % self.jsvars['server'] + data = dict((x, self.jsvars[x]) for x in self.jsvars if x in ('ID1', 'ID2', 'ID3', 'ID4')) + self.logDebug("FREE URL1:" + download_url, data) + + self.req.http.c.setopt(FOLLOWLOCATION, 0) + self.load(download_url, post=data) + self.header = self.req.http.header + self.req.http.c.setopt(FOLLOWLOCATION, 1) + + found = re.search("Location\s*:\s*(.*)", self.header, re.I) + if not found: self.fail('File not found') + download_url = found.group(1) + self.logDebug("FREE URL2:" + download_url) + + # check errors + found = re.search(r'/chyba/(\d+)', download_url) + if found: + if found.group(1) == '1': + self.retry(max_tries=60, wait_time=120, reason="This IP is already downloading") + elif found.group(1) == '2': + self.retry(max_tries=60, wait_time=60, reason="No free slots available") + else: + self.fail('Error %d' % found.group(1)) - if check == "no_slots": - self.retry(5, 600, "No free slots") + # download file + self.download(download_url) + + def handlePremium(self): + download_url = '%s/download_premium.php' % self.jsvars['server'] + data = dict((x, self.jsvars[x]) for x in self.jsvars if x in ('ID1', 'ID2', 'ID4', 'ID5')) + self.logDebug("PREMIUM URL:" + download_url, data) + self.download(download_url, get=data) -create_getInfo(QuickshareCz) \ No newline at end of file +getInfo = create_getInfo(QuickshareCz) \ No newline at end of file -- cgit v1.2.3 From 8368a9a74d998b314f3864dcc8ce25c513d85cf9 Mon Sep 17 00:00:00 2001 From: Stefano Date: Thu, 7 Mar 2013 16:41:25 +0100 Subject: Various fixes in 24 plugins --- module/plugins/hoster/QuickshareCz.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'module/plugins/hoster/QuickshareCz.py') diff --git a/module/plugins/hoster/QuickshareCz.py b/module/plugins/hoster/QuickshareCz.py index 4ea485672..4932c4702 100644 --- a/module/plugins/hoster/QuickshareCz.py +++ b/module/plugins/hoster/QuickshareCz.py @@ -24,7 +24,7 @@ class QuickshareCz(SimpleHoster): __name__ = "QuickshareCz" __type__ = "hoster" __pattern__ = r"http://.*quickshare.cz/stahnout-soubor/.*" - __version__ = "0.53" + __version__ = "0.54" __description__ = """Quickshare.cz""" __author_name__ = ("zoidberg") @@ -46,7 +46,7 @@ class QuickshareCz(SimpleHoster): if 'UU_prihlasen' in self.jsvars: if self.jsvars['UU_prihlasen'] == '0': self.logWarning('User not logged in') - self.relogin(user) + self.relogin(self.user) self.retry() elif float(self.jsvars['UU_kredit']) < float(self.jsvars['kredit_odecet']): self.logWarning('Not enough credit left') @@ -96,4 +96,4 @@ class QuickshareCz(SimpleHoster): self.logDebug("PREMIUM URL:" + download_url, data) self.download(download_url, get=data) -getInfo = create_getInfo(QuickshareCz) \ No newline at end of file +getInfo = create_getInfo(QuickshareCz) -- cgit v1.2.3