summaryrefslogtreecommitdiffstats
path: root/module/plugins/hoster/EasybytezCom.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/hoster/EasybytezCom.py')
-rw-r--r--module/plugins/hoster/EasybytezCom.py45
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