summaryrefslogtreecommitdiffstats
path: root/module/plugins/hoster/EasybytezCom.py
diff options
context:
space:
mode:
authorGravatar zoidberg10 <zoidberg@mujmail.cz> 2012-01-05 01:12:23 +0100
committerGravatar zoidberg10 <zoidberg@mujmail.cz> 2012-01-05 01:12:23 +0100
commit503cff86eb5e5b902291f5995838f1facd84319c (patch)
tree2ca80269b7b79b2e9e2cf9b771f6673cb4f627b4 /module/plugins/hoster/EasybytezCom.py
parentUpdateManager fix (diff)
downloadpyload-503cff86eb5e5b902291f5995838f1facd84319c.tar.xz
merge in plugin updates
Diffstat (limited to 'module/plugins/hoster/EasybytezCom.py')
-rw-r--r--module/plugins/hoster/EasybytezCom.py100
1 files changed, 92 insertions, 8 deletions
diff --git a/module/plugins/hoster/EasybytezCom.py b/module/plugins/hoster/EasybytezCom.py
index 5858dd935..3ee2e9ba5 100644
--- a/module/plugins/hoster/EasybytezCom.py
+++ b/module/plugins/hoster/EasybytezCom.py
@@ -18,12 +18,13 @@
import re
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
+from random import random
class EasybytezCom(SimpleHoster):
__name__ = "EasybytezCom"
__type__ = "hoster"
__pattern__ = r"http://(?:\w*\.)?easybytez.com/(\w+).*"
- __version__ = "0.01"
+ __version__ = "0.04"
__description__ = """easybytez.com"""
__author_name__ = ("zoidberg")
__author_mail__ = ("zoidberg@mujmail.cz")
@@ -32,29 +33,112 @@ 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+/[^"<]+)'
+ 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 %s" % self.HOSTER_URL)
+ else:
+ self.html = self.load(pyfile.url, cookies = False, decode = True)
+ self.file_info = self.getFileInfo()
+
+ header = self.load(self.pyfile.url, just_header = True, cookies = True)
+ self.logDebug(header)
+
+ if 'location' in header and re.match(self.DIRECT_LINK_PATTERN, header['location']):
+ self.downloadLink(header['location'])
+ elif self.premium:
+ self.handlePremium()
+ else:
+ self.handleFree()
+
def handleFree(self):
self.download(self.pyfile.url, post = self.getPostParameters(), ref = True, cookies = True)
+
+ def handlePremium(self):
+ self.html = self.load(self.pyfile.url, post = self.getPostParameters(premium=True))
+ found = re.search(self.DIRECT_LINK_PATTERN, self.html)
+ if not found: self.parseError('DIRECT LINK')
+ self.downloadLink(found.group(1))
+
+ def handleOverriden(self):
+ 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))
+ 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)
- def getPostParameters(self):
+ 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.pyfile.url = found.group(1)
+ self.retry()
+
+ def downloadLink(self, link):
+ self.logDebug('DIRECT LINK: %s' % link)
+ self.download(link)
+
+ def getPostParameters(self, premium=False):
inputs = dict(re.findall(self.FORM_INPUT_PATTERN, self.html))
self.logDebug(inputs)
- inputs['method_free'] = "Free Download"
+
+ if 'op' in inputs and inputs['op'] == 'download2': return inputs
+
inputs['referer'] = self.pyfile.url
- if 'method_premium' in inputs: del inputs['method_premium']
+
+ if premium:
+ inputs['method_premium'] = "Premium Download"
+ if 'method_free' in inputs: del inputs['method_free']
+ else:
+ inputs['method_free'] = "Free Download"
+ if 'method_premium' in inputs: del inputs['method_premium']
self.html = self.load(self.pyfile.url, post = inputs, ref = True, cookies = True)
inputs = dict(re.findall(self.FORM_INPUT_PATTERN, self.html))
self.logDebug(inputs)
- found = re.search(self.WAIT_PATTERN, self.html)
- self.setWait(int(found.group(1)) + 1 if found else 60)
- self.wait()
+ if not premium:
+ found = re.search(self.WAIT_PATTERN, self.html)
+ self.setWait(int(found.group(1)) + 1 if found else 60)
+ 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