MCPcopy Index your code
hub / github.com/pyload/pyload / challenge

Method challenge

module/plugins/captcha/SolveMedia.py:33–92  ·  view source on GitHub ↗
(self, key=None, data=None)

Source from the content-addressed store, hash-verified

31 return None
32
33 def challenge(self, key=None, data=None):
34 key = key or self.retrieve_key(data)
35
36 html = self.pyfile.plugin.load("http://api.solvemedia.com/papi/challenge.noscript",
37 get={'k': key})
38
39 for i in range(1, 11):
40 try:
41 magic = re.search(r'name="magic" value="(.+?)"', html).group(1)
42
43 except AttributeError:
44 self.log_warning(_("Magic pattern not found"))
45 magic = None
46
47 try:
48 challenge = re.search(r'<input type=hidden name="adcopy_challenge" id="adcopy_challenge" value="(.+?)">',
49 html).group(1)
50
51 except AttributeError:
52 self.fail(_("SolveMedia challenge pattern not found"))
53
54 else:
55 self.log_debug("Challenge: %s" % challenge)
56
57 try:
58 result = self.result(
59 "http://api.solvemedia.com/papi/media", challenge)
60
61 except Fail, e:
62 self.log_warning(e, trace=True)
63 self.pyfile.plugin.captcha.invalid()
64 result = None
65
66 html = self.pyfile.plugin.load("http://api.solvemedia.com/papi/verify.noscript",
67 post={'adcopy_response': result,
68 'k': key,
69 'l': "en",
70 't': "img",
71 's': "standard",
72 'magic': magic,
73 'adcopy_challenge': challenge,
74 'ref': self.pyfile.url})
75 try:
76 redirect = re.search(r'URL=(.+?)">', html).group(1)
77
78 except AttributeError:
79 self.fail(_("SolveMedia verify pattern not found"))
80
81 else:
82 if "error" in html:
83 self.log_warning(_("Captcha code was invalid"))
84 self.log_debug("Retry #%d" % i)
85 html = self.pyfile.plugin.load(redirect)
86 else:
87 break
88
89 else:
90 self.fail(_("SolveMedia max retries exceeded"))

Callers 5

handle_captchaMethod · 0.95
handle_captchaMethod · 0.95
handle_captchaMethod · 0.95

Calls 9

resultMethod · 0.95
retrieve_keyMethod · 0.80
log_warningMethod · 0.80
log_debugMethod · 0.80
_Function · 0.50
loadMethod · 0.45
searchMethod · 0.45
failMethod · 0.45
invalidMethod · 0.45

Tested by

no test coverage detected