summaryrefslogtreecommitdiffstats
path: root/pyload/manager/Captcha.py
diff options
context:
space:
mode:
authorGravatar Walter Purcaro <vuolter@gmail.com> 2015-02-16 10:46:28 +0100
committerGravatar Walter Purcaro <vuolter@gmail.com> 2015-02-16 10:46:28 +0100
commitce1c2b6b05c08b669357947e61ae40efce7fc50f (patch)
tree0b5f7996960cf35c4eface53a89eba18a37519b7 /pyload/manager/Captcha.py
parentFix filename case (diff)
downloadpyload-ce1c2b6b05c08b669357947e61ae40efce7fc50f.tar.xz
module temp
Diffstat (limited to 'pyload/manager/Captcha.py')
-rw-r--r--pyload/manager/Captcha.py138
1 files changed, 0 insertions, 138 deletions
diff --git a/pyload/manager/Captcha.py b/pyload/manager/Captcha.py
deleted file mode 100644
index e54eacf30..000000000
--- a/pyload/manager/Captcha.py
+++ /dev/null
@@ -1,138 +0,0 @@
-# -*- coding: utf-8 -*-
-# @author: RaNaN, mkaay
-
-from time import time
-from traceback import print_exc
-from threading import Lock
-
-from pyload.utils import encode
-
-
-class CaptchaManager(object):
- def __init__(self, core):
- self.lock = Lock()
- self.core = core
- self.tasks = [] # task store, for outgoing tasks only
- self.ids = 0 # only for internal purpose
-
- def newTask(self, img, format, file, result_type):
- task = CaptchaTask(self.ids, img, format, file, result_type)
- self.ids += 1
- return task
-
- def removeTask(self, task):
- self.lock.acquire()
- if task in self.tasks:
- self.tasks.remove(task)
- self.lock.release()
-
- def getTask(self):
- self.lock.acquire()
- for task in self.tasks:
- if task.status in ("waiting", "shared-user"):
- self.lock.release()
- return task
- self.lock.release()
- return None
-
- def getTaskByID(self, tid):
- self.lock.acquire()
- for task in self.tasks:
- if task.id == str(tid): # task ids are strings
- self.lock.release()
- return task
- self.lock.release()
- return None
-
- def handleCaptcha(self, task, timeout=50):
- cli = self.core.isClientConnected()
-
- if cli: #: client connected -> should solve the captcha
- task.setWaiting(timeout) #wait 50 sec for response
-
- for plugin in self.core.addonManager.activePlugins():
- try:
- plugin.captchaTask(task)
- except Exception:
- if self.core.debug:
- print_exc()
-
- if task.handler or cli: #: the captcha was handled
- self.tasks.append(task)
- return True
- task.error = _("No Client connected for captcha decrypting")
- return False
-
-
-class CaptchaTask(object):
- def __init__(self, id, img, format, file, result_type='textual'):
- self.id = str(id)
- self.captchaImg = img
- self.captchaFormat = format
- self.captchaFile = file
- self.captchaResultType = result_type
- self.handler = [] #: the hook plugins that will take care of the solution
- self.result = None
- self.waitUntil = None
- self.error = None # error message
- self.status = "init"
- self.data = {} # handler can store data here
-
- def getCaptcha(self):
- return self.captchaImg, self.captchaFormat, self.captchaResultType
-
- def setResult(self, text):
- if self.isTextual():
- self.result = text
- if self.isPositional():
- try:
- parts = text.split(',')
- self.result = (int(parts[0]), int(parts[1]))
- except Exception:
- self.result = None
-
- def getResult(self):
- return encode(self.result)
-
- def getStatus(self):
- return self.status
-
- def setWaiting(self, sec):
- """ let the captcha wait secs for the solution """
- self.waitUntil = max(time() + sec, self.waitUntil)
- self.status = "waiting"
-
- def isWaiting(self):
- if self.result or self.error or self.timedOut():
- return False
- else:
- return True
-
- def isTextual(self):
- """ returns if text is written on the captcha """
- return self.captchaResultType == 'textual'
-
- def isPositional(self):
- """ returns if user have to click a specific region on the captcha """
- return self.captchaResultType == 'positional'
-
- def setWatingForUser(self, exclusive):
- if exclusive:
- self.status = "user"
- else:
- self.status = "shared-user"
-
- def timedOut(self):
- return time() > self.waitUntil
-
- def invalid(self):
- """ indicates the captcha was not correct """
- for x in self.handler:
- x.captchaInvalid(self)
-
- def correct(self):
- for x in self.handler:
- x.captchaCorrect(self)
-
- def __str__(self):
- return "<CaptchaTask '%s'>" % self.id