summaryrefslogtreecommitdiffstats
path: root/module
diff options
context:
space:
mode:
Diffstat (limited to 'module')
-rw-r--r--module/plugins/captcha/AdYouLike.py (renamed from module/plugins/internal/AdYouLike.py)0
-rw-r--r--module/plugins/captcha/AdsCaptcha.py (renamed from module/plugins/internal/AdsCaptcha.py)2
-rw-r--r--module/plugins/captcha/GigasizeCom.py2
-rw-r--r--module/plugins/captcha/LinksaveIn.py2
-rw-r--r--module/plugins/captcha/NetloadIn.py2
-rw-r--r--module/plugins/captcha/ReCaptcha.py (renamed from module/plugins/internal/ReCaptcha.py)6
-rw-r--r--module/plugins/captcha/ShareonlineBiz.py2
-rw-r--r--module/plugins/captcha/SolveMedia.py (renamed from module/plugins/internal/SolveMedia.py)2
-rw-r--r--module/plugins/crypter/DlProtectCom.py2
-rw-r--r--module/plugins/crypter/FilecryptCc.py8
-rw-r--r--module/plugins/crypter/LinkCryptWs.py2
-rw-r--r--module/plugins/crypter/LinkdecrypterCom.py2
-rw-r--r--module/plugins/crypter/LixIn.py2
-rw-r--r--module/plugins/crypter/NCryptIn.py6
-rw-r--r--module/plugins/crypter/RelinkUs.py2
-rw-r--r--module/plugins/crypter/SafelinkingNet.py2
-rw-r--r--module/plugins/crypter/ShareLinksBiz.py2
-rw-r--r--module/plugins/hoster/BezvadataCz.py2
-rw-r--r--module/plugins/hoster/BitshareCom.py2
-rw-r--r--module/plugins/hoster/CatShareNet.py2
-rw-r--r--module/plugins/hoster/CrockoCom.py2
-rw-r--r--module/plugins/hoster/CzshareCom.py2
-rw-r--r--module/plugins/hoster/DateiTo.py2
-rw-r--r--module/plugins/hoster/DepositfilesCom.py2
-rw-r--r--module/plugins/hoster/ExtabitCom.py2
-rw-r--r--module/plugins/hoster/FastshareCz.py2
-rw-r--r--module/plugins/hoster/FileSharkPl.py2
-rw-r--r--module/plugins/hoster/FileboomMe.py2
-rw-r--r--module/plugins/hoster/FilecloudIo.py2
-rw-r--r--module/plugins/hoster/FiledropperCom.py2
-rw-r--r--module/plugins/hoster/FilepostCom.py2
-rw-r--r--module/plugins/hoster/FilerNet.py2
-rw-r--r--module/plugins/hoster/FileserveCom.py2
-rw-r--r--module/plugins/hoster/FreakshareCom.py2
-rw-r--r--module/plugins/hoster/GigapetaCom.py2
-rw-r--r--module/plugins/hoster/IfolderRu.py2
-rw-r--r--module/plugins/hoster/Keep2ShareCc.py4
-rw-r--r--module/plugins/hoster/KingfilesNet.py2
-rw-r--r--module/plugins/hoster/LetitbitNet.py2
-rw-r--r--module/plugins/hoster/LoadTo.py2
-rw-r--r--module/plugins/hoster/LuckyShareNet.py2
-rw-r--r--module/plugins/hoster/MediafireCom.py4
-rw-r--r--module/plugins/hoster/MegasharesCom.py2
-rw-r--r--module/plugins/hoster/NarodRu.py2
-rw-r--r--module/plugins/hoster/NitroflareCom.py2
-rw-r--r--module/plugins/hoster/OboomCom.py2
-rw-r--r--module/plugins/hoster/RapidgatorNet.py6
-rw-r--r--module/plugins/hoster/RapiduNet.py2
-rw-r--r--module/plugins/hoster/SendspaceCom.py2
-rw-r--r--module/plugins/hoster/ShareonlineBiz.py2
-rw-r--r--module/plugins/hoster/TurbobitNet.py4
-rw-r--r--module/plugins/hoster/UlozTo.py4
-rw-r--r--module/plugins/hoster/UloziskoSk.py2
-rw-r--r--module/plugins/hoster/UnibytesCom.py2
-rw-r--r--module/plugins/hoster/UploadableCh.py2
-rw-r--r--module/plugins/hoster/UploadedTo.py2
-rw-r--r--module/plugins/hoster/UploadheroCom.py2
-rw-r--r--module/plugins/hoster/UpstoreNet.py2
-rw-r--r--module/plugins/hoster/ZippyshareCom.py2
-rw-r--r--module/plugins/internal/Captcha.py89
-rw-r--r--module/plugins/internal/OCR.py4
-rw-r--r--module/plugins/internal/XFSHoster.py6
62 files changed, 124 insertions, 117 deletions
diff --git a/module/plugins/internal/AdYouLike.py b/module/plugins/captcha/AdYouLike.py
index d14babb51..d14babb51 100644
--- a/module/plugins/internal/AdYouLike.py
+++ b/module/plugins/captcha/AdYouLike.py
diff --git a/module/plugins/internal/AdsCaptcha.py b/module/plugins/captcha/AdsCaptcha.py
index f487042e2..da0c531be 100644
--- a/module/plugins/internal/AdsCaptcha.py
+++ b/module/plugins/captcha/AdsCaptcha.py
@@ -54,7 +54,7 @@ class AdsCaptcha(CaptchaService):
def result(self, server, challenge):
- result = self.decrypt_image("%sChallenge.aspx" % server,
+ result = self.decrypt("%sChallenge.aspx" % server,
get={'cid': challenge, 'dummy': random.random()},
cookies=True,
input_type="jpg")
diff --git a/module/plugins/captcha/GigasizeCom.py b/module/plugins/captcha/GigasizeCom.py
index 19ad9d680..f71266b23 100644
--- a/module/plugins/captcha/GigasizeCom.py
+++ b/module/plugins/captcha/GigasizeCom.py
@@ -14,7 +14,7 @@ class GigasizeCom(OCR):
__authors__ = [("pyLoad Team", "admin@pyload.org")]
- def get_captcha(self, image):
+ def recognize(self, image):
self.load_image(image)
self.threshold(2.8)
self.run_tesser(True, False, False, True)
diff --git a/module/plugins/captcha/LinksaveIn.py b/module/plugins/captcha/LinksaveIn.py
index 68704f21d..0a4731375 100644
--- a/module/plugins/captcha/LinksaveIn.py
+++ b/module/plugins/captcha/LinksaveIn.py
@@ -137,7 +137,7 @@ class LinksaveIn(OCR):
self.pixels = self.image.load()
- def get_captcha(self, image):
+ def recognize(self, image):
self.load_image(image)
bg = self.get_bg()
self.substract_bg(bg)
diff --git a/module/plugins/captcha/NetloadIn.py b/module/plugins/captcha/NetloadIn.py
index b6ba2b6e9..56b7c9196 100644
--- a/module/plugins/captcha/NetloadIn.py
+++ b/module/plugins/captcha/NetloadIn.py
@@ -14,7 +14,7 @@ class NetloadIn(OCR):
__authors__ = [("pyLoad Team", "admin@pyload.org")]
- def get_captcha(self, image):
+ def recognize(self, image):
self.load_image(image)
self.to_greyscale()
self.clean(3)
diff --git a/module/plugins/internal/ReCaptcha.py b/module/plugins/captcha/ReCaptcha.py
index b4f9ef1eb..8f9755961 100644
--- a/module/plugins/internal/ReCaptcha.py
+++ b/module/plugins/captcha/ReCaptcha.py
@@ -85,7 +85,7 @@ class ReCaptcha(CaptchaService):
get={'c': challenge},
cookies=True,
input_type="jpg",
- try_ocr=False)
+ ocr=False)
self.log_debug("Result: %s" % result)
@@ -170,10 +170,10 @@ class ReCaptcha(CaptchaService):
self.log_debug("Token #3: %s" % token3.group(1))
millis_captcha_loading = int(round(time.time() * 1000))
- captcha_response = self.decrypt_image("https://www.google.com/recaptcha/api2/payload",
+ captcha_response = self.decrypt("https://www.google.com/recaptcha/api2/payload",
get={'c':token3.group(1), 'k':key},
cookies=True,
- try_ocr=False)
+ ocr=False)
response = b64encode('{"response":"%s"}' % captcha_response)
self.log_debug("Result: %s" % response)
diff --git a/module/plugins/captcha/ShareonlineBiz.py b/module/plugins/captcha/ShareonlineBiz.py
index 7f25f164d..98994b121 100644
--- a/module/plugins/captcha/ShareonlineBiz.py
+++ b/module/plugins/captcha/ShareonlineBiz.py
@@ -14,7 +14,7 @@ class ShareonlineBiz(OCR):
__authors__ = [("RaNaN", "RaNaN@pyload.org")]
- def get_captcha(self, image):
+ def recognize(self, image):
self.load_image(image)
self.to_greyscale()
self.image = self.image.resize((160, 50))
diff --git a/module/plugins/internal/SolveMedia.py b/module/plugins/captcha/SolveMedia.py
index ce4ebb007..cbac2dec2 100644
--- a/module/plugins/internal/SolveMedia.py
+++ b/module/plugins/captcha/SolveMedia.py
@@ -95,7 +95,7 @@ class SolveMedia(CaptchaService):
def result(self, server, challenge):
- result = self.decrypt_image(server,
+ result = self.decrypt(server,
get={'c': challenge},
cookies=True,
input_type="gif")
diff --git a/module/plugins/crypter/DlProtectCom.py b/module/plugins/crypter/DlProtectCom.py
index 4626af105..05efaca97 100644
--- a/module/plugins/crypter/DlProtectCom.py
+++ b/module/plugins/crypter/DlProtectCom.py
@@ -54,7 +54,7 @@ class DlProtectCom(SimpleCrypter):
if "Security Code" in self.html:
m = re.search(r'/captcha\.php\?key=(.+?)"', self.html)
if m:
- captcha_code = self.captcha.decrypt_image("http://www.dl-protect.com/captcha.php?key=" + m.group(1), input_type="gif")
+ captcha_code = self.captcha.decrypt("http://www.dl-protect.com/captcha.php?key=" + m.group(1), input_type="gif")
post_req['secure'] = captcha_code
self.html = self.load(self.pyfile.url, post=post_req)
diff --git a/module/plugins/crypter/FilecryptCc.py b/module/plugins/crypter/FilecryptCc.py
index 23636f3b7..3d0d089a7 100644
--- a/module/plugins/crypter/FilecryptCc.py
+++ b/module/plugins/crypter/FilecryptCc.py
@@ -10,7 +10,7 @@ import urlparse
from Crypto.Cipher import AES
from module.plugins.internal.Crypter import Crypter
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
class FilecryptCc(Crypter):
@@ -92,16 +92,16 @@ class FilecryptCc(Crypter):
if m: #: Normal captcha
self.log_debug("Captcha-URL: %s" % m.group(1))
- captcha_code = self.captcha.decrypt_image(urlparse.urljoin(self.base_url, m.group(1)),
+ captcha_code = self.captcha.decrypt(urlparse.urljoin(self.base_url, m.group(1)),
input_type="gif",
- try_ocr=False)
+ ocr=False)
self.site_with_links = self.load(self.pyfile.url,
post={'recaptcha_response_field': captcha_code})
elif m2: #: Circle captcha
self.log_debug("Captcha-URL: %s" % m2.group(1))
- captcha_code = self.captcha.decrypt_image('%s%s?c=abc' %(self.base_url, m2.group(1)),
+ captcha_code = self.captcha.decrypt('%s%s?c=abc' %(self.base_url, m2.group(1)),
output_type='positional')
self.site_with_links = self.load(self.pyfile.url,
diff --git a/module/plugins/crypter/LinkCryptWs.py b/module/plugins/crypter/LinkCryptWs.py
index baa440c51..8132db713 100644
--- a/module/plugins/crypter/LinkCryptWs.py
+++ b/module/plugins/crypter/LinkCryptWs.py
@@ -133,7 +133,7 @@ class LinkCryptWs(Crypter):
def unlock_captcha_protection(self):
captcha_url = re.search(r'<form.*?id\s*?=\s*?"captcha"[^>]*?>.*?<\s*?input.*?src="(.+?)"', self.html, re.I | re.S).group(1)
- captcha_code = self.captcha.decrypt_image(captcha_url, input_type="gif", output_type='positional', try_ocr=False)
+ captcha_code = self.captcha.decrypt(captcha_url, input_type="gif", output_type='positional', ocr=False)
self.html = self.load(self.pyfile.url, post={'x': captcha_code[0], 'y': captcha_code[1]})
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index 1936425f2..de1172c6c 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -52,7 +52,7 @@ class LinkdecrypterCom(Crypter):
msg = m.group(1) if m else ""
self.log_info(_("Captcha protected link"), result_type, msg)
- captcha = self.captcha.decrypt_image(captcha_url, output_type=result_type)
+ captcha = self.captcha.decrypt(captcha_url, output_type=result_type)
if result_type == "positional":
captcha = "%d|%d" % captcha
self.html = self.load('http://linkdecrypter.com/', post={'captcha': captcha})
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index 67037ae79..24b04a3e9 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -48,7 +48,7 @@ class LixIn(Crypter):
m = re.search(self.CAPTCHA_PATTERN, self.html)
if m:
self.log_debug("Trying captcha")
- captcharesult = self.captcha.decrypt_image(urlparse.urljoin("http://lix.in/", m.group(1)))
+ captcharesult = self.captcha.decrypt(urlparse.urljoin("http://lix.in/", m.group(1)))
self.html = self.load(url,
post={'capt': captcharesult, 'submit': "submit", 'tiny': id})
else:
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index bc3f6624f..62b11612c 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -6,7 +6,7 @@ import re
from Crypto.Cipher import AES
from module.plugins.internal.Crypter import Crypter
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
class NCryptIn(Crypter):
@@ -146,7 +146,7 @@ class NCryptIn(Crypter):
if "anicaptcha" in form:
self.log_debug("Captcha protected")
captchaUri = re.search(r'src="(/temp/anicaptcha/.+?)"', form).group(1)
- captcha = self.captcha.decrypt_image("http://ncrypt.in" + captchaUri)
+ captcha = self.captcha.decrypt("http://ncrypt.in" + captchaUri)
self.log_debug("Captcha resolved [%s]" % captcha)
postData['captcha'] = captcha
@@ -164,7 +164,7 @@ class NCryptIn(Crypter):
if "circlecaptcha" in form:
self.log_debug("CircleCaptcha protected")
captcha_img_url = "http://ncrypt.in/classes/captcha/circlecaptcha.php"
- coords = self.captcha.decrypt_image(captcha_img_url, input_type="png", output_type='positional', try_ocr=False)
+ coords = self.captcha.decrypt(captcha_img_url, input_type="png", output_type='positional', ocr=False)
self.log_debug("Captcha resolved, coords [%s]" % str(coords))
postData['circle.x'] = coords[0]
postData['circle.y'] = coords[1]
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index f95da1b26..1d27f7c93 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -142,7 +142,7 @@ class RelinkUs(Crypter):
def unlock_captcha_protection(self):
self.log_debug("Request user positional captcha resolving")
captcha_img_url = self.CAPTCHA_IMG_URL + "?id=%s" % self.fileid
- coords = self.captcha.decrypt_image(captcha_img_url, input_type="png", output_type='positional', try_ocr=False)
+ coords = self.captcha.decrypt(captcha_img_url, input_type="png", output_type='positional', ocr=False)
self.log_debug("Captcha resolved, coords [%s]" % str(coords))
captcha_post_url = self.CAPTCHA_SUBMIT_URL + "?id=%s" % self.fileid
captcha_post_data = {'button.x': coords[0], 'button.y': coords[1], 'captcha': 'submit'}
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index 8dc833d03..e182df283 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -6,7 +6,7 @@ import BeautifulSoup
from module.common.json_layer import json_loads
from module.plugins.internal.Crypter import Crypter
-from module.plugins.internal.SolveMedia import SolveMedia
+from module.plugins.captcha.SolveMedia import SolveMedia
class SafelinkingNet(Crypter):
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index 894b6d010..82fc6285e 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -117,7 +117,7 @@ class ShareLinksBiz(Crypter):
m = re.search(r'<img src="/captcha.gif\?d=(.*?)&amp;PHPSESSID=(.*?)&amp;legend=1"', self.html)
captchaUrl = self.base_url + '/captcha.gif?d=%s&PHPSESSID=%s' % (m.group(1), m.group(2))
self.log_debug("Waiting user for correct position")
- coords = self.captcha.decrypt_image(captchaUrl, input_type="gif", output_type='positional', try_ocr=False)
+ coords = self.captcha.decrypt(captchaUrl, input_type="gif", output_type='positional', ocr=False)
self.log_debug("Captcha resolved, coords [%s]" % str(coords))
#: Resolve captcha
diff --git a/module/plugins/hoster/BezvadataCz.py b/module/plugins/hoster/BezvadataCz.py
index 523e87541..f332bc04b 100644
--- a/module/plugins/hoster/BezvadataCz.py
+++ b/module/plugins/hoster/BezvadataCz.py
@@ -48,7 +48,7 @@ class BezvadataCz(SimpleHoster):
if m is None:
self.error(_("Wrong captcha image"))
- inputs['captcha'] = self.captcha.decrypt(m.group(1).decode('base64'), input_type='png')
+ inputs['captcha'] = self.captcha._decrypt(m.group(1).decode('base64'), input_type='png')
if '<img src="data:image/png;base64' in self.html:
self.captcha.invalid()
diff --git a/module/plugins/hoster/BitshareCom.py b/module/plugins/hoster/BitshareCom.py
index 7573c6e2a..39980b62f 100644
--- a/module/plugins/hoster/BitshareCom.py
+++ b/module/plugins/hoster/BitshareCom.py
@@ -4,7 +4,7 @@ from __future__ import with_statement
import re
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/CatShareNet.py b/module/plugins/hoster/CatShareNet.py
index 7f7437fe8..b1b4e2c3c 100644
--- a/module/plugins/hoster/CatShareNet.py
+++ b/module/plugins/hoster/CatShareNet.py
@@ -3,7 +3,7 @@
import re
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
class CatShareNet(SimpleHoster):
diff --git a/module/plugins/hoster/CrockoCom.py b/module/plugins/hoster/CrockoCom.py
index 9b62a9f9e..cd21cc4b9 100644
--- a/module/plugins/hoster/CrockoCom.py
+++ b/module/plugins/hoster/CrockoCom.py
@@ -3,7 +3,7 @@
import re
import urlparse
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/CzshareCom.py b/module/plugins/hoster/CzshareCom.py
index 71f217c94..57c3216cc 100644
--- a/module/plugins/hoster/CzshareCom.py
+++ b/module/plugins/hoster/CzshareCom.py
@@ -105,7 +105,7 @@ class CzshareCom(SimpleHoster):
#: Get and decrypt captcha
captcha_url = 'http://sdilej.cz/captcha.php'
for _i in xrange(5):
- inputs['captchastring2'] = self.captcha.decrypt_image(captcha_url)
+ inputs['captchastring2'] = self.captcha.decrypt(captcha_url)
self.html = self.load(parsed_url, post=inputs)
if u"<li>Zadaný ověřovací kód nesouhlasí!</li>" in self.html:
diff --git a/module/plugins/hoster/DateiTo.py b/module/plugins/hoster/DateiTo.py
index 40725ff89..63e71e776 100644
--- a/module/plugins/hoster/DateiTo.py
+++ b/module/plugins/hoster/DateiTo.py
@@ -2,7 +2,7 @@
import re
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/DepositfilesCom.py b/module/plugins/hoster/DepositfilesCom.py
index 02b334969..8c01d8756 100644
--- a/module/plugins/hoster/DepositfilesCom.py
+++ b/module/plugins/hoster/DepositfilesCom.py
@@ -3,7 +3,7 @@
import re
import urllib
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/ExtabitCom.py b/module/plugins/hoster/ExtabitCom.py
index 3b0367467..ca8a18096 100644
--- a/module/plugins/hoster/ExtabitCom.py
+++ b/module/plugins/hoster/ExtabitCom.py
@@ -4,7 +4,7 @@ import re
from module.common.json_layer import json_loads
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo, seconds_to_midnight
diff --git a/module/plugins/hoster/FastshareCz.py b/module/plugins/hoster/FastshareCz.py
index abe2ef2d6..13490441b 100644
--- a/module/plugins/hoster/FastshareCz.py
+++ b/module/plugins/hoster/FastshareCz.py
@@ -55,7 +55,7 @@ class FastshareCz(SimpleHoster):
self.error(_("FREE_URL_PATTERN not found"))
baseurl = "http://www.fastshare.cz"
- captcha = self.captcha.decrypt_image(urlparse.urljoin(baseurl, captcha_src))
+ captcha = self.captcha.decrypt(urlparse.urljoin(baseurl, captcha_src))
self.download(urlparse.urljoin(baseurl, action), post={'code': captcha, 'btn.x': 77, 'btn.y': 18})
diff --git a/module/plugins/hoster/FileSharkPl.py b/module/plugins/hoster/FileSharkPl.py
index 901890433..d3fbd26d3 100644
--- a/module/plugins/hoster/FileSharkPl.py
+++ b/module/plugins/hoster/FileSharkPl.py
@@ -100,7 +100,7 @@ class FileSharkPl(SimpleHoster):
if m is None:
self.retry(reason=_("Captcha image not found"))
- inputs['form[captcha]'] = self.captcha.decrypt(m.group(1).decode('base64'), input_type='jpeg')
+ inputs['form[captcha]'] = self.captcha._decrypt(m.group(1).decode('base64'), input_type='jpeg')
inputs['form[start]'] = ""
self.download(link, post=inputs, disposition=True)
diff --git a/module/plugins/hoster/FileboomMe.py b/module/plugins/hoster/FileboomMe.py
index 8d0f5d89c..a0b49d1bd 100644
--- a/module/plugins/hoster/FileboomMe.py
+++ b/module/plugins/hoster/FileboomMe.py
@@ -56,7 +56,7 @@ class FileboomMe(SimpleHoster):
m = re.search(self.CAPTCHA_PATTERN, self.html)
if m:
- captcha = self.captcha.decrypt_image(urljoin(pyfile.url, m.group(1)))
+ captcha = self.captcha.decrypt(urljoin(pyfile.url, m.group(1)))
self.html = self.load(post_url,
post={'CaptchaForm[code]' : captcha,
diff --git a/module/plugins/hoster/FilecloudIo.py b/module/plugins/hoster/FilecloudIo.py
index d010af624..4383f27d4 100644
--- a/module/plugins/hoster/FilecloudIo.py
+++ b/module/plugins/hoster/FilecloudIo.py
@@ -3,7 +3,7 @@
import re
from module.common.json_layer import json_loads
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/FiledropperCom.py b/module/plugins/hoster/FiledropperCom.py
index dede02dac..930b7efdb 100644
--- a/module/plugins/hoster/FiledropperCom.py
+++ b/module/plugins/hoster/FiledropperCom.py
@@ -34,7 +34,7 @@ class FiledropperCom(SimpleHoster):
if m is None:
self.fail("Captcha not found")
- captcha_code = self.captcha.decrypt_image("http://www.filedropper.com/%s" % m.group(1))
+ captcha_code = self.captcha.decrypt("http://www.filedropper.com/%s" % m.group(1))
m = re.search(r'method="post" action="(.+?)"', self.html)
if m is None:
diff --git a/module/plugins/hoster/FilepostCom.py b/module/plugins/hoster/FilepostCom.py
index bc2278a41..de15baab8 100644
--- a/module/plugins/hoster/FilepostCom.py
+++ b/module/plugins/hoster/FilepostCom.py
@@ -4,7 +4,7 @@ import re
import time
from module.common.json_layer import json_loads
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/FilerNet.py b/module/plugins/hoster/FilerNet.py
index 61b3a9635..26420f294 100644
--- a/module/plugins/hoster/FilerNet.py
+++ b/module/plugins/hoster/FilerNet.py
@@ -8,7 +8,7 @@ import pycurl
import re
import urlparse
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/FileserveCom.py b/module/plugins/hoster/FileserveCom.py
index 117ee1f4c..60df758f5 100644
--- a/module/plugins/hoster/FileserveCom.py
+++ b/module/plugins/hoster/FileserveCom.py
@@ -6,7 +6,7 @@ from module.common.json_layer import json_loads
from module.network.RequestFactory import getURL as get_url
from module.plugins.internal.Hoster import Hoster
from module.plugins.internal.Plugin import chunks
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import seconds_to_midnight
from module.utils import parseFileSize as parse_size
diff --git a/module/plugins/hoster/FreakshareCom.py b/module/plugins/hoster/FreakshareCom.py
index ba088027a..a80c71b67 100644
--- a/module/plugins/hoster/FreakshareCom.py
+++ b/module/plugins/hoster/FreakshareCom.py
@@ -3,7 +3,7 @@
import re
from module.plugins.internal.Hoster import Hoster
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import seconds_to_midnight
diff --git a/module/plugins/hoster/GigapetaCom.py b/module/plugins/hoster/GigapetaCom.py
index 3fcf4ee32..0334087d3 100644
--- a/module/plugins/hoster/GigapetaCom.py
+++ b/module/plugins/hoster/GigapetaCom.py
@@ -39,7 +39,7 @@ class GigapetaCom(SimpleHoster):
for _i in xrange(5):
self.check_errors()
- captcha = self.captcha.decrypt_image(captcha_url)
+ captcha = self.captcha.decrypt(captcha_url)
self.html = self.load(pyfile.url, post={
'captcha_key': captcha_key,
'captcha': captcha,
diff --git a/module/plugins/hoster/IfolderRu.py b/module/plugins/hoster/IfolderRu.py
index 457bd6962..f289e29b5 100644
--- a/module/plugins/hoster/IfolderRu.py
+++ b/module/plugins/hoster/IfolderRu.py
@@ -49,7 +49,7 @@ class IfolderRu(SimpleHoster):
captcha_url = "http://ints.rusfolder.com/random/images/?session=%s" % session_id
for _i in xrange(5):
action, inputs = self.parse_html_form('id="download-step-one-form"')
- inputs['confirmed_number'] = self.captcha.decrypt_image(captcha_url, cookies=True)
+ inputs['confirmed_number'] = self.captcha.decrypt(captcha_url, cookies=True)
inputs['action'] = '1'
self.log_debug(inputs)
diff --git a/module/plugins/hoster/Keep2ShareCc.py b/module/plugins/hoster/Keep2ShareCc.py
index 4fa3f121f..41538da94 100644
--- a/module/plugins/hoster/Keep2ShareCc.py
+++ b/module/plugins/hoster/Keep2ShareCc.py
@@ -3,7 +3,7 @@
import re
import urlparse
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
@@ -101,7 +101,7 @@ class Keep2ShareCc(SimpleHoster):
self.log_debug("CAPTCHA_PATTERN found %s" % m)
if m:
captcha_url = urlparse.urljoin("http://keep2s.cc/", m.group(1))
- post_data['CaptchaForm[code]'] = self.captcha.decrypt_image(captcha_url)
+ post_data['CaptchaForm[code]'] = self.captcha.decrypt(captcha_url)
else:
recaptcha = ReCaptcha(self)
response, challenge = recaptcha.challenge()
diff --git a/module/plugins/hoster/KingfilesNet.py b/module/plugins/hoster/KingfilesNet.py
index d05d8443a..b02b26914 100644
--- a/module/plugins/hoster/KingfilesNet.py
+++ b/module/plugins/hoster/KingfilesNet.py
@@ -2,7 +2,7 @@
import re
-from module.plugins.internal.SolveMedia import SolveMedia
+from module.plugins.captcha.SolveMedia import SolveMedia
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/LetitbitNet.py b/module/plugins/hoster/LetitbitNet.py
index 92bb5ab62..59d1ae41b 100644
--- a/module/plugins/hoster/LetitbitNet.py
+++ b/module/plugins/hoster/LetitbitNet.py
@@ -11,7 +11,7 @@ import urlparse
from module.common.json_layer import json_loads, json_dumps
from module.network.RequestFactory import getURL as get_url
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, seconds_to_midnight
diff --git a/module/plugins/hoster/LoadTo.py b/module/plugins/hoster/LoadTo.py
index 2ce9134a2..e8f8cbf9a 100644
--- a/module/plugins/hoster/LoadTo.py
+++ b/module/plugins/hoster/LoadTo.py
@@ -6,7 +6,7 @@
import re
-from module.plugins.internal.SolveMedia import SolveMedia
+from module.plugins.captcha.SolveMedia import SolveMedia
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/LuckyShareNet.py b/module/plugins/hoster/LuckyShareNet.py
index e5ae3f1c3..d71c0d9d7 100644
--- a/module/plugins/hoster/LuckyShareNet.py
+++ b/module/plugins/hoster/LuckyShareNet.py
@@ -3,7 +3,7 @@
import re
from module.common.json_layer import json_loads
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/MediafireCom.py b/module/plugins/hoster/MediafireCom.py
index bbe9aeb77..cc3c6a6a4 100644
--- a/module/plugins/hoster/MediafireCom.py
+++ b/module/plugins/hoster/MediafireCom.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
-from module.plugins.internal.ReCaptcha import ReCaptcha
-from module.plugins.internal.SolveMedia import SolveMedia
+from module.plugins.captcha.ReCaptcha import ReCaptcha
+from module.plugins.captcha.SolveMedia import SolveMedia
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/MegasharesCom.py b/module/plugins/hoster/MegasharesCom.py
index 65c41c23f..46c4cba91 100644
--- a/module/plugins/hoster/MegasharesCom.py
+++ b/module/plugins/hoster/MegasharesCom.py
@@ -56,7 +56,7 @@ class MegasharesCom(SimpleHoster):
for _i in xrange(5):
random_num = re.search(self.REACTIVATE_NUM_PATTERN, self.html).group(1)
- verifyinput = self.captcha.decrypt_image("http://d01.megashares.com/index.php",
+ verifyinput = self.captcha.decrypt("http://d01.megashares.com/index.php",
get={'secgfx': "gfx", 'random_num': random_num})
self.log_info(_("Reactivating passport %s: %s %s") % (passport_num, random_num, verifyinput))
diff --git a/module/plugins/hoster/NarodRu.py b/module/plugins/hoster/NarodRu.py
index f54fbf71e..a833edff4 100644
--- a/module/plugins/hoster/NarodRu.py
+++ b/module/plugins/hoster/NarodRu.py
@@ -43,7 +43,7 @@ class NarodRu(SimpleHoster):
post_data = {'action': "sendcapcha"}
captcha_url, post_data['key'] = m.groups()
- post_data['rep'] = self.captcha.decrypt_image(captcha_url)
+ post_data['rep'] = self.captcha.decrypt(captcha_url)
self.html = self.load(pyfile.url, post=post_data)
diff --git a/module/plugins/hoster/NitroflareCom.py b/module/plugins/hoster/NitroflareCom.py
index c03cb8de0..54b243e3c 100644
--- a/module/plugins/hoster/NitroflareCom.py
+++ b/module/plugins/hoster/NitroflareCom.py
@@ -2,7 +2,7 @@
import re
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster
diff --git a/module/plugins/hoster/OboomCom.py b/module/plugins/hoster/OboomCom.py
index f5624439f..43eb726be 100644
--- a/module/plugins/hoster/OboomCom.py
+++ b/module/plugins/hoster/OboomCom.py
@@ -7,7 +7,7 @@ import re
from module.common.json_layer import json_loads
from module.plugins.internal.Hoster import Hoster
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
class OboomCom(Hoster):
diff --git a/module/plugins/hoster/RapidgatorNet.py b/module/plugins/hoster/RapidgatorNet.py
index 7b364e150..8aa513775 100644
--- a/module/plugins/hoster/RapidgatorNet.py
+++ b/module/plugins/hoster/RapidgatorNet.py
@@ -5,9 +5,9 @@ import re
from module.common.json_layer import json_loads
from module.network.HTTPRequest import BadHeader
-from module.plugins.internal.AdsCaptcha import AdsCaptcha
-from module.plugins.internal.ReCaptcha import ReCaptcha
-from module.plugins.internal.SolveMedia import SolveMedia
+from module.plugins.captcha.AdsCaptcha import AdsCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
+from module.plugins.captcha.SolveMedia import SolveMedia
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/RapiduNet.py b/module/plugins/hoster/RapiduNet.py
index 9c1670211..a4afc99e4 100644
--- a/module/plugins/hoster/RapiduNet.py
+++ b/module/plugins/hoster/RapiduNet.py
@@ -5,7 +5,7 @@ import re
import time
from module.common.json_layer import json_loads
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/SendspaceCom.py b/module/plugins/hoster/SendspaceCom.py
index 18e66033f..46cc83824 100644
--- a/module/plugins/hoster/SendspaceCom.py
+++ b/module/plugins/hoster/SendspaceCom.py
@@ -48,7 +48,7 @@ class SendspaceCom(SimpleHoster):
captcha_url2 = "http://www.sendspace.com/" + m.group(1)
params = {'captcha_hash': m.group(2),
'captcha_submit': 'Verify',
- 'captcha_answer': self.captcha.decrypt_image(captcha_url1) + " " + self.captcha.decrypt_image(captcha_url2)}
+ 'captcha_answer': self.captcha.decrypt(captcha_url1) + " " + self.captcha.decrypt(captcha_url2)}
else:
params = {'download': "Regular Download"}
diff --git a/module/plugins/hoster/ShareonlineBiz.py b/module/plugins/hoster/ShareonlineBiz.py
index 13e4f8f87..801057b66 100644
--- a/module/plugins/hoster/ShareonlineBiz.py
+++ b/module/plugins/hoster/ShareonlineBiz.py
@@ -6,7 +6,7 @@ import urllib
import urlparse
from module.network.RequestFactory import getURL as get_url
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/TurbobitNet.py b/module/plugins/hoster/TurbobitNet.py
index f70a985df..1d47f9329 100644
--- a/module/plugins/hoster/TurbobitNet.py
+++ b/module/plugins/hoster/TurbobitNet.py
@@ -9,7 +9,7 @@ import urllib
from Crypto.Cipher import ARC4
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo, timestamp
@@ -81,7 +81,7 @@ class TurbobitNet(SimpleHoster):
if m is None:
self.error(_("captcha"))
captcha_url = m.group(1)
- inputs['captcha_response'] = self.captcha.decrypt_image(captcha_url)
+ inputs['captcha_response'] = self.captcha.decrypt(captcha_url)
self.log_debug(inputs)
self.html = self.load(self.url, post=inputs)
diff --git a/module/plugins/hoster/UlozTo.py b/module/plugins/hoster/UlozTo.py
index 27b5843d9..1cd4ec853 100644
--- a/module/plugins/hoster/UlozTo.py
+++ b/module/plugins/hoster/UlozTo.py
@@ -60,7 +60,7 @@ class UlozTo(SimpleHoster):
#: Old version - last seen 9.12.2013
self.log_debug('Using "old" version')
- captcha_value = self.captcha.decrypt_image("http://img.uloz.to/captcha/%s.png" % inputs['captcha_id'])
+ captcha_value = self.captcha.decrypt("http://img.uloz.to/captcha/%s.png" % inputs['captcha_id'])
self.log_debug("CAPTCHA ID: " + inputs['captcha_id'] + ", CAPTCHA VALUE: " + captcha_value)
inputs.update({'captcha_id': inputs['captcha_id'], 'captcha_key': inputs['captcha_key'], 'captcha_value': captcha_value})
@@ -73,7 +73,7 @@ class UlozTo(SimpleHoster):
self.log_debug("xapca = " + str(xapca))
data = json_loads(xapca)
- captcha_value = self.captcha.decrypt_image(str(data['image']))
+ captcha_value = self.captcha.decrypt(str(data['image']))
self.log_debug("CAPTCHA HASH: " + data['hash'], "CAPTCHA SALT: " + str(data['salt']), "CAPTCHA VALUE: " + captcha_value)
inputs.update({'timestamp': data['timestamp'], 'salt': data['salt'], 'hash': data['hash'], 'captcha_value': captcha_value})
diff --git a/module/plugins/hoster/UloziskoSk.py b/module/plugins/hoster/UloziskoSk.py
index 58e3b685a..69adedeb1 100644
--- a/module/plugins/hoster/UloziskoSk.py
+++ b/module/plugins/hoster/UloziskoSk.py
@@ -59,7 +59,7 @@ class UloziskoSk(SimpleHoster):
self.error(_("CAPTCHA_PATTERN not found"))
captcha_url = urlparse.urljoin("http://www.ulozisko.sk", m.group(1))
- captcha = self.captcha.decrypt_image(captcha_url, cookies=True)
+ captcha = self.captcha.decrypt(captcha_url, cookies=True)
self.log_debug("CAPTCHA_URL:" + captcha_url + ' CAPTCHA:' + captcha)
diff --git a/module/plugins/hoster/UnibytesCom.py b/module/plugins/hoster/UnibytesCom.py
index 96b2fb031..1c1a0bd2b 100644
--- a/module/plugins/hoster/UnibytesCom.py
+++ b/module/plugins/hoster/UnibytesCom.py
@@ -65,7 +65,7 @@ class UnibytesCom(SimpleHoster):
self.wait(m.group(1) if m else 60, False)
elif last_step in ("captcha", "last"):
- post_data['captcha'] = self.captcha.decrypt_image(urlparse.urljoin(domain, "/captcha.jpg"))
+ post_data['captcha'] = self.captcha.decrypt(urlparse.urljoin(domain, "/captcha.jpg"))
else:
self.fail(_("No valid captcha code entered"))
diff --git a/module/plugins/hoster/UploadableCh.py b/module/plugins/hoster/UploadableCh.py
index 5b2eed554..7d3a6952a 100644
--- a/module/plugins/hoster/UploadableCh.py
+++ b/module/plugins/hoster/UploadableCh.py
@@ -2,7 +2,7 @@
import re
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/UploadedTo.py b/module/plugins/hoster/UploadedTo.py
index c5f3cd8ad..f77c6a483 100644
--- a/module/plugins/hoster/UploadedTo.py
+++ b/module/plugins/hoster/UploadedTo.py
@@ -5,7 +5,7 @@ import time
import urlparse
from module.network.RequestFactory import getURL as get_url
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/UploadheroCom.py b/module/plugins/hoster/UploadheroCom.py
index 8a0b3a032..69318fb4b 100644
--- a/module/plugins/hoster/UploadheroCom.py
+++ b/module/plugins/hoster/UploadheroCom.py
@@ -44,7 +44,7 @@ class UploadheroCom(SimpleHoster):
if m is None:
self.error(_("Captcha not found"))
- captcha = self.captcha.decrypt_image(urlparse.urljoin("http://uploadhero.co", m.group(1)))
+ captcha = self.captcha.decrypt(urlparse.urljoin("http://uploadhero.co", m.group(1)))
self.html = self.load(pyfile.url,
get={'code': captcha})
diff --git a/module/plugins/hoster/UpstoreNet.py b/module/plugins/hoster/UpstoreNet.py
index 49578aafe..21c359cc2 100644
--- a/module/plugins/hoster/UpstoreNet.py
+++ b/module/plugins/hoster/UpstoreNet.py
@@ -2,7 +2,7 @@
import re
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/hoster/ZippyshareCom.py b/module/plugins/hoster/ZippyshareCom.py
index 7df13a075..aa64c1903 100644
--- a/module/plugins/hoster/ZippyshareCom.py
+++ b/module/plugins/hoster/ZippyshareCom.py
@@ -5,7 +5,7 @@ import urllib
import BeautifulSoup
-from module.plugins.internal.ReCaptcha import ReCaptcha
+from module.plugins.captcha.ReCaptcha import ReCaptcha
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
diff --git a/module/plugins/internal/Captcha.py b/module/plugins/internal/Captcha.py
index af7f66ed5..942021f26 100644
--- a/module/plugins/internal/Captcha.py
+++ b/module/plugins/internal/Captcha.py
@@ -1,12 +1,14 @@
# -*- coding: utf-8 -*-
+import time
+
from module.plugins.internal.Plugin import Plugin
class Captcha(Plugin):
__name__ = "Captcha"
__type__ = "captcha"
- __version__ = "0.01"
+ __version__ = "0.02"
__status__ = "stable"
__description__ = """Base anti-captcha plugin"""
@@ -35,13 +37,21 @@ class Captcha(Plugin):
pass
- def decrypt_image(self, url, get={}, post={}, ref=False, cookies=False, decode=False,
- input_type='png', output_type='textual', try_ocr=True):
- image = self.load(url, get=get, post=post, ref=ref, cookies=cookies, decode=decode)
- return self.decrypt(image, input_type, output_type, try_ocr)
+ def recognize(self, image):
+ """
+ Extend to build your custom anti-captcha ocr
+ """
+ pass
+
+
+ def decrypt(self, url, get={}, post={}, ref=False, cookies=False, decode=False,
+ input_type='png', output_type='textual', ocr=True):
+ img = self.load(url, get=get, post=post, ref=ref, cookies=cookies, decode=decode)
+ return self._decrypt(img, input_type, output_type, ocr)
- def decrypt(self, data, input_type='png', output_type='textual', try_ocr=True):
+ #@TODO: Definitely dhoose a better name for this method!
+ def _decrypt(self, raw, input_type='png', output_type='textual', ocr=None):
"""
Loads a captcha and decrypts it with ocr, plugin, user input
@@ -53,56 +63,53 @@ class Captcha(Plugin):
:param output_type: 'textual' if text is written on the captcha\
or 'positional' for captcha where the user have to click\
on a specific region on the captcha
- :param try_ocr: if True, ocr is not used
+ :param ocr: if True, ocr is not used
:return: result of decrypting
"""
- id = ("%.2f" % time.time())[-6:].replace(".", "")
+ time_ref = ("%.2f" % time.time())[-6:].replace(".", "")
+
+ with open(os.path.join("tmp", "captcha_image_%s_%s.%s" % (self.plugin.__name__, time_ref, input_type)), "wb") as tmp_img:
+ tmp_img.write(raw)
+
+ if ocr is not False:
+ if isinstance(ocr, basestring):
+ OCR = self.pyload.pluginManager.loadClass("captcha", ocr) #: Rename `captcha` to `ocr` in 0.4.10
- with open(os.path.join("tmp", "tmpCaptcha_%s_%s.%s" % (self.plugin.__name__, id, input_type)), "wb") as tmpCaptcha:
- tmpCaptcha.write(img)
+ if self.plugin.pyfile.abort:
+ self.abort()
- has_plugin = self.plugin.__name__ in self.pyload.pluginManager.ocrPlugins
+ result = OCR(self.plugin.pyfile).recognize(tmp_img.name)
- if self.pyload.captcha:
- Ocr = self.pyload.pluginManager.loadClass("ocr", self.plugin.__name__)
- else:
- Ocr = None
+ else:
+ result = self.recognize(tmp_img.name)
- if Ocr and try_ocr:
- time.sleep(random.randint(3000, 5000) / 1000.0)
- if self.pyfile.abort:
- self.abort()
+ else:
+ captchaManager = self.pyload.captchaManager
- ocr = Ocr(self.pyfile)
- result = ocr.get_captcha(tmpCaptcha.name)
- else:
- captchaManager = self.pyload.captchaManager
- task = captchaManager.newTask(img, input_type, tmpCaptcha.name, output_type)
- self.task = task
- captchaManager.handleCaptcha(task)
+ try:
+ self.task = captchaManager.newTask(img, input_type, tmp_img.name, output_type)
+ captchaManager.handleCaptcha(self.task)
- while task.isWaiting():
- if self.pyfile.abort:
- captchaManager.removeTask(task)
- self.abort()
- time.sleep(1)
+ while self.task.isWaiting():
+ if self.plugin.pyfile.abort:
+ self.abort()
+ time.sleep(1)
+ finally:
+ captchaManager.removeTask(self.task)
- captchaManager.removeTask(task)
+ if self.task.error:
+ self.fail(task.error)
- if task.error and has_plugin: #: Ignore default error message since the user could use try_ocr
- self.fail(_("Pil and tesseract not installed and no Client connected for captcha decrypting"))
- elif task.error:
- self.fail(task.error)
- elif not task.result:
- self.fail(_("No captcha result obtained in appropiate time by any of the plugins"))
+ elif not self.task.result:
+ self.fail(_("No captcha result obtained in appropiate time by any of the plugins"))
- result = task.result
- self.log_debug("Received captcha result: %s" % result)
+ result = task.result
+ self.log_debug("Received captcha result: %s" % result) #@TODO: Remove from here?
if not self.pyload.debug:
try:
- os.remove(tmpCaptcha.name)
+ os.remove(tmp_img.name)
except Exception:
pass
diff --git a/module/plugins/internal/OCR.py b/module/plugins/internal/OCR.py
index ee5571f77..5c22866c8 100644
--- a/module/plugins/internal/OCR.py
+++ b/module/plugins/internal/OCR.py
@@ -20,7 +20,7 @@ from module.utils import save_join as fs_join
class OCR(Plugin):
__name__ = "OCR"
__type__ = "ocr"
- __version__ = "0.12"
+ __version__ = "0.13"
__status__ = "stable"
__description__ = """OCR base plugin"""
@@ -133,7 +133,7 @@ class OCR(Plugin):
pass
- def get_captcha(self, name):
+ def recognize(self, name):
raise NotImplementedError
diff --git a/module/plugins/internal/XFSHoster.py b/module/plugins/internal/XFSHoster.py
index ec9a18a48..18a50a6b0 100644
--- a/module/plugins/internal/XFSHoster.py
+++ b/module/plugins/internal/XFSHoster.py
@@ -4,8 +4,8 @@ import pycurl
import random
import re
-from module.plugins.internal.ReCaptcha import ReCaptcha
-from module.plugins.internal.SolveMedia import SolveMedia
+from module.plugins.captcha.ReCaptcha import ReCaptcha
+from module.plugins.captcha.SolveMedia import SolveMedia
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo, seconds_to_midnight
from module.utils import html_unescape
@@ -221,7 +221,7 @@ class XFSHoster(SimpleHoster):
m = re.search(self.CAPTCHA_PATTERN, self.html)
if m:
captcha_url = m.group(1)
- inputs['code'] = self.captcha.decrypt_image(captcha_url)
+ inputs['code'] = self.captcha.decrypt(captcha_url)
return
m = re.search(self.CAPTCHA_BLOCK_PATTERN, self.html, re.S)