diff options
author | Walter Purcaro <vuolter@gmail.com> | 2014-09-08 00:29:57 +0200 |
---|---|---|
committer | Walter Purcaro <vuolter@gmail.com> | 2014-09-14 11:02:23 +0200 |
commit | 68d662e689cd42687341c550fb6ebb74e6968d21 (patch) | |
tree | 486cef41bd928b8db704894233b2cef94a6e346f /pyload/plugins/hoster/UptoboxCom.py | |
parent | save_join -> safe_join & save_path -> safe_filename (diff) | |
download | pyload-68d662e689cd42687341c550fb6ebb74e6968d21.tar.xz |
module -> pyload
Diffstat (limited to 'pyload/plugins/hoster/UptoboxCom.py')
-rw-r--r-- | pyload/plugins/hoster/UptoboxCom.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/pyload/plugins/hoster/UptoboxCom.py b/pyload/plugins/hoster/UptoboxCom.py new file mode 100644 index 000000000..8fd5e6fa7 --- /dev/null +++ b/pyload/plugins/hoster/UptoboxCom.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- + +import re + +from urllib import unquote + +from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from pyload.plugins.internal.CaptchaService import ReCaptcha, SolveMedia +from pyload.utils import html_unescape + + +class UptoboxCom(XFileSharingPro): + __name__ = "UptoboxCom" + __type__ = "hoster" + __version__ = "0.09" + + __pattern__ = r'https?://(?:www\.)?uptobox\.com/\w+' + + __description__ = """Uptobox.com hoster plugin""" + __author_name__ = "Walter Purcaro" + __author_mail__ = "vuolter@gmail.com" + + HOSTER_NAME = "uptobox.com" + + FILE_INFO_PATTERN = r'"para_title">(?P<N>.+) \((?P<S>[\d\.]+) (?P<U>\w+)\)' + OFFLINE_PATTERN = r'>(File not found|Access Denied|404 Not Found)' + TEMP_OFFLINE_PATTERN = r'>This server is in maintenance mode' + + WAIT_PATTERN = r'>(\d+)</span> seconds<' + + LINK_PATTERN = r'"(https?://\w+\.uptobox\.com/d/.*?)"' + + + def handleCaptcha(self, inputs): + m = re.search(self.SOLVEMEDIA_PATTERN, self.html) + if m: + captcha_key = m.group(1) + captcha = SolveMedia(self) + inputs['adcopy_challenge'], inputs['adcopy_response'] = captcha.challenge(captcha_key) + return 4 + else: + m = re.search(self.CAPTCHA_URL_PATTERN, self.html) + if m: + captcha_url = m.group(1) + inputs['code'] = self.decryptCaptcha(captcha_url) + return 2 + else: + m = re.search(self.CAPTCHA_DIV_PATTERN, self.html, re.DOTALL) + if m: + captcha_div = m.group(1) + self.logDebug(captcha_div) + numerals = re.findall(r'<span.*?padding-left\s*:\s*(\d+).*?>(\d)</span>', + html_unescape(captcha_div)) + inputs['code'] = "".join([a[1] for a in sorted(numerals, key=lambda num: int(num[0]))]) + self.logDebug("CAPTCHA", inputs['code'], numerals) + return 3 + else: + m = re.search(self.RECAPTCHA_URL_PATTERN, self.html) + if m: + recaptcha_key = unquote(m.group(1)) + self.logDebug("RECAPTCHA KEY: %s" % recaptcha_key) + recaptcha = ReCaptcha(self) + inputs['recaptcha_challenge_field'], inputs['recaptcha_response_field'] = recaptcha.challenge( + recaptcha_key) + return 1 + return 0 + + +getInfo = create_getInfo(UptoboxCom) |