diff options
| -rw-r--r-- | module/plugins/crypter/CloudzillaToFolder.py | 6 | ||||
| -rw-r--r-- | module/plugins/crypter/DevhostStFolder.py | 6 | ||||
| -rw-r--r-- | module/plugins/hoster/FilerNet.py | 43 | ||||
| -rw-r--r-- | module/plugins/hoster/FshareVn.py | 14 | ||||
| -rw-r--r-- | module/plugins/hoster/HellshareCz.py | 8 | ||||
| -rw-r--r-- | module/plugins/hoster/SpeedyshareCom.py | 7 | ||||
| -rw-r--r-- | module/plugins/hoster/TurbobitNet.py | 36 | ||||
| -rw-r--r-- | module/plugins/internal/MultiHoster.py | 9 | ||||
| -rw-r--r-- | module/plugins/internal/SimpleCrypter.py | 3 | ||||
| -rw-r--r-- | module/plugins/internal/SimpleDereferer.py | 9 | ||||
| -rw-r--r-- | module/plugins/internal/SimpleHoster.py | 3 | 
11 files changed, 55 insertions, 89 deletions
| diff --git a/module/plugins/crypter/CloudzillaToFolder.py b/module/plugins/crypter/CloudzillaToFolder.py index c156d4de4..76019d928 100644 --- a/module/plugins/crypter/CloudzillaToFolder.py +++ b/module/plugins/crypter/CloudzillaToFolder.py @@ -10,7 +10,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo  class CloudzillaToFolder(SimpleHoster):      __name__    = "CloudzillaToFolder"      __type__    = "crypter" -    __version__ = "0.01" +    __version__ = "0.02"      __pattern__ = r'http://(?:www\.)?cloudzilla\.to/share/folder/(?P<ID>[\w^_]+)' @@ -36,8 +36,4 @@ class CloudzillaToFolder(SimpleHoster):              self.retry(reason="Wrong password") -    def getLinks(self): -        return [urljoin("http://www.cloudzilla.to", link) for link in super(CloudzillaToFolder, self).getLinks()] - -  getInfo = create_getInfo(CloudzillaToFolder) diff --git a/module/plugins/crypter/DevhostStFolder.py b/module/plugins/crypter/DevhostStFolder.py index 5ac9d4faf..8779cae5e 100644 --- a/module/plugins/crypter/DevhostStFolder.py +++ b/module/plugins/crypter/DevhostStFolder.py @@ -13,7 +13,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo  class DevhostStFolder(SimpleCrypter):      __name__    = "DevhostStFolder"      __type__    = "crypter" -    __version__ = "0.03" +    __version__ = "0.04"      __pattern__ = r'http://(?:www\.)?d-h\.st/users/(?P<USER>\w+)(/\?fld_id=(?P<ID>\d+))?'      __config__  = [("use_subfolder", "bool", "Save package to subfolder", True), @@ -54,8 +54,4 @@ class DevhostStFolder(SimpleCrypter):          return {'name': name, 'folder': folder} -    def getLinks(self): -        return [urljoin("http://d-h.st", link) for link in re.findall(self.LINK_PATTERN, self.html)] - -  getInfo = create_getInfo(DevhostStFolder) diff --git a/module/plugins/hoster/FilerNet.py b/module/plugins/hoster/FilerNet.py index f0b37e4cb..53fa2bda1 100644 --- a/module/plugins/hoster/FilerNet.py +++ b/module/plugins/hoster/FilerNet.py @@ -16,7 +16,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo  class FilerNet(SimpleHoster):      __name__    = "FilerNet"      __type__    = "hoster" -    __version__ = "0.14" +    __version__ = "0.15"      __pattern__ = r'https?://(?:www\.)?filer\.net/get/\w+' @@ -53,30 +53,23 @@ class FilerNet(SimpleHoster):          if 'hash' not in inputs:              self.error(_("Unable to detect hash")) -        recaptcha = ReCaptcha(self) - -        for _i in xrange(5): -            response, challenge = recaptcha.challenge() - -            #@NOTE: Work-around for v0.4.9 just_header issue -            #@TODO: Check for v0.4.10 -            self.req.http.c.setopt(pycurl.FOLLOWLOCATION, 0) -            self.load(pyfile.url, post={'recaptcha_challenge_field': challenge, -                                        'recaptcha_response_field' : response, -                                        'hash'                     : inputs['hash']}) -            self.req.http.c.setopt(pycurl.FOLLOWLOCATION, 1) - -            if 'location' in self.req.http.header.lower(): -                self.link = re.search(r'location: (\S+)', self.req.http.header, re.I).group(1) -                self.correctCaptcha() -                break -            else: -                self.invalidCaptcha() - - -    def downloadLink(self, link): -        if link and isinstance(link, basestring): -            self.download(urljoin("http://filer.net/", link), disposition=True) +        recaptcha           = ReCaptcha(self) +        response, challenge = recaptcha.challenge() + +        #@NOTE: Work-around for v0.4.9 just_header issue +        #@TODO: Check for v0.4.10 +        self.req.http.c.setopt(pycurl.FOLLOWLOCATION, 0) +        self.load(pyfile.url, post={'recaptcha_challenge_field': challenge, +                                    'recaptcha_response_field' : response, +                                    'hash'                     : inputs['hash']}) +        self.req.http.c.setopt(pycurl.FOLLOWLOCATION, 1) + +        if 'location' in self.req.http.header.lower(): +            self.link = re.search(r'location: (\S+)', self.req.http.header, re.I).group(1) +            self.correctCaptcha() +            break +        else: +            self.invalidCaptcha()  getInfo = create_getInfo(FilerNet) diff --git a/module/plugins/hoster/FshareVn.py b/module/plugins/hoster/FshareVn.py index 872511afc..4912974ad 100644 --- a/module/plugins/hoster/FshareVn.py +++ b/module/plugins/hoster/FshareVn.py @@ -25,7 +25,7 @@ def doubleDecode(m):  class FshareVn(SimpleHoster):      __name__    = "FshareVn"      __type__    = "hoster" -    __version__ = "0.19" +    __version__ = "0.20"      __pattern__ = r'http://(?:www\.)?fshare\.vn/file/.+' @@ -58,7 +58,7 @@ class FshareVn(SimpleHoster):          self.checkErrors()          action, inputs = self.parseHtmlForm('frm_download') -        self.url = urljoin(pyfile.url, action) +        url = urljoin(pyfile.url, action)          if not inputs:              self.error(_("No FORM")) @@ -69,7 +69,7 @@ class FshareVn(SimpleHoster):              if password:                  self.logInfo(_("Password protected link, trying ") + password)                  inputs['link_file_pwd_dl'] = password -                self.html = self.load(self.url, post=inputs, decode=True) +                self.html = self.load(url, post=inputs, decode=True)                  if 'name="link_file_pwd_dl"' in self.html:                      self.fail(_("Incorrect password")) @@ -77,7 +77,7 @@ class FshareVn(SimpleHoster):                  self.fail(_("No password found"))          else: -            self.html = self.load(self.url, post=inputs, decode=True) +            self.html = self.load(url, post=inputs, decode=True)          self.checkErrors() @@ -87,11 +87,9 @@ class FshareVn(SimpleHoster):          m = re.search(self.LINK_FREE_PATTERN, self.html)          if m is None:              self.error(_("LINK_FREE_PATTERN not found")) -        self.url = m.group(1) -        self.logDebug("FREE DL URL: %s" % self.url) - +         +        self.link = m.group(1)          self.wait() -        self.download(self.url)      def checkErrors(self): diff --git a/module/plugins/hoster/HellshareCz.py b/module/plugins/hoster/HellshareCz.py index 47b981dd7..05caf052d 100644 --- a/module/plugins/hoster/HellshareCz.py +++ b/module/plugins/hoster/HellshareCz.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo  class HellshareCz(SimpleHoster):      __name__    = "HellshareCz"      __type__    = "hoster" -    __version__ = "0.84" +    __version__ = "0.85"      __pattern__ = r'http://(?:www\.)?hellshare\.(?:cz|com|sk|hu|pl)/[^?]*/\d+' @@ -32,10 +32,4 @@ class HellshareCz(SimpleHoster):          self.chunkLimit = 1 -    def downloadLink(self, link): -        if link and isinstance(link, basestring): -            self.correctCaptcha() -            self.download(urljoin("http://www.hellshare.com/", link), disposition=True) - -  getInfo = create_getInfo(HellshareCz) diff --git a/module/plugins/hoster/SpeedyshareCom.py b/module/plugins/hoster/SpeedyshareCom.py index 0acdb7647..f21b0a3a7 100644 --- a/module/plugins/hoster/SpeedyshareCom.py +++ b/module/plugins/hoster/SpeedyshareCom.py @@ -13,7 +13,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo  class SpeedyshareCom(SimpleHoster):      __name__    = "SpeedyshareCom"      __type__    = "hoster" -    __version__ = "0.04" +    __version__ = "0.05"      __pattern__ = r'https?://(?:www\.)?(speedyshare\.com|speedy\.sh)/\w+' @@ -38,10 +38,7 @@ class SpeedyshareCom(SimpleHoster):      def handleFree(self, pyfile):          m = re.search(self.LINK_FREE_PATTERN, self.html)          if m is None: -            self.error(_("Download link not found")) - -        dl_link = urljoin("http://www.speedyshare.com", m.group(1)) -        self.download(dl_link, disposition=True) +            self.link = m.group(1)  getInfo = create_getInfo(SpeedyshareCom) diff --git a/module/plugins/hoster/TurbobitNet.py b/module/plugins/hoster/TurbobitNet.py index b2388e02d..03e18a9cd 100644 --- a/module/plugins/hoster/TurbobitNet.py +++ b/module/plugins/hoster/TurbobitNet.py @@ -17,7 +17,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo, t  class TurbobitNet(SimpleHoster):      __name__    = "TurbobitNet"      __type__    = "hoster" -    __version__ = "0.18" +    __version__ = "0.19"      __pattern__ = r'http://(?:www\.)?turbobit\.net/(?:download/free/)?(?P<ID>\w+)' @@ -35,15 +35,15 @@ class TurbobitNet(SimpleHoster):      SIZE_PATTERN = r'class="file-size">(?P<S>[\d.,]+) (?P<U>[\w^_]+)'      OFFLINE_PATTERN = r'<h2>File Not Found</h2>|html\(\'File (?:was )?not found' -    LINK_PATTERN = r'(/download/redirect/[^"\']+)' +    LINK_FREE_PATTERN = LINK_PREMIUM_PATTERN = r'(/download/redirect/[^"\']+)'      LIMIT_WAIT_PATTERN = r'<div id=\'timeout\'>(\d+)<'      CAPTCHA_PATTERN    = r'<img alt="Captcha" src="(.+?)"'      def handleFree(self, pyfile): -        self.url = "http://turbobit.net/download/free/%s" % self.info['pattern']['ID'] -        self.html = self.load(self.url, ref=True, decode=True) +        self.html = self.load("http://turbobit.net/download/free/%s" % self.info['pattern']['ID'], +                              decode=True)          rtUpdate = self.getRtUpdate() @@ -51,14 +51,13 @@ class TurbobitNet(SimpleHoster):          self.req.http.c.setopt(HTTPHEADER, ["X-Requested-With: XMLHttpRequest"]) -        self.url = self.getDownloadUrl(rtUpdate) - -        self.wait() -        self.html = self.load(self.url) +        self.html = self.load(self.getDownloadUrl(rtUpdate))          self.req.http.c.setopt(HTTPHEADER, ["X-Requested-With:"]) -        self.downloadFile() +        m = re.search(self.LINK_FREE_PATTERN, self.html) +        if m: +            self.link = m.group(1)      def solveCaptcha(self): @@ -141,13 +140,17 @@ class TurbobitNet(SimpleHoster):                  self.logDebug("URL", self.js.engine, out)                  if out.startswith('/download/'):                      return "http://turbobit.net%s" % out.strip() +                          except Exception, e:                  self.logError(e)          else:              if self.retries >= 2:                  # retry with updated js                  self.delStorage("rtUpdate") -            self.retry() +            else: +                self.retry() +         +        self.wait()      def decrypt(self, data): @@ -161,17 +164,4 @@ class TurbobitNet(SimpleHoster):          return "%s GMT%+03d%02d" % (time.strftime("%a %b %d %Y %H:%M:%S", lt), -tz // 3600, tz % 3600) -    def handlePremium(self, pyfile): -        self.logDebug("Premium download as user %s" % self.user) -        self.downloadFile() - - -    def downloadFile(self): -        m = re.search(self.LINK_PATTERN, self.html) -        if m is None: -            self.error(_("Download link not found")) -        self.url = "http://turbobit.net" + m.group(1) -        self.download(self.url) - -  getInfo = create_getInfo(TurbobitNet) diff --git a/module/plugins/internal/MultiHoster.py b/module/plugins/internal/MultiHoster.py index eee634d46..ad5b6283e 100644 --- a/module/plugins/internal/MultiHoster.py +++ b/module/plugins/internal/MultiHoster.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo, r  class MultiHoster(SimpleHoster):      __name__    = "MultiHoster"      __type__    = "hoster" -    __version__ = "0.35" +    __version__ = "0.36"      __pattern__ = r'^unmatchable$' @@ -27,9 +27,10 @@ class MultiHoster(SimpleHoster):      def prepare(self): -        self.info      = {} -        self.link      = ""     #@TODO: Move to hoster class in 0.4.10 -        self.directDL  = False  #@TODO: Move to hoster class in 0.4.10 +        self.info     = {} +        self.html     = "" +        self.link     = ""     #@TODO: Move to hoster class in 0.4.10 +        self.directDL = False  #@TODO: Move to hoster class in 0.4.10          if self.LOGIN_ACCOUNT and not self.account:              self.fail(_("Required account not found")) diff --git a/module/plugins/internal/SimpleCrypter.py b/module/plugins/internal/SimpleCrypter.py index 9df262deb..b2622b5e0 100644 --- a/module/plugins/internal/SimpleCrypter.py +++ b/module/plugins/internal/SimpleCrypter.py @@ -12,7 +12,7 @@ from module.utils import fixup  class SimpleCrypter(Crypter, SimpleHoster):      __name__    = "SimpleCrypter"      __type__    = "crypter" -    __version__ = "0.41" +    __version__ = "0.42"      __pattern__ = r'^unmatchable$'      __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),  #: Overrides core.config['general']['folder_per_package'] @@ -85,6 +85,7 @@ class SimpleCrypter(Crypter, SimpleHoster):          self.pyfile.error = ""  #@TODO: Remove in 0.4.10          self.info  = {} +        self.html  = ""          self.links = []  #@TODO: Move to hoster class in 0.4.10          if self.LOGIN_PREMIUM and not self.premium: diff --git a/module/plugins/internal/SimpleDereferer.py b/module/plugins/internal/SimpleDereferer.py index 72d61d4a0..4c5e67a4c 100644 --- a/module/plugins/internal/SimpleDereferer.py +++ b/module/plugins/internal/SimpleDereferer.py @@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import fileUrl, set_cookies  class SimpleDereferer(Crypter):      __name__    = "SimpleDereferer"      __type__    = "crypter" -    __version__ = "0.05" +    __version__ = "0.06"      __pattern__ = r'^unmatchable$'      __config__  = [("use_subfolder", "bool", "Save package to subfolder", True), @@ -54,10 +54,6 @@ class SimpleDereferer(Crypter):              except Exception:                  self.prepare()                  self.preload() - -                if self.html is None: -                    self.fail(_("No html retrieved")) -                  self.checkStatus()                  link = self.getLink() @@ -70,6 +66,9 @@ class SimpleDereferer(Crypter):      def prepare(self): +        self.info = {} +        self.html = "" +          self.req.setOption("timeout", 120)          if isinstance(self.COOKIES, list): diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index 3770d0575..506974259 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -245,7 +245,7 @@ def secondsToMidnight(gmt=0):  class SimpleHoster(Hoster):      __name__    = "SimpleHoster"      __type__    = "hoster" -    __version__ = "1.08" +    __version__ = "1.09"      __pattern__ = r'^unmatchable$' @@ -424,6 +424,7 @@ class SimpleHoster(Hoster):          self.pyfile.error = ""  #@TODO: Remove in 0.4.10          self.info      = {} +        self.html      = ""          self.link      = ""     #@TODO: Move to hoster class in 0.4.10          self.directDL  = False  #@TODO: Move to hoster class in 0.4.10          self.multihost = False  #@TODO: Move to hoster class in 0.4.10 | 
