diff options
Diffstat (limited to 'module/plugins/hoster/TurbobitNet.py')
-rw-r--r-- | module/plugins/hoster/TurbobitNet.py | 73 |
1 files changed, 36 insertions, 37 deletions
diff --git a/module/plugins/hoster/TurbobitNet.py b/module/plugins/hoster/TurbobitNet.py index 254e06c2a..d323a214b 100644 --- a/module/plugins/hoster/TurbobitNet.py +++ b/module/plugins/hoster/TurbobitNet.py @@ -9,20 +9,20 @@ import urllib from Crypto.Cipher import ARC4 -from module.network.RequestFactory import getURL -from module.plugins.internal.ReCaptcha import ReCaptcha +from module.plugins.captcha.ReCaptcha import ReCaptcha from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo, timestamp class TurbobitNet(SimpleHoster): __name__ = "TurbobitNet" __type__ = "hoster" - __version__ = "0.20" + __version__ = "0.21" + __status__ = "testing" __pattern__ = r'http://(?:www\.)?turbobit\.net/(?:download/free/)?(?P<ID>\w+)' __config__ = [("use_premium", "bool", "Use premium account if available", True)] - __description__ = """ Turbobit.net hoster plugin """ + __description__ = """Turbobit.net hoster plugin""" __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("prOq", None)] @@ -42,17 +42,16 @@ class TurbobitNet(SimpleHoster): CAPTCHA_PATTERN = r'<img alt="Captcha" src="(.+?)"' - def handleFree(self, pyfile): - self.html = self.load("http://turbobit.net/download/free/%s" % self.info['pattern']['ID'], - decode=True) + def handle_free(self, pyfile): + self.html = self.load("http://turbobit.net/download/free/%s" % self.info['pattern']['ID']) - rtUpdate = self.getRtUpdate() + rtUpdate = self.get_rt_update() - self.solveCaptcha() + self.solve_captcha() self.req.http.c.setopt(pycurl.HTTPHEADER, ["X-Requested-With: XMLHttpRequest"]) - self.html = self.load(self.getDownloadUrl(rtUpdate)) + self.html = self.load(self.get_download_url(rtUpdate)) self.req.http.c.setopt(pycurl.HTTPHEADER, ["X-Requested-With:"]) @@ -61,7 +60,7 @@ class TurbobitNet(SimpleHoster): self.link = m.group(1) - def solveCaptcha(self): + def solve_captcha(self): for _i in xrange(5): m = re.search(self.LIMIT_WAIT_PATTERN, self.html) if m: @@ -69,12 +68,12 @@ class TurbobitNet(SimpleHoster): self.wait(wait_time, wait_time > 60) self.retry() - action, inputs = self.parseHtmlForm("action='#'") + action, inputs = self.parse_html_form("action='#'") if not inputs: self.error(_("Captcha form not found")) - self.logDebug(inputs) + self.log_debug(inputs) - if inputs['captcha_type'] == 'recaptcha': + if inputs['captcha_type'] == "recaptcha": recaptcha = ReCaptcha(self) inputs['recaptcha_response_field'], inputs['recaptcha_challenge_field'] = recaptcha.challenge() else: @@ -82,44 +81,44 @@ class TurbobitNet(SimpleHoster): if m is None: self.error(_("captcha")) captcha_url = m.group(1) - inputs['captcha_response'] = self.decryptCaptcha(captcha_url) + inputs['captcha_response'] = self.captcha.decrypt(captcha_url) - self.logDebug(inputs) + self.log_debug(inputs) self.html = self.load(self.url, post=inputs) if '<div class="captcha-error">Incorrect, try again!<' in self.html: - self.invalidCaptcha() + self.captcha.invalid() else: - self.correctCaptcha() + self.captcha.correct() break else: self.fail(_("Invalid captcha")) - def getRtUpdate(self): - rtUpdate = self.getStorage("rtUpdate") + def get_rt_update(self): + rtUpdate = self.retrieve("rtUpdate") if not rtUpdate: - if self.getStorage("version") != self.__version__ \ - or int(self.getStorage("timestamp", 0)) + 86400000 < timestamp(): - # that's right, we are even using jdownloader updates - rtUpdate = getURL("http://update0.jdownloader.org/pluginstuff/tbupdate.js") + if self.retrieve("version") is not self.__version__ \ + or int(self.retrieve("timestamp", 0)) + 86400000 < timestamp(): + #: that's right, we are even using jdownloader updates + rtUpdate = self.load("http://update0.jdownloader.org/pluginstuff/tbupdate.js") rtUpdate = self.decrypt(rtUpdate.splitlines()[1]) - # but we still need to fix the syntax to work with other engines than rhino + #: But we still need to fix the syntax to work with other engines than rhino rtUpdate = re.sub(r'for each\(var (\w+) in(\[[^\]]+\])\)\{', r'zza=\2;for(var zzi=0;zzi<zza.length;zzi++){\1=zza[zzi];', rtUpdate) rtUpdate = re.sub(r"for\((\w+)=", r"for(var \1=", rtUpdate) - self.setStorage("rtUpdate", rtUpdate) - self.setStorage("timestamp", timestamp()) - self.setStorage("version", self.__version__) + self.store("rtUpdate", rtUpdate) + self.store("timestamp", timestamp()) + self.store("version", self.__version__) else: - self.logError(_("Unable to download, wait for update...")) - self.tempOffline() + self.log_error(_("Unable to download, wait for update...")) + self.temp_offline() return rtUpdate - def getDownloadUrl(self, rtUpdate): + def get_download_url(self, rtUpdate): self.req.http.lastURL = self.url m = re.search("(/\w+/timeout\.js\?\w+=)([^\"\'<>]+)", self.html) @@ -130,7 +129,7 @@ class TurbobitNet(SimpleHoster): fun = self.load(url) - self.setWait(65, False) + self.set_wait(65, False) for b in [1, 3]: self.jscode = "var id = \'%s\';var b = %d;var inn = \'%s\';%sout" % ( @@ -138,16 +137,16 @@ class TurbobitNet(SimpleHoster): try: out = self.js.eval(self.jscode) - self.logDebug("URL", self.js.engine, out) + self.log_debug("URL", self.js.engine, out) if out.startswith('/download/'): return "http://turbobit.net%s" % out.strip() except Exception, e: - self.logError(e) + self.log_error(e) else: if self.retries >= 2: - # retry with updated js - self.delStorage("rtUpdate") + #: Retry with updated js + self.delete("rtUpdate") else: self.retry() @@ -159,7 +158,7 @@ class TurbobitNet(SimpleHoster): return binascii.unhexlify(cipher.encrypt(binascii.unhexlify(data))) - def getLocalTimeString(self): + def get_local_time_string(self): lt = time.localtime() tz = time.altzone if lt.tm_isdst else time.timezone return "%s GMT%+03d%02d" % (time.strftime("%a %b %d %Y %H:%M:%S", lt), -tz // 3600, tz % 3600) |