From ada1607d8a7190386e7a13dde2d8e312c2f6edf0 Mon Sep 17 00:00:00 2001 From: prOq Date: Fri, 24 Oct 2014 15:29:52 +0200 Subject: [RapiduNet] new hoster and account plugin --- module/plugins/hoster/RapiduNet.py | 97 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 module/plugins/hoster/RapiduNet.py (limited to 'module/plugins/hoster/RapiduNet.py') diff --git a/module/plugins/hoster/RapiduNet.py b/module/plugins/hoster/RapiduNet.py new file mode 100644 index 000000000..624c5844b --- /dev/null +++ b/module/plugins/hoster/RapiduNet.py @@ -0,0 +1,97 @@ +# -*- coding: utf-8 -*- + +import re + +from pycurl import HTTPHEADER +from module.common.json_layer import json_loads +from time import time, altzone + +from module.plugins.internal.CaptchaService import ReCaptcha +from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo + + +class RapiduNet(SimpleHoster): + __name__ = "RapiduNet" + __type__ = "hoster" + __version__ = "0.01" + __pattern__ = r'https?://(?:www\.)?rapidu\.net/(?P\d{10})(/|/.*)?' + __description__ = """Rapidu.net hoster plugin""" + __authors__ = [("prOq", None)] + + + FILE_INFO_PATTERN = r'

.*

\s*(?P\d+(\.\d+)?)\s(?P\w+)' + + OFFLINE_PATTERN = '404 - (File not found|Nie znaleziono pliku)' + ERROR_PATTERN = '
' + + RECAPTCHA_KEY = r'6Ld12ewSAAAAAHoE6WVP_pSfCdJcBQScVweQh8Io' + + fileID = "" + + + def setup(self): + self.resumeDownload = True + self.multiDL = True + + if self.premium: + self.limitDL = -1 + else: + self.limitDL = 2 + + + def process(self, pyfile): + m = re.match(self.__pattern__, self.pyfile.url) + if m: + self.fileID = m.group('fileID') + else: + self.fail("URL mismatch") + + self.handleFree() + + + def handleFree(self): + self.html = self.load(self.pyfile.url, decode=True) + + if re.search(self.ERROR_PATTERN, self.html): + self.fail("An error occured on hoster") + + self.req.http.lastURL = self.pyfile.url + self.req.http.c.setopt(HTTPHEADER, ["X-Requested-With: XMLHttpRequest"]) + + jsvars = self.getJsonResponse("https://rapidu.net/ajax.php?a=getLoadTimeToDownload", {"_go": None}) + + if str(jsvars['timeToDownload']) is "stop": + t = (24 *60 * 60) - (int(time()) % (24 *60 * 60)) + altzone + t = 10 if t < 1 else None # in case of not synchronised clock + self.logInfo("You've reach your daily download transfer") + self.retry(10, t, "Try tomorrow again") + else: + self.wait((int(jsvars['timeToDownload'])-int(time()))) + + recaptcha = ReCaptcha(self) + + for _ in xrange(10): + challenge, code = recaptcha.challenge(self.RECAPTCHA_KEY) + + self.req.http.c.setopt(HTTPHEADER, ["X-Requested-With: XMLHttpRequest"]) + jsvars = self.getJsonResponse("https://rapidu.net/ajax.php?a=getCheckCaptcha", { + "_go": None, + "captcha1": challenge, + "captcha2": code, + "fileId": self.fileID + }) + + if jsvars['message'] == 'success': + self.download(jsvars['url']) + break + + + def getJsonResponse(self, url, post_data): + response = self.load(url, post=post_data, decode=True) + if not response.startswith('{'): + self.retry() + self.logDebug(url, response) + return json_loads(response) + + +getInfo = create_getInfo(RapiduNet) -- cgit v1.2.3 From d42203e97a294cdf06b281b8ab001b2d6247fa49 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 5 Dec 2014 23:01:13 +0100 Subject: [RapiduNet] Cleanup --- module/plugins/hoster/RapiduNet.py | 89 ++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 52 deletions(-) (limited to 'module/plugins/hoster/RapiduNet.py') diff --git a/module/plugins/hoster/RapiduNet.py b/module/plugins/hoster/RapiduNet.py index 624c5844b..e14b18a4f 100644 --- a/module/plugins/hoster/RapiduNet.py +++ b/module/plugins/hoster/RapiduNet.py @@ -3,94 +3,79 @@ import re from pycurl import HTTPHEADER -from module.common.json_layer import json_loads from time import time, altzone +from module.common.json_layer import json_loads from module.plugins.internal.CaptchaService import ReCaptcha from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class RapiduNet(SimpleHoster): - __name__ = "RapiduNet" - __type__ = "hoster" - __version__ = "0.01" - __pattern__ = r'https?://(?:www\.)?rapidu\.net/(?P\d{10})(/|/.*)?' + __name__ = "RapiduNet" + __type__ = "hoster" + __version__ = "0.02" + + __pattern__ = r'https?://(?:www\.)?rapidu\.net/(?P\d{10})' + __description__ = """Rapidu.net hoster plugin""" - __authors__ = [("prOq", None)] + __license__ = "GPLv3" + __authors__ = [("prOq", None)] + COOKIES = [("rapidu.net", "rapidu_lang", "en")] + FILE_INFO_PATTERN = r'

.*

\s*(?P\d+(\.\d+)?)\s(?P\w+)' + OFFLINE_PATTERN = r'404 - File not found' - OFFLINE_PATTERN = '404 - (File not found|Nie znaleziono pliku)' - ERROR_PATTERN = '
' + ERROR_PATTERN = r'
' RECAPTCHA_KEY = r'6Ld12ewSAAAAAHoE6WVP_pSfCdJcBQScVweQh8Io' - fileID = "" - def setup(self): self.resumeDownload = True - self.multiDL = True - - if self.premium: - self.limitDL = -1 - else: - self.limitDL = 2 - - - def process(self, pyfile): - m = re.match(self.__pattern__, self.pyfile.url) - if m: - self.fileID = m.group('fileID') - else: - self.fail("URL mismatch") - - self.handleFree() + self.multiDL = True + self.limitDL = 0 if self.premium else 2 def handleFree(self): - self.html = self.load(self.pyfile.url, decode=True) - - if re.search(self.ERROR_PATTERN, self.html): - self.fail("An error occured on hoster") - self.req.http.lastURL = self.pyfile.url self.req.http.c.setopt(HTTPHEADER, ["X-Requested-With: XMLHttpRequest"]) - jsvars = self.getJsonResponse("https://rapidu.net/ajax.php?a=getLoadTimeToDownload", {"_go": None}) + jsvars = self.getJsonResponse("https://rapidu.net/ajax.php?a=getLoadTimeToDownload", {'_go': None}) - if str(jsvars['timeToDownload']) is "stop": - t = (24 *60 * 60) - (int(time()) % (24 *60 * 60)) + altzone - t = 10 if t < 1 else None # in case of not synchronised clock - self.logInfo("You've reach your daily download transfer") - self.retry(10, t, "Try tomorrow again") - else: - self.wait((int(jsvars['timeToDownload'])-int(time()))) + if str(jsvars['timeToDownload']) is "stop": + t = (24 * 60 * 60) - (int(time()) % (24 *60 * 60)) + altzone - recaptcha = ReCaptcha(self) + self.logInfo("You've reach your daily download transfer") - for _ in xrange(10): - challenge, code = recaptcha.challenge(self.RECAPTCHA_KEY) + self.retry(10, 10 if t < 1 else None, "Try tomorrow again") #@NOTE: check t in case of not synchronised clock - self.req.http.c.setopt(HTTPHEADER, ["X-Requested-With: XMLHttpRequest"]) - jsvars = self.getJsonResponse("https://rapidu.net/ajax.php?a=getCheckCaptcha", { - "_go": None, - "captcha1": challenge, - "captcha2": code, - "fileId": self.fileID - }) + else: + self.wait(int(jsvars['timeToDownload']) - int(time())) - if jsvars['message'] == 'success': - self.download(jsvars['url']) - break + recaptcha = ReCaptcha(self) + + for _i in xrange(10): + challenge, code = recaptcha.challenge(self.RECAPTCHA_KEY) + + jsvars = self.getJsonResponse("https://rapidu.net/ajax.php?a=getCheckCaptcha", + {'_go' : None, + 'captcha1': challenge, + 'captcha2': code, + 'fileId' : self.info['ID']}) + if jsvars['message'] == 'success': + self.download(jsvars['url']) + break def getJsonResponse(self, url, post_data): response = self.load(url, post=post_data, decode=True) if not response.startswith('{'): self.retry() + self.logDebug(url, response) + return json_loads(response) -- cgit v1.2.3 From 4d578cb15f3d6edd036e438e504739b97660f93e Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 9 Dec 2014 16:58:35 +0100 Subject: Spare code cosmetics --- module/plugins/hoster/RapiduNet.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'module/plugins/hoster/RapiduNet.py') diff --git a/module/plugins/hoster/RapiduNet.py b/module/plugins/hoster/RapiduNet.py index e14b18a4f..a3b2cffcd 100644 --- a/module/plugins/hoster/RapiduNet.py +++ b/module/plugins/hoster/RapiduNet.py @@ -57,12 +57,12 @@ class RapiduNet(SimpleHoster): recaptcha = ReCaptcha(self) for _i in xrange(10): - challenge, code = recaptcha.challenge(self.RECAPTCHA_KEY) + challenge, response = recaptcha.challenge(self.RECAPTCHA_KEY) jsvars = self.getJsonResponse("https://rapidu.net/ajax.php?a=getCheckCaptcha", {'_go' : None, 'captcha1': challenge, - 'captcha2': code, + 'captcha2': response, 'fileId' : self.info['ID']}) if jsvars['message'] == 'success': self.download(jsvars['url']) @@ -70,13 +70,13 @@ class RapiduNet(SimpleHoster): def getJsonResponse(self, url, post_data): - response = self.load(url, post=post_data, decode=True) - if not response.startswith('{'): + res = self.load(url, post=post_data, decode=True) + if not res.startswith('{'): self.retry() - self.logDebug(url, response) + self.logDebug(url, res) - return json_loads(response) + return json_loads(res) getInfo = create_getInfo(RapiduNet) -- cgit v1.2.3