diff options
Diffstat (limited to 'pyload/plugins/hoster/UploadedTo.py')
-rw-r--r-- | pyload/plugins/hoster/UploadedTo.py | 68 |
1 files changed, 35 insertions, 33 deletions
diff --git a/pyload/plugins/hoster/UploadedTo.py b/pyload/plugins/hoster/UploadedTo.py index f02b9951d..17e3a4a0f 100644 --- a/pyload/plugins/hoster/UploadedTo.py +++ b/pyload/plugins/hoster/UploadedTo.py @@ -34,7 +34,7 @@ def getAPIData(urls): post['id_%s' % i] = id idMap[id] = url - for _ in xrange(5): + for _i in xrange(5): api = unicode(getURL("http://uploaded.net/api/filemultiple", post=post, decode=False), 'iso-8859-1') if api != "can't find request": break @@ -64,7 +64,7 @@ def parseFileInfo(self, url='', html=''): # File offline status = 1 else: - m = re.search(self.FILE_INFO_PATTERN, html) + m = re.search(self.INFO_PATTERN, html) if m: name, fileid = html_unescape(m.group('N')), m.group('ID') size = parseFileSize(m.group('S')) @@ -92,21 +92,22 @@ def getInfo(urls): class UploadedTo(Hoster): - __name__ = "UploadedTo" - __type__ = "hoster" - __version__ = "0.73" + __name__ = "UploadedTo" + __type__ = "hoster" + __version__ = "0.75" __pattern__ = r'https?://(?:www\.)?(uploaded\.(to|net)|ul\.to)(/file/|/?\?id=|.*?&id=|/)(?P<ID>\w+)' __description__ = """Uploaded.net hoster plugin""" - __authors__ = [("spoob", "spoob@pyload.org"), - ("mkaay", "mkaay@mkaay.de"), - ("zoidberg", "zoidberg@mujmail.cz"), - ("netpok", "netpok@gmail.com"), - ("stickell", "l.stickell@yahoo.it")] + __license__ = "GPLv3" + __authors__ = [("spoob", "spoob@pyload.org"), + ("mkaay", "mkaay@mkaay.de"), + ("zoidberg", "zoidberg@mujmail.cz"), + ("netpok", "netpok@gmail.com"), + ("stickell", "l.stickell@yahoo.it")] - FILE_INFO_PATTERN = r'<a href="file/(?P<ID>\w+)" id="filename">(?P<N>[^<]+)</a> \s*<small[^>]*>(?P<S>[^<]+)</small>' + INFO_PATTERN = r'<a href="file/(?P<ID>\w+)" id="filename">(?P<N>[^<]+)</a> \s*<small[^>]*>(?P<S>[^<]+)</small>' OFFLINE_PATTERN = r'<small class="cL">Error: 404</small>' DL_LIMIT_PATTERN = r'You have reached the max. number of possible free downloads for this hour' @@ -118,6 +119,7 @@ class UploadedTo(Hoster): self.fileID = getID(self.pyfile.url) self.pyfile.url = "http://uploaded.net/file/%s" % self.fileID + def process(self, pyfile): self.load("http://uploaded.net/language/en", just_header=True) @@ -126,7 +128,7 @@ class UploadedTo(Hoster): # TODO: fallback to parse from site, because api sometimes delivers wrong status codes if not api: - self.logWarning("No response for API call") + self.logWarning(_("No response for API call")) self.html = unicode(self.load(pyfile.url, decode=False), 'iso-8859-1') name, size, status, self.fileID = parseFileInfo(self) @@ -136,7 +138,8 @@ class UploadedTo(Hoster): elif status == 2: pyfile.name, pyfile.size = name, size else: - self.fail('Parse error - file info') + self.error(_("file info")) + elif api == 'Access denied': self.fail(_("API key invalid")) @@ -157,53 +160,53 @@ class UploadedTo(Hoster): else: self.handleFree() + def handlePremium(self): info = self.account.getAccountInfo(self.user, True) self.logDebug("%(name)s: Use Premium Account (%(left)sGB left)" % {"name": self.__name__, "left": info['trafficleft'] / 1024 / 1024}) if int(self.data[1]) / 1024 > info['trafficleft']: - self.logInfo(_("%s: Not enough traffic left" % self.__name__)) + self.logInfo(_("Not enough traffic left")) self.account.empty(self.user) self.resetAccount() self.fail(_("Traffic exceeded")) header = self.load("http://uploaded.net/file/%s" % self.fileID, just_header=True) - if "location" in header: + if 'location' in header: #Direct download - print "Direct Download: " + header['location'] + self.logDebug("Direct download link detected") self.download(header['location']) else: #Indirect download self.html = self.load("http://uploaded.net/file/%s" % self.fileID) m = re.search(r'<div class="tfree".*\s*<form method="post" action="(.*?)"', self.html) if m is None: - self.fail("Download URL not m. Try to enable direct downloads.") + self.fail(_("Download URL not m. Try to enable direct downloads")) url = m.group(1) - print "Premium URL: " + url self.download(url, post={}) + def handleFree(self): self.html = self.load(self.pyfile.url, decode=True) if 'var free_enabled = false;' in self.html: - self.logError("Free-download capacities exhausted.") - self.retry(max_tries=24, wait_time=5 * 60) + self.logError(_("Free-download capacities exhausted")) + self.retry(24, 5 * 60) m = re.search(r"Current waiting period: <span>(\d+)</span> seconds", self.html) if m is None: - self.fail("File not downloadable for free users") + self.fail(_("File not downloadable for free users")) self.setWait(int(m.group(1))) - js = self.load("http://uploaded.net/js/download.js", decode=True) - - challengeId = re.search(r'Recaptcha\.create\("([^"]+)', js) + self.html = self.load("http://uploaded.net/js/download.js", decode=True) url = "http://uploaded.net/io/ticket/captcha/%s" % self.fileID downloadURL = "" - for _ in xrange(5): - re_captcha = ReCaptcha(self) - challenge, result = re_captcha.challenge(challengeId.group(1)) + recaptcha = ReCaptcha(self) + + for _i in xrange(5): + challenge, result = recaptcha.challenge() options = {"recaptcha_challenge_field": challenge, "recaptcha_response_field": result} self.wait() @@ -211,29 +214,28 @@ class UploadedTo(Hoster): self.logDebug("Result: %s" % result) if "limit-size" in result: - self.fail("File too big for free download") + self.fail(_("File too big for free download")) elif "limit-slot" in result: # Temporary restriction so just wait a bit self.setWait(30 * 60, True) self.wait() self.retry() elif "limit-parallel" in result: - self.fail("Cannot download in parallel") - elif self.DL_LIMIT_PATTERN in result: # limit-dl + self.fail(_("Cannot download in parallel")) + elif "limit-dl" in result or self.DL_LIMIT_PATTERN in result: # limit-dl self.setWait(3 * 60 * 60, True) self.wait() self.retry() elif '"err":"captcha"' in result: - self.logError("captcha is disabled") self.invalidCaptcha() elif "type:'download'" in result: self.correctCaptcha() downloadURL = re.search("url:'([^']+)", result).group(1) break else: - self.fail("Unknown error '%s'" % result) + self.error(_("Unknown error: %s") % result) if not downloadURL: - self.fail("No Download url retrieved/all captcha attempts failed") + self.fail(_("No Download url retrieved/all captcha attempts failed")) self.download(downloadURL, disposition=True) check = self.checkDownload({"limit-dl": self.DL_LIMIT_PATTERN}) |