diff options
author | Walter Purcaro <vuolter@gmail.com> | 2014-12-10 02:59:27 +0100 |
---|---|---|
committer | Walter Purcaro <vuolter@gmail.com> | 2014-12-10 02:59:27 +0100 |
commit | 58656ab0b1b7f79ee31c38b7675f0587269f014f (patch) | |
tree | 8e4655671759dc50047cbaf3913e9692189f7c18 /module/plugins/hoster | |
parent | Spare code cosmetics (diff) | |
download | pyload-58656ab0b1b7f79ee31c38b7675f0587269f014f.tar.xz |
[CaptchaService] New service AdYouLike + AdsCaptcha detect_key fixup
Diffstat (limited to 'module/plugins/hoster')
-rw-r--r-- | module/plugins/hoster/DlFreeFr.py | 85 |
1 files changed, 3 insertions, 82 deletions
diff --git a/module/plugins/hoster/DlFreeFr.py b/module/plugins/hoster/DlFreeFr.py index 14b74c779..793c81b1c 100644 --- a/module/plugins/hoster/DlFreeFr.py +++ b/module/plugins/hoster/DlFreeFr.py @@ -3,9 +3,9 @@ import pycurl import re -from module.common.json_layer import json_loads from module.network.Browser import Browser from module.network.CookieJar import CookieJar +from module.plugins.internal.CaptchaService import AdYouLike from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo, replace_patterns @@ -33,87 +33,10 @@ class CustomBrowser(Browser): return Browser.load(self, *args, **kwargs) -class AdYouLike: - """ - Class to support adyoulike captcha service - """ - ADYOULIKE_INPUT_PATTERN = r'Adyoulike\.create\((.*?)\);' - ADYOULIKE_CALLBACK = r'Adyoulike\.g\._jsonp_5579316662423138' - ADYOULIKE_CHALLENGE_PATTERN = ADYOULIKE_CALLBACK + r'\((.*?)\)' - - - def __init__(self, plugin, engine="adyoulike"): - self.plugin = plugin - self.engine = engine - - - def challenge(self, html): - adyoulike_data_string = None - m = re.search(self.ADYOULIKE_INPUT_PATTERN, html) - if m: - adyoulike_data_string = m.group(1) - else: - self.plugin.fail("Can't read AdYouLike input data") - - # {"adyoulike":{"key":"P~zQ~O0zV0WTiAzC-iw0navWQpCLoYEP"}, - # "all":{"element_id":"ayl_private_cap_92300","lang":"fr","env":"prod"}} - ayl_data = json_loads(adyoulike_data_string) - - res = self.plugin.load("http://api-ayl.appspot.com/challenge", - get={'key' : ayl_data[self.engine]['key'], - 'env' : ayl_data['all']['env'], - 'callback': self.ADYOULIKE_CALLBACK}) - - m = re.search(self.ADYOULIKE_CHALLENGE_PATTERN, res) - challenge_string = None - if m: - challenge_string = m.group(1) - else: - self.plugin.fail("Invalid AdYouLike challenge") - challenge_data = json_loads(challenge_string) - - return ayl_data, challenge_data - - - def result(self, ayl, challenge): - """ - Adyoulike.g._jsonp_5579316662423138 - ({"translations":{"fr":{"instructions_visual":"Recopiez « Soonnight » ci-dessous :"}}, - "site_under":true,"clickable":true,"pixels":{"VIDEO_050":[],"DISPLAY":[],"VIDEO_000":[],"VIDEO_100":[], - "VIDEO_025":[],"VIDEO_075":[]},"medium_type":"image/adyoulike", - "iframes":{"big":"<iframe src=\"http://www.soonnight.com/campagn.html\" scrolling=\"no\" - height=\"250\" width=\"300\" frameborder=\"0\"></iframe>"},"shares":{},"id":256, - "token":"e6QuI4aRSnbIZJg02IsV6cp4JQ9~MjA1","formats":{"small":{"y":300,"x":0,"w":300,"h":60}, - "big":{"y":0,"x":0,"w":300,"h":250},"hover":{"y":440,"x":0,"w":300,"h":60}}, - "tid":"SqwuAdxT1EZoi4B5q0T63LN2AkiCJBg5"}) - """ - response = None - try: - instructions_visual = challenge['translations'][ayl['all']['lang']]['instructions_visual'] - m = re.search(u".*«(.*)».*", instructions_visual) - if m: - response = m.group(1).strip() - else: - self.plugin.fail("Can't parse instructions visual") - except KeyError: - self.plugin.fail("No instructions visual") - - #TODO: Supports captcha - - if not response: - self.plugin.fail("AdYouLike result failed") - - return {"_ayl_captcha_engine" : self.engine, - "_ayl_env" : ayl['all']['env'], - "_ayl_tid" : challenge['tid'], - "_ayl_token_challenge": challenge['token'], - "_ayl_response" : response} - - class DlFreeFr(SimpleHoster): __name__ = "DlFreeFr" __type__ = "hoster" - __version__ = "0.25" + __version__ = "0.26" __pattern__ = r'http://(?:www\.)?dl\.free\.fr/(\w+|getfile\.pl\?file=/\w+)' @@ -169,9 +92,7 @@ class DlFreeFr(SimpleHoster): action, inputs = self.parseHtmlForm('action="getfile.pl"') adyoulike = AdYouLike(self) - ayl, challenge = adyoulike.challenge(self.html) - result = adyoulike.result(ayl, challenge) - inputs.update(result) + inputs.update(adyoulike.challenge()) self.load("http://dl.free.fr/getfile.pl", post=inputs) headers = self.getLastHeaders() |