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

Class SolveMedia

module/plugins/captcha/SolveMedia.py:9–99  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7
8
9class SolveMedia(CaptchaService):
10 __name__ = "SolveMedia"
11 __type__ = "captcha"
12 __version__ = "0.22"
13 __status__ = "testing"
14
15 __description__ = """SolveMedia captcha service plugin"""
16 __license__ = "GPLv3"
17 __authors__ = [("pyLoad Team", "admin@pyload.org")]
18
19 KEY_PATTERN = r'api(?:-secure)?\.solvemedia\.com/papi/challenge\.(?:no)?script\?k=(.+?)["\']'
20
21 def detect_key(self, data=None):
22 html = data or self.retrieve_data()
23
24 m = re.search(self.KEY_PATTERN, html)
25 if m is not None:
26 self.key = m.group(1).strip()
27 self.log_debug("Key: %s" % self.key)
28 return self.key
29 else:
30 self.log_debug("Key pattern not found")
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",

Callers 9

handle_captchaMethod · 0.90
handle_captchaMethod · 0.90
decryptMethod · 0.90
handle_captchaMethod · 0.90
handle_freeMethod · 0.90
handle_freeMethod · 0.90
handle_freeMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected