diff options
| author | 2011-10-05 12:34:17 +0200 | |
|---|---|---|
| committer | 2011-10-05 12:34:17 +0200 | |
| commit | 57b1f1557fab97555dada2a3f99145a50405f955 (patch) | |
| tree | 84ee63f7b854e92964700f9ea329b5407ca19657 /module/plugins | |
| parent | hoster plugin fixes; new plugins: mediafire, sendspace (diff) | |
| download | pyload-57b1f1557fab97555dada2a3f99145a50405f955.tar.xz | |
closed #161
Diffstat (limited to 'module/plugins')
| -rw-r--r-- | module/plugins/hoster/MediafireCom.py | 60 | 
1 files changed, 29 insertions, 31 deletions
diff --git a/module/plugins/hoster/MediafireCom.py b/module/plugins/hoster/MediafireCom.py index f7c122f40..ae1c13613 100644 --- a/module/plugins/hoster/MediafireCom.py +++ b/module/plugins/hoster/MediafireCom.py @@ -17,7 +17,6 @@  """  import re -from module.common.JsEngine import JsEngine  from module.plugins.Hoster import Hoster  from module.network.RequestFactory import getURL @@ -46,6 +45,7 @@ def getInfo(urls):                  result.append((name, size, 2, url))      yield result +  class MediafireCom(Hoster):      __name__ = "MediafireCom"      __type__ = "hoster" @@ -53,25 +53,25 @@ class MediafireCom(Hoster):      __version__ = "0.2"      __description__ = """Mediafire.com plugin - free only"""      __author_name__ = ("zoidberg") -     +      PAGE1_FUNCTION_PATTERN = r"function %s\(qk,pk1\)\{if[^']*'loadingicon'\);[^;]*; (.*?)eval"      PAGE1_KEY_PATTERN = ";break;}\s*(\w+='';\w+=unescape.*?)eval\("      PAGE1_RESULT_PATTERN = r"(\w+)\('(?P<qk>[^']+)','(?P<pk1>[^']+)'\)"      PAGE1_DIV_PATTERN = r'getElementById\("(\w{32})"\)'      PAGE1_PKR_PATTERN = r"pKr='([^']+)';" -     +      PAGE2_VARS_PATTERN = r'<script language="Javascript"><!--\s*(var.*?unescape.*?)eval\('      PAGE2_DZ_PATTERN = r'break;case 15:(.*)</script>'      PAGE2_LINK_PATTERN = r"(?:if.*</a>\')?(?:eval\(\")?(.*?)eval\("      FINAL_LINK_PATTERN = r'parent.document.getElementById\(\'(\w{32})\'\)\).*?"(http://download[^"]+)" \+(\w+)\+ "([^"]+)">' -     +      FILE_NAME_PATTERN = r'<META NAME="description" CONTENT="([^"]+)"/>'      FILE_SIZE_PATTERN = r'<div style="font-size:14px;padding-top:12px;color:#777;">\(([0-9.]+) (kB|MB|GB)\)</div>'      FILE_OFFLINE_PATTERN = r'class="error_msg_title"> Invalid or Deleted File. </div>' -     +      def process(self, pyfile): -        self.html = self.load(pyfile.url, decode = True, cookies = True) -         +        self.html = self.load(pyfile.url, decode=True) +          try:              pyfile.name = re.search(self.FILE_NAME_PATTERN, self.html).group(1)              found = re.search(self.FILE_SIZE_PATTERN, self.html) @@ -79,52 +79,50 @@ class MediafireCom(Hoster):          except Exception, e:              self.logError(e)              self.retry(3, 0, "Parse error - file info") -     -        self.handleFree(pyfile) -     -    def handleFree(self, pyfile): -        js = JsEngine() -                    + +        self.handleFree() + +    def handleFree(self):          found = re.search(self.PAGE1_KEY_PATTERN, self.html)          if found: -            result = js.eval(found.group(1)) -            found = re.search(self.PAGE1_RESULT_PATTERN, result)    +            result = self.js.eval(found.group(1)) +            found = re.search(self.PAGE1_RESULT_PATTERN, result)          else:              self.fail("Parse error - javascript") -         -        param_dict = found.groupdict()             + +        param_dict = found.groupdict()          param_dict['r'] = re.search(self.PAGE1_PKR_PATTERN, self.html).group(1)          self.logDebug(param_dict)          key_func = found.group(1)          self.logDebug("KEY_FUNC: %s" % key_func) -         +          found = re.search(self.PAGE1_FUNCTION_PATTERN % key_func, self.html) -        result = js.eval(found.group(1)) -        key_div = found = re.search(self.PAGE1_DIV_PATTERN, result).group(1) +        result = self.js.eval(found.group(1)) +        key_div = re.search(self.PAGE1_DIV_PATTERN, result).group(1)          self.logDebug("KEY_DIV: %s" % key_div) -         -        self.html = self.load("http://www.mediafire.com/dynamic/download.php", get = param_dict, cookies = True) -        result = js.eval(re.search(self.PAGE2_VARS_PATTERN, self.html).group(1)) + +        self.html = self.load("http://www.mediafire.com/dynamic/download.php", get=param_dict) +        result = self.js.eval(re.search(self.PAGE2_VARS_PATTERN, self.html).group(1))          var_list = dict(re.findall("([^=]+)='([^']+)';", result)) -         +          page2_dz = re.search(self.PAGE2_DZ_PATTERN, self.html, re.DOTALL).group(1) -         +          final_link = None          for link_enc in re.finditer(self.PAGE2_LINK_PATTERN, page2_dz):              #self.logDebug("LINK_ENC: %s..." % link_enc.group(1)[:20])              try: -                link_dec = js.eval(link_enc.group(1).replace(r"\'",r"'"))                 +                link_dec = self.js.eval(link_enc.group(1).replace(r"\'", r"'"))              except:                  self.logError("Unable to decrypt link %s" % link_enc.group(1)[:20]) -                self.logDebug(link_enc.group(1).replace(r"\'",r"'")) +                self.logDebug(link_enc.group(1).replace(r"\'", r"'"))                  continue -                     +              found = re.search(self.FINAL_LINK_PATTERN, link_dec)              if found and found.group(1) == key_div:                  final_link = found.group(2) + var_list[found.group(3)] + found.group(4) -                break;            +                break          else:              self.fail("Final link not found") -             +          self.logDebug("FINAL LINK: %s" % final_link) -        self.download(final_link, cookies=True)
\ No newline at end of file +        self.download(final_link)
\ No newline at end of file  | 
