diff options
| author | 2015-05-29 23:33:10 +0200 | |
|---|---|---|
| committer | 2015-05-29 23:33:10 +0200 | |
| commit | 844dfd92f590e531ca2f7fd86305fcbc13a03721 (patch) | |
| tree | 5303bd07749b362dab071ada6197fe37dda85b27 /module/plugins/hooks/ImageTyperz.py | |
| parent | [BitshareCom] Code cosmetics (diff) | |
| parent | [SimpleHoster] Fix DB error (diff) | |
| download | pyload-844dfd92f590e531ca2f7fd86305fcbc13a03721.tar.xz | |
Merge pull request #1 from pyload/stable
sync stable
Diffstat (limited to 'module/plugins/hooks/ImageTyperz.py')
| -rw-r--r-- | module/plugins/hooks/ImageTyperz.py | 47 | 
1 files changed, 22 insertions, 25 deletions
diff --git a/module/plugins/hooks/ImageTyperz.py b/module/plugins/hooks/ImageTyperz.py index f89d64c37..f1fcacb71 100644 --- a/module/plugins/hooks/ImageTyperz.py +++ b/module/plugins/hooks/ImageTyperz.py @@ -2,14 +2,13 @@  from __future__ import with_statement +import pycurl  import re  from base64 import b64encode -from pycurl import FORM_FILE, LOW_SPEED_TIME -from thread import start_new_thread  from module.network.RequestFactory import getURL, getRequest -from module.plugins.Hook import Hook +from module.plugins.Hook import Hook, threaded  class ImageTyperzException(Exception): @@ -33,7 +32,7 @@ class ImageTyperzException(Exception):  class ImageTyperz(Hook):      __name__    = "ImageTyperz"      __type__    = "hook" -    __version__ = "0.05" +    __version__ = "0.06"      __config__ = [("username", "str", "Username", ""),                    ("passkey", "password", "Password", ""), @@ -41,20 +40,17 @@ class ImageTyperz(Hook):      __description__ = """Send captchas to ImageTyperz.com"""      __license__     = "GPLv3" -    __authors__     = [("RaNaN", "RaNaN@pyload.org"), +    __authors__     = [("RaNaN"   , "RaNaN@pyload.org"   ),                         ("zoidberg", "zoidberg@mujmail.cz")] +    interval = 0  #@TODO: Remove in 0.4.10 +      SUBMIT_URL = "http://captchatypers.com/Forms/UploadFileAndGetTextNEW.ashx"      RESPOND_URL = "http://captchatypers.com/Forms/SetBadImage.ashx"      GETCREDITS_URL = "http://captchatypers.com/Forms/RequestBalance.ashx" -    #@TODO: Remove in 0.4.10 -    def initPeriodical(self): -        pass - -      def setup(self):          self.info = {}  #@TODO: Remove in 0.4.10 @@ -62,15 +58,15 @@ class ImageTyperz(Hook):      def getCredits(self):          res = getURL(self.GETCREDITS_URL,                       post={'action': "REQUESTBALANCE", -                           'username': self.getConfig("username"), -                           'password': self.getConfig("passkey")}) +                           'username': self.getConfig('username'), +                           'password': self.getConfig('passkey')})          if res.startswith('ERROR'):              raise ImageTyperzException(res)          try:              balance = float(res) -        except: +        except Exception:              raise ImageTyperzException("Invalid response")          self.logInfo(_("Account balance: $%s left") % res) @@ -80,13 +76,13 @@ class ImageTyperz(Hook):      def submit(self, captcha, captchaType="file", match=None):          req = getRequest()          #raise timeout threshold -        req.c.setopt(LOW_SPEED_TIME, 80) +        req.c.setopt(pycurl.LOW_SPEED_TIME, 80)          try: -            #workaround multipart-post bug in HTTPRequest.py -            if re.match("^\w*$", self.getConfig("passkey")): +            #@NOTE: Workaround multipart-post bug in HTTPRequest.py +            if re.match("^\w*$", self.getConfig('passkey')):                  multipart = True -                data = (FORM_FILE, captcha) +                data = (pycurl.FORM_FILE, captcha)              else:                  multipart = False                  with open(captcha, 'rb') as f: @@ -95,8 +91,8 @@ class ImageTyperz(Hook):              res = req.load(self.SUBMIT_URL,                             post={'action': "UPLOADCAPTCHA", -                                 'username': self.getConfig("username"), -                                 'password': self.getConfig("passkey"), "file": data}, +                                 'username': self.getConfig('username'), +                                 'password': self.getConfig('passkey'), "file": data},                             multipart=multipart)          finally:              req.close() @@ -120,17 +116,17 @@ class ImageTyperz(Hook):          if not task.isTextual():              return False -        if not self.getConfig("username") or not self.getConfig("passkey"): +        if not self.getConfig('username') or not self.getConfig('passkey'):              return False -        if self.core.isClientConnected() and not self.getConfig("force"): +        if self.core.isClientConnected() and not self.getConfig('force'):              return False          if self.getCredits() > 0:              task.handler.append(self)              task.data['service'] = self.__name__              task.setWaiting(100) -            start_new_thread(self.processCaptcha, (task,)) +            self._processCaptcha(task)          else:              self.logInfo(_("Your %s account has not enough credits") % self.__name__) @@ -140,8 +136,8 @@ class ImageTyperz(Hook):          if task.data['service'] == self.__name__ and "ticket" in task.data:              res = getURL(self.RESPOND_URL,                           post={'action': "SETBADIMAGE", -                               'username': self.getConfig("username"), -                               'password': self.getConfig("passkey"), +                               'username': self.getConfig('username'), +                               'password': self.getConfig('passkey'),                                 'imageid': task.data['ticket']})              if res == "SUCCESS": @@ -150,7 +146,8 @@ class ImageTyperz(Hook):                  self.logError(_("Bad captcha solution received, refund request failed"), res) -    def processCaptcha(self, task): +    @threaded +    def _processCaptcha(self, task):          c = task.captchaFile          try:              ticket, result = self.submit(c)  | 
