diff options
Diffstat (limited to 'module/plugins/hoster/MediafireCom.py')
| -rw-r--r-- | module/plugins/hoster/MediafireCom.py | 57 | 
1 files changed, 27 insertions, 30 deletions
| diff --git a/module/plugins/hoster/MediafireCom.py b/module/plugins/hoster/MediafireCom.py index d0878a34d..3ed1199f6 100644 --- a/module/plugins/hoster/MediafireCom.py +++ b/module/plugins/hoster/MediafireCom.py @@ -13,7 +13,7 @@ def replace_eval(js_expr):  def checkHTMLHeader(url):      try: -        for _ in xrange(3): +        for _i in xrange(3):              header = getURL(url, just_header=True)              for line in header.splitlines():                  line = line.lower() @@ -37,44 +37,48 @@ def checkHTMLHeader(url):  def getInfo(urls):      for url in urls:          location, status = checkHTMLHeader(url) +          if status:              file_info = (url, 0, status, url)          else:              file_info = parseFileInfo(MediafireCom, url, getURL(url, decode=True)) +          yield file_info  class MediafireCom(SimpleHoster): -    __name__ = "MediafireCom" -    __type__ = "hoster" -    __version__ = "0.79" +    __name__    = "MediafireCom" +    __type__    = "hoster" +    __version__ = "0.80" -    __pattern__ = r'http://(?:www\.)?mediafire\.com/(file/|(view/?|download.php)?\?)(\w{11}|\w{15})($|/)' +    __pattern__ = r'http://(?:www\.)?mediafire\.com/(file/|(view/?|download\.php)?\?)(\w{11}|\w{15})($|/)'      __description__ = """Mediafire.com hoster plugin""" -    __author_name__ = ("zoidberg", "stickell") -    __author_mail__ = ("zoidberg@mujmail.cz", "l.stickell@yahoo.it") +    __license__     = "GPLv3" +    __authors__     = [("zoidberg", "zoidberg@mujmail.cz"), +                       ("stickell", "l.stickell@yahoo.it")] +      LINK_PATTERN = r'<div class="download_link"[^>]*(?:z-index:(?P<zindex>\d+))?[^>]*>\s*<a href="(?P<href>http://[^"]+)"' -    JS_KEY_PATTERN = r"DoShow\('mfpromo1'\);[^{]*{((\w+)='';.*?)eval\(\2\);" -    JS_ZMODULO_PATTERN = r"\('z-index'\)\) \% (\d+)\)\);" -    SOLVEMEDIA_PATTERN = r'http://api\.solvemedia\.com/papi/challenge\.noscript\?k=([^"]+)' +    JS_KEY_PATTERN = r'DoShow\(\'mfpromo1\'\);[^{]*{((\w+)=\'\';.*?)eval\(\2\);' +    JS_ZMODULO_PATTERN = r'\(\'z-index\'\)\) \% (\d+)\)\);'      PAGE1_ACTION_PATTERN = r'<link rel="canonical" href="([^"]+)"/>'      PASSWORD_PATTERN = r'<form name="form_password"' -    FILE_NAME_PATTERN = r'<META NAME="description" CONTENT="(?P<N>[^"]+)"/>' -    FILE_INFO_PATTERN = r"oFileSharePopup\.ald\('(?P<ID>[^']*)','(?P<N>[^']*)','(?P<S>[^']*)','','(?P<sha256>[^']*)'\)" +    NAME_PATTERN = r'<META NAME="description" CONTENT="(?P<N>[^"]+)"/>' +    INFO_PATTERN = r'oFileSharePopup\.ald\(\'(?P<ID>[^\']*)\',\'(?P<N>[^\']*)\',\'(?P<S>[^\']*)\',\'\',\'(?P<sha256>[^\']*)\'\)'      OFFLINE_PATTERN = r'class="error_msg_title"> Invalid or Deleted File. </div>'      def setup(self):          self.multiDL = False +      def process(self, pyfile):          pyfile.url = re.sub(r'/view/?\?', '/?', pyfile.url)          self.url, result = checkHTMLHeader(pyfile.url) -        self.logDebug('Location (%d): %s' % (result, self.url)) +        self.logDebug("Location (%d): %s" % (result, self.url))          if result == 0:              self.html = self.load(self.url, decode=True) @@ -92,34 +96,27 @@ class MediafireCom(SimpleHoster):              self.multiDL = True              self.download(self.url, disposition=True) +      def handleFree(self):          passwords = self.getPassword().splitlines()          while self.PASSWORD_PATTERN in self.html:              if len(passwords):                  password = passwords.pop(0) -                self.logInfo("Password protected link, trying " + password) +                self.logInfo(_("Password protected link, trying ") + password)                  self.html = self.load(self.url, post={"downloadp": password})              else: -                self.fail("No or incorrect password") +                self.fail(_("No or incorrect password"))          m = re.search(r'kNO = r"(http://.*?)";', self.html)          if m is None: -            self.parseError("Download URL") -        download_url = m.group(1) -        self.logDebug("DOWNLOAD LINK:", download_url) +            self.error(_("No download URL")) +        download_url = m.group(1)          self.download(download_url) +      def checkCaptcha(self): -        for _ in xrange(5): -            m = re.search(self.SOLVEMEDIA_PATTERN, self.html) -            if m: -                captcha_key = m.group(1) -                solvemedia = SolveMedia(self) -                captcha_challenge, captcha_response = solvemedia.challenge(captcha_key) -                self.html = self.load(self.url, post={"adcopy_challenge": captcha_challenge, -                                                      "adcopy_response": captcha_response}, decode=True) -            else: -                break -        else: -            self.fail("No valid recaptcha solution received") +        solvemedia = SolveMedia(self) +        captcha_challenge, captcha_response = solvemedia.challenge() +        self.html = self.load(self.url, post={"adcopy_challenge": captcha_challenge, +                                              "adcopy_response": captcha_response}, decode=True) | 
