diff options
Diffstat (limited to 'module/plugins/hoster/EasybytezCom.py')
-rw-r--r-- | module/plugins/hoster/EasybytezCom.py | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/module/plugins/hoster/EasybytezCom.py b/module/plugins/hoster/EasybytezCom.py index dac35b1d3..3ee2e9ba5 100644 --- a/module/plugins/hoster/EasybytezCom.py +++ b/module/plugins/hoster/EasybytezCom.py @@ -24,7 +24,7 @@ class EasybytezCom(SimpleHoster): __name__ = "EasybytezCom" __type__ = "hoster" __pattern__ = r"http://(?:\w*\.)?easybytez.com/(\w+).*" - __version__ = "0.03" + __version__ = "0.04" __description__ = """easybytez.com""" __author_name__ = ("zoidberg") __author_mail__ = ("zoidberg@mujmail.cz") @@ -33,22 +33,26 @@ class EasybytezCom(SimpleHoster): FILE_NAME_PATTERN = r'<input type="hidden" name="fname" value="(?P<N>[^"]+)"' FILE_SIZE_PATTERN = r'You have requested <font color="red">[^<]+</font> \((?P<S>[^<]+)\)</font>' + FILE_INFO_PATTERN = r'<tr><td align=right><b>Filename:</b></td><td nowrap>(?P<N>[^<]+)</td></tr>\s*.*?<small>\((?P<S>[^<]+)\)</small>' FILE_OFFLINE_PATTERN = r'<h2>File Not Found</h2>' - FORM_INPUT_PATTERN = r'<input[^>]* name="([^"]+)" value="([^"]*)">' + FORM_INPUT_PATTERN = r'<input[^>]* name="([^"]+)"[^>]*value="([^"]*)"' WAIT_PATTERN = r'<span id="countdown_str">[^>]*>(\d+)</span> seconds</span>' DIRECT_LINK_PATTERN = r'(http://\w+\.easybytez\.com/files/\d+/\w+/[^"<]+)' - URL_FORM_PATTERN = r'<form name="url"[^>]*action="([^"]+)(.*?)</form>' + FORM_PATTERN = r'<form name=["\']?%s[^>]*action=["\']?([^"\' ]+)(.*?)</form>' OVR_DOWNLOAD_LINK_PATTERN = r'<h2>Download Link</h2>\s*<textarea[^>]*>([^<]+)' OVR_KILL_LINK_PATTERN = r'<h2>Delete Link</h2>\s*<textarea[^>]*>([^<]+)' + TEXTAREA_PATTERN = r"<textarea name='([^']+)'>([^<]+)</textarea>" + + HOSTER_URL = "www.easybytez.com" def process(self, pyfile): if not re.match(self.__pattern__, self.pyfile.url): if self.premium: self.handleOverriden() else: - self.fail("Only premium users can download from other hosters with EasyBytes") + self.fail("Only premium users can download from other hosters with %s" % self.HOSTER_URL) else: self.html = self.load(pyfile.url, cookies = False, decode = True) self.file_info = self.getFileInfo() @@ -73,17 +77,36 @@ class EasybytezCom(SimpleHoster): self.downloadLink(found.group(1)) def handleOverriden(self): - self.html = self.load('http://www.easybytez.com/') - action, form = re.search(self.URL_FORM_PATTERN, self.html, re.DOTALL).groups() + self.html = self.load(self.HOSTER_URL) + action, form = re.search(self.FORM_PATTERN % "url", self.html, re.DOTALL).groups() inputs = dict(re.findall(self.FORM_INPUT_PATTERN, form)) - action += "%d&js_on=1&utype=prem&upload_type=url" % int(random()*10**12) + upload_id = "%012d" % int(random()*10**12) + action += upload_id + "&js_on=1&utype=prem&upload_type=url" inputs['tos'] = '1' inputs['url_mass'] = self.pyfile.url + inputs['up1oad_type'] = 'url' + self.logDebug(action, inputs) self.html = self.load(action, post = inputs) + + found = re.search(self.FORM_PATTERN % "F1", self.html, re.S | re.I) + if not found: + self.logDebug(self.html) + self.fail("upload failed") + action, form = found.groups() + + inputs = dict(re.findall(self.TEXTAREA_PATTERN, form)) + if not inputs: parseError('TEXTAREA') + self.logDebug(inputs) + if inputs['st'] == 'OK': + self.html = self.load(action, post = inputs) + else: + self.fail(inputs['st']) + found = re.search(self.OVR_DOWNLOAD_LINK_PATTERN, self.html) if not found: self.parseError('DIRECT LINK (OVR)') - self.downloadLink(found.group(1)) + self.pyfile.url = found.group(1) + self.retry() def downloadLink(self, link): self.logDebug('DIRECT LINK: %s' % link) @@ -92,6 +115,9 @@ class EasybytezCom(SimpleHoster): def getPostParameters(self, premium=False): inputs = dict(re.findall(self.FORM_INPUT_PATTERN, self.html)) self.logDebug(inputs) + + if 'op' in inputs and inputs['op'] == 'download2': return inputs + inputs['referer'] = self.pyfile.url if premium: @@ -111,5 +137,8 @@ class EasybytezCom(SimpleHoster): self.wait() return inputs + + def urlParseFileName(self): + return html_unescape(urlparse(self.pyfile.url).path.split("/")[-1]) getInfo = create_getInfo(EasybytezCom)
\ No newline at end of file |