# -*- coding: utf-8 -*- import re from module.plugins.internal.CaptchaService import ReCaptcha from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class CrockoCom(SimpleHoster): __name__ = "CrockoCom" __type__ = "hoster" __version__ = "0.16" __pattern__ = r'http://(?:www\.)?(crocko|easy-share).com/\w+' __description__ = """Crocko hoster plugin""" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] FILE_NAME_PATTERN = r'Download:\s*(?P.*)' FILE_SIZE_PATTERN = r'(?P[^<]+)' OFFLINE_PATTERN = r"

Sorry,
the page you're looking for
isn't here.

|File not found" CAPTCHA_URL_PATTERN = re.compile(r"u='(/file_contents/captcha/\w+)';\s*w='(\d+)';") FORM_PATTERN = r'
(.*?)
' FORM_INPUT_PATTERN = r']* name="?([^" ]+)"? value="?([^" ]+)"?[^>]*>' FILE_NAME_REPLACEMENTS = [(r'<[^>]*>', '')] def handleFree(self): if "You need Premium membership to download this file." in self.html: self.fail("You need Premium membership to download this file.") for _ in xrange(5): m = re.search(self.CAPTCHA_URL_PATTERN, self.html) if m: url, wait_time = 'http://crocko.com' + m.group(1), m.group(2) self.wait(wait_time) self.html = self.load(url) else: break recaptcha = ReCaptcha(self) captcha_key = recaptcha.detect_key() if captcha_key is None: self.parseError("ReCaptcha captcha key not found") m = re.search(self.FORM_PATTERN, self.html, re.DOTALL) if m is None: self.parseError('ACTION') action, form = m.groups() inputs = dict(re.findall(self.FORM_INPUT_PATTERN, form)) for _ in xrange(5): inputs['recaptcha_challenge_field'], inputs['recaptcha_response_field'] = recaptcha.challenge(captcha_key) self.download(action, post=inputs) check = self.checkDownload({ "captcha_err": recaptcha.KEY_AJAX_PATTERN }) if check == "captcha_err": self.invalidCaptcha() else: break else: self.fail('No valid captcha solution received') getInfo = create_getInfo(CrockoCom)