From 8922d93070ae079a02e14e60b6ac20da64fc23d3 Mon Sep 17 00:00:00 2001 From: Jeix Date: Wed, 1 Dec 2010 19:19:48 +0100 Subject: fixed Megaupload, added Uploading.com beta, closed #177 #182 --- module/plugins/Plugin.py | 4 +- module/plugins/hoster/MegauploadCom.py | 5 ++- module/plugins/hoster/UploadingCom.py | 80 ++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 module/plugins/hoster/UploadingCom.py (limited to 'module/plugins') diff --git a/module/plugins/Plugin.py b/module/plugins/Plugin.py index d642df728..34c06539a 100644 --- a/module/plugins/Plugin.py +++ b/module/plugins/Plugin.py @@ -278,11 +278,11 @@ class Plugin(object): return result - def load(self, url, get={}, post={}, ref=True, cookies=True, just_header=False): + def load(self, url, get={}, post={}, ref=True, cookies=True, just_header=False, no_post_encode=False, raw_cookies={}): """ returns the content loaded """ if self.pyfile.abort: raise Abort - res = self.req.load(url, get, post, ref, cookies, just_header) + res = self.req.load(url, get, post, ref, cookies, just_header, no_post_encode, raw_cookies) if self.core.debug: from inspect import currentframe frame = currentframe() diff --git a/module/plugins/hoster/MegauploadCom.py b/module/plugins/hoster/MegauploadCom.py index 45711191e..92daedec2 100644 --- a/module/plugins/hoster/MegauploadCom.py +++ b/module/plugins/hoster/MegauploadCom.py @@ -101,8 +101,9 @@ class MegauploadCom(Hoster): self.download(pyfile.url) def download_html(self): - for i in range(5): + for i in range(3): self.html[0] = self.load(self.pyfile.url) + self.html[1] = self.html[0] # in case of no captcha, this already contains waiting time, etc count = 0 if "The file that you're trying to download is larger than 1 GB" in self.html[0]: self.fail(_("You need premium to download files larger than 1 GB")) @@ -165,7 +166,7 @@ class MegauploadCom(Hoster): def get_file_url(self): - file_url_pattern = 'id="downloadlink">The requested file is not found', self.html[0]) is not None: + self.offline() + + self.pyfile.name = re.search(r'Download (.*?) for free on uploading.com', self.html[0]).group(1) + + if self.account: + url = self.handlePremium() + else: + url = self.handleFree() + + self.download(url) + + def handlePremium(self): + pass + + def handleFree(self): + self.code = re.search(r'name="code" value="(.*?)"', self.html[0]).group(1) + self.fileid = re.search(r'name="file_id" value="(.*?)"', self.html[0]).group(1) + + postData = {} + postData['action'] = 'second_page' + postData['code'] = self.code + postData['file_id'] = self.fileid + + self.html[1] = self.load(self.pyfile.url, post=postData) + + wait_time = re.search(r'timead_counter">(\d+)<', self.html[1]) + if not wait_time: + wait_time = re.search(r'start_timer\((\d+)\)', self.html[1]) + + if wait_time: + wait_time = int(wait_time.group(1)) + self.log.info("%s: Waiting %d seconds." % (self.__name__, wait_time)) + self.setWait(wait_time) + self.wait() + + + postData = {} + postData['action'] = 'get_link' + postData['code'] = self.code + postData['pass'] = 'undefined' + + if r'var captcha_src' in self.html[1]: + captcha_url = "http://uploading.com/general/captcha/download%s/?ts=%d" % (self.fileid, time()*1000) + postData['captcha_code'] = self.decryptCaptcha(captcha_url) + + self.html[2] = self.load('http://uploading.com/files/get/?JsHttpRequest=%d-xml' % (time()*1000), post=postData) + url = re.search(r'"link"\s*:\s*"(.*?)"', self.html[2]) + if url: + return url.group(1).replace("\\/", "/") + + raise Exception("Plugin defect.") -- cgit v1.2.3