diff options
Diffstat (limited to 'module')
| -rw-r--r-- | module/plugins/hoster/RyushareCom.py | 69 | 
1 files changed, 48 insertions, 21 deletions
| diff --git a/module/plugins/hoster/RyushareCom.py b/module/plugins/hoster/RyushareCom.py index eff9a6140..79fa0672e 100644 --- a/module/plugins/hoster/RyushareCom.py +++ b/module/plugins/hoster/RyushareCom.py @@ -1,22 +1,23 @@  # -*- coding: utf-8 -*- -import re -  from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.internal.CaptchaService import SolveMedia +import re  class RyushareCom(XFileSharingPro):      __name__ = "RyushareCom"      __type__ = "hoster"      __pattern__ = r"http://(?:\w*\.)*?ryushare.com/\w{11,}" -    __version__ = "0.11" +    __version__ = "0.12"      __description__ = """ryushare.com hoster plugin""" -    __author_name__ = ("zoidberg", "stickell") -    __author_mail__ = ("zoidberg@mujmail.cz", "l.stickell@yahoo.it") +    __author_name__ = ("zoidberg", "stickell","quareevo") +    __author_mail__ = ("zoidberg@mujmail.cz", "l.stickell@yahoo.it","quareevo@arcor.de")      HOSTER_NAME = "ryushare.com" -    WAIT_PATTERN = r'(?:You have to|Please) wait (?:(?P<min>\d+) minutes, )?(?:<span id="[^"]+">)?(?P<sec>\d+)(?:</span>)? seconds' +    WAIT_PATTERN = r'You have to wait ((?P<hour>\d+) hour[s]?, )?((?P<min>\d+) minute[s], )?(?P<sec>\d+) second[s]'      DIRECT_LINK_PATTERN = r'<a href="([^"]+)">Click here to download</a>' +    SOLVEMEDIA_PATTERN = r'http:\/\/api\.solvemedia\.com\/papi\/challenge\.script\?k=(.*?)"'      def setup(self):          self.resumeDownload = self.multiDL = True @@ -26,6 +27,7 @@ class RyushareCom(XFileSharingPro):          self.chunkLimit = 3      def getDownloadLink(self): +        retry = False          self.html = self.load(self.pyfile.url)          action, inputs = self.parseHtmlForm(input_names={"op": re.compile("^download")})          if 'method_premium' in inputs: @@ -34,24 +36,49 @@ class RyushareCom(XFileSharingPro):          self.html = self.load(self.pyfile.url, post=inputs)          action, inputs = self.parseHtmlForm('F1') -        for i in xrange(10): -            self.logInfo('Attempt to detect direct link #%d' % i) +        self.setWait(65) +        # Wait +        if 'You have reached the download-limit!!!' in self.html: +            self.setWait(3600, True) +            retry = True +             +        match = re.search(self.WAIT_PATTERN, self.html) +        if match: +            m = match.groupdict(0) +            waittime = int(m["hour"])*60*60 + int(m['min']) * 60 + int(m['sec']) +            self.setWait(waittime,True) +            retry = True -            # Wait -            if 'You have reached the download-limit!!!' in self.html: -                self.setWait(3600, True) -            else: -                m = re.search(self.WAIT_PATTERN, self.html).groupdict('0') -                waittime = int(m['min']) * 60 + int(m['sec']) -                self.setWait(waittime) -            self.wait() +        self.wait() +        if retry == True: +            self.retry() -            self.html = self.load(self.pyfile.url, post=inputs) -            if 'Click here to download' in self.html: -                m = re.search(self.DIRECT_LINK_PATTERN, self.html) -                return m.group(1) +        for i in xrange(5): +             +            m = re.search(self.SOLVEMEDIA_PATTERN, self.html) +            if not m: +                self.parseError("Error parsing captcha") + +            captchaKey = m.group(1) +            captcha = SolveMedia(self) +            challenge, response = captcha.challenge(captchaKey) + +            inputs["adcopy_challenge"] = challenge +            inputs["adcopy_response"] = response + +            self.html = self.load(self.pyfile.url, post = inputs) +            if "WRONG CAPTCHA" in self.html: +                self.invalidCaptcha() +                self.logDebug("Invalid Captcha") +            else: +                self.correctCaptcha() +                break -        self.parseError('No direct link within 10 retries') +        else: +            self.fail("You have entered 5 invalid captcha codes") +        if 'Click here to download' in self.html: +            m = re.search(self.DIRECT_LINK_PATTERN, self.html) +            return m.group(1)  getInfo = create_getInfo(RyushareCom) | 
