From dd31ba46735267a8486e1ae0b766c3d350e9a38b Mon Sep 17 00:00:00 2001 From: z00nx Date: Fri, 11 Jan 2013 23:41:33 +1100 Subject: Added CloudzerNet plugin --- module/plugins/hoster/CloudzerNet.py | 65 ++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 module/plugins/hoster/CloudzerNet.py (limited to 'module/plugins') diff --git a/module/plugins/hoster/CloudzerNet.py b/module/plugins/hoster/CloudzerNet.py new file mode 100644 index 000000000..36b3bd79c --- /dev/null +++ b/module/plugins/hoster/CloudzerNet.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +import re +from module.plugins.internal.SimpleHoster import SimpleHoster, parseFileInfo +from module.common.json_layer import json_loads +from module.plugins.ReCaptcha import ReCaptcha +from module.network.RequestFactory import getURL + + +def getInfo(urls): + for url in urls: + header = getURL(url, just_header=True) + if 'Location: http://cloudzer.net/404' in header: + file_info = (url, 0, 1, url) + else: + file_info = parseFileInfo(CloudzerNet, url, getURL(url, decode=True)) + yield file_info + + +class CloudzerNet(SimpleHoster): + __name__ = "CloudzerNet" + __type__ = "hoster" + __pattern__ = r"http://(www\.)?(cloudzer\.net/file/|clz\.to/(file/)?)(?P\w+).*" + __version__ = "0.01" + __description__ = """Cloudzer.net hoster plugin""" + __author_name__ = ("spoob", "mkaay", "gs", "z00nx") + __author_mail__ = ("spoob@pyload.org", "mkaay@mkaay.de", "I-_-I-_-I@web.de", "z00nx0@gmail.com") + + FILE_INFO_PATTERN = ']+>(?P[^<]+)\s+(?P[^<]+)' + WAIT_PATTERN = '' + FILE_OFFLINE_PATTERN = r'Please check the URL for typing errors, respectively' + CAPTCHA_KEY = '6Lcqz78SAAAAAPgsTYF3UlGf2QFQCNuPMenuyHF3' + + def handleFree(self): + found = re.search(self.WAIT_PATTERN, self.html) + seconds = int(found.group(1)) + self.logDebug("Found wait", seconds) + self.setWait(seconds + 1) + self.wait() + response = self.load('http://cloudzer.net/io/ticket/slot/%s' % self.file_info['ID'], post=' ', cookies=True) + self.logDebug("Download slot request response", response) + response = json_loads(response) + if response["succ"] is not True: + self.fail("Unable to get a download slot") + + recaptcha = ReCaptcha(self) + challenge, response = recaptcha.challenge(self.CAPTCHA_KEY) + post_data = {"recaptcha_challenge_field": challenge, "recaptcha_response_field": response} + response = json_loads(self.load('http://cloudzer.net/io/ticket/captcha/%s' % self.file_info['ID'], post=post_data, cookies=True)) + self.logDebug("Captcha check response", response) + self.logDebug("First check") + + if "err" in response: + if response["err"] == "captcha": + self.logDebug("Wrong captcha") + self.invalidCaptcha() + self.retry() + elif "Sie haben die max" in response["err"] or "You have reached the max" in response["err"]: + self.logDebug("Download limit reached, waiting an hour") + self.setWait(3600) + self.wait() + if "type" in response: + if response["type"] == "download": + url = response["url"] + self.logDebug("Download link", url) + self.download(url) -- cgit v1.2.3