[^<]+)'
    FILE_SIZE_PATTERN = r'\s*File Size:\s*(?P[0-9.]+)(?P[kKMG])i?B\s*
'
    FILE_OFFLINE_PATTERN = r'Sorry, the file you requested is not available.
'
    CAPTCHA_PATTERN = r''
    USER_CAPTCHA_PATTERN = r' | '
        
    def handleFree(self):
        params = {}
        for i in range(3):
            found = re.search(self.DOWNLOAD_URL_PATTERN, self.html)
            if found:
                if params.has_key('captcha_hash'): self.correctCaptcha()
                download_url = found.group(1)
                break
            found = re.search(self.CAPTCHA_PATTERN, self.html)
            if found:
                if params.has_key('captcha_hash'): self.invalidCaptcha()
                captcha_url1 = "http://www.sendspace.com/" + found.group(1)
                found = re.search(self.USER_CAPTCHA_PATTERN, self.html)
                captcha_url2 = "http://www.sendspace.com/" + found.group(1)
                params = {'captcha_hash' : found.group(2),
                          'captcha_submit': 'Verify',
                          'captcha_answer': self.decryptCaptcha(captcha_url1) + " " + self.decryptCaptcha(captcha_url2)
                         }
            else:
                params = {'download': "Regular Download"}
            self.logDebug(params)
            self.html = self.load(self.pyfile.url, post = params)
        else:
            self.fail("Download link not found")
        self.logDebug("Download URL: %s" % download_url)
        self.download(download_url)
create_getInfo(SendspaceCom) |