From 86d3b6249073947132ed3a9eeb1b1e987d19569a Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Mon, 1 Dec 2014 18:17:13 +0100
Subject: Update some plugins

---
 module/plugins/hooks/Captcha9kw.py     |  2 +-
 module/plugins/hooks/Checksum.py       |  9 +++++++--
 module/plugins/hoster/DataHu.py        |  7 ++-----
 module/plugins/hoster/DateiTo.py       |  4 ++--
 module/plugins/hoster/FilecloudIo.py   |  8 ++++----
 module/plugins/hoster/FilepostCom.py   | 11 ++++-------
 module/plugins/hoster/FilerNet.py      |  1 -
 module/plugins/hoster/KingfilesNet.py  |  6 +++---
 module/plugins/hoster/LetitbitNet.py   |  5 +----
 module/plugins/hoster/LuckyShareNet.py |  7 ++-----
 module/plugins/hoster/NowVideoAt.py    |  4 ++--
 module/plugins/hoster/OneFichierCom.py |  4 ++--
 module/plugins/hoster/PromptfileCom.py |  5 ++---
 module/plugins/hoster/TurbobitNet.py   |  6 +++---
 module/plugins/hoster/UploadingCom.py  |  8 ++++----
 module/plugins/hoster/WebshareCz.py    |  7 ++++---
 module/plugins/hoster/ZippyshareCom.py |  6 +++---
 module/plugins/internal/XFSHoster.py   | 19 ++++++++++---------
 18 files changed, 56 insertions(+), 63 deletions(-)

diff --git a/module/plugins/hooks/Captcha9kw.py b/module/plugins/hooks/Captcha9kw.py
index 38b39b2af..ead8aec9a 100755
--- a/module/plugins/hooks/Captcha9kw.py
+++ b/module/plugins/hooks/Captcha9kw.py
@@ -56,7 +56,7 @@ class Captcha9kw(Hook):
 
         if res.isdigit():
             self.logInfo(_("%s credits left") % res)
-            credits = self.info["credits"] = int(res)
+            credits = self.info['credits'] = int(res)
             return credits
         else:
             self.logError(res)
diff --git a/module/plugins/hooks/Checksum.py b/module/plugins/hooks/Checksum.py
index b746fce5f..eeda2d849 100644
--- a/module/plugins/hooks/Checksum.py
+++ b/module/plugins/hooks/Checksum.py
@@ -81,10 +81,15 @@ class Checksum(Hook):
         a) if known, the exact filesize in bytes (e.g. "size": 123456789)
         b) hexadecimal hash string with algorithm name as key (e.g. "md5": "d76505d0869f9f928a17d42d66326307")
         """
-        if hasattr(pyfile.plugin, "check_data") and (isinstance(pyfile.plugin.check_data, dict)):
+        if hasattr(pyfile.plugin, "check_data") and isinstance(pyfile.plugin.check_data, dict):
             data = pyfile.plugin.check_data.copy()
-        elif hasattr(pyfile.plugin, "api_data") and (isinstance(pyfile.plugin.api_data, dict)):
+
+        elif hasattr(pyfile.plugin, "api_data") and isinstance(pyfile.plugin.api_data, dict):
             data = pyfile.plugin.api_data.copy()
+
+        # elif hasattr(pyfile.plugin, "info") and isinstance(pyfile.plugin.info, dict):
+            # data = pyfile.plugin.info.copy()
+
         else:
             return
 
diff --git a/module/plugins/hoster/DataHu.py b/module/plugins/hoster/DataHu.py
index fd6a01135..74d631e7b 100644
--- a/module/plugins/hoster/DataHu.py
+++ b/module/plugins/hoster/DataHu.py
@@ -33,13 +33,10 @@ class DataHu(SimpleHoster):
 
     def handleFree(self):
         m = re.search(self.LINK_PATTERN, self.html)
-        if m:
-            url = m.group(1)
-            self.logDebug("Direct link: " + url)
-        else:
+        if m is None:
             self.error(_("LINK_PATTERN not found"))
 
-        self.download(url, disposition=True)
+        self.download(m.group(1), disposition=True)
 
 
 getInfo = create_getInfo(DataHu)
diff --git a/module/plugins/hoster/DateiTo.py b/module/plugins/hoster/DateiTo.py
index 9d51b5036..683c6b75d 100644
--- a/module/plugins/hoster/DateiTo.py
+++ b/module/plugins/hoster/DateiTo.py
@@ -9,7 +9,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
 class DateiTo(SimpleHoster):
     __name__    = "DateiTo"
     __type__    = "hoster"
-    __version__ = "0.04"
+    __version__ = "0.05"
 
     __pattern__ = r'http://(?:www\.)?datei\.to/datei/(?P<ID>\w+)\.html'
 
@@ -29,7 +29,7 @@ class DateiTo(SimpleHoster):
 
     def handleFree(self):
         url = 'http://datei.to/ajax/download.php'
-        data = {'P': 'I', 'ID': self.info['ID']}
+        data = {'P': 'I', 'ID': self.info['pattern']['ID']}
         recaptcha = ReCaptcha(self)
 
         for _i in xrange(10):
diff --git a/module/plugins/hoster/FilecloudIo.py b/module/plugins/hoster/FilecloudIo.py
index 819a7faf3..85ea3dae4 100644
--- a/module/plugins/hoster/FilecloudIo.py
+++ b/module/plugins/hoster/FilecloudIo.py
@@ -10,7 +10,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
 class FilecloudIo(SimpleHoster):
     __name__    = "FilecloudIo"
     __type__    = "hoster"
-    __version__ = "0.04"
+    __version__ = "0.05"
 
     __pattern__ = r'http://(?:www\.)?(?:filecloud\.io|ifile\.it|mihd\.net)/(?P<ID>\w+).*'
 
@@ -39,7 +39,7 @@ class FilecloudIo(SimpleHoster):
 
 
     def handleFree(self):
-        data = {"ukey": self.info['ID']}
+        data = {"ukey": self.info['pattern']['ID']}
 
         m = re.search(self.AB1_PATTERN, self.html)
         if m is None:
@@ -94,7 +94,7 @@ class FilecloudIo(SimpleHoster):
         if res['dl']:
             self.html = self.load('http://filecloud.io/download.html')
 
-            m = re.search(self.LINK_PATTERN % self.info['ID'], self.html)
+            m = re.search(self.LINK_PATTERN % self.info['pattern']['ID'], self.html)
             if m is None:
                 self.error(_("LINK_PATTERN not found"))
 
@@ -109,7 +109,7 @@ class FilecloudIo(SimpleHoster):
 
     def handlePremium(self):
         akey = self.account.getAccountData(self.user)['akey']
-        ukey = self.info['ID']
+        ukey = self.info['pattern']['ID']
         self.logDebug("Akey: %s | Ukey: %s" % (akey, ukey))
         rep = self.load("http://api.filecloud.io/api-fetch_download_url.api",
                         post={"akey": akey, "ukey": ukey})
diff --git a/module/plugins/hoster/FilepostCom.py b/module/plugins/hoster/FilepostCom.py
index 314ad449c..db5ea20d3 100644
--- a/module/plugins/hoster/FilepostCom.py
+++ b/module/plugins/hoster/FilepostCom.py
@@ -12,9 +12,9 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
 class FilepostCom(SimpleHoster):
     __name__    = "FilepostCom"
     __type__    = "hoster"
-    __version__ = "0.29"
+    __version__ = "0.30"
 
-    __pattern__ = r'https?://(?:www\.)?(?:filepost\.com/files|fp\.io)/([^/]+).*'
+    __pattern__ = r'https?://(?:www\.)?(?:filepost\.com/files|fp\.io)/(?P<ID>[^/]+)'
 
     __description__ = """Filepost.com hoster plugin"""
     __license__     = "GPLv3"
@@ -30,9 +30,6 @@ class FilepostCom(SimpleHoster):
 
 
     def handleFree(self):
-        # Find token and captcha key
-        file_id = re.match(self.__pattern__, self.pyfile.url).group(1)
-
         m = re.search(self.FLP_TOKEN_PATTERN, self.html)
         if m is None:
             self.error(_("Token"))
@@ -45,13 +42,13 @@ class FilepostCom(SimpleHoster):
 
         # Get wait time
         get_dict = {'SID': self.req.cj.getCookie('SID'), 'JsHttpRequest': str(int(time() * 10000)) + '-xml'}
-        post_dict = {'action': 'set_download', 'token': flp_token, 'code': file_id}
+        post_dict = {'action': 'set_download', 'token': flp_token, 'code': self.info['pattern']['ID']}
         wait_time = int(self.getJsonResponse(get_dict, post_dict, 'wait_time'))
 
         if wait_time > 0:
             self.wait(wait_time)
 
-        post_dict = {"token": flp_token, "code": file_id, "file_pass": ''}
+        post_dict = {"token": flp_token, "code": self.info['pattern']['ID'], "file_pass": ''}
 
         if 'var is_pass_exists = true;' in self.html:
             # Solve password
diff --git a/module/plugins/hoster/FilerNet.py b/module/plugins/hoster/FilerNet.py
index c91729730..3bfafc675 100644
--- a/module/plugins/hoster/FilerNet.py
+++ b/module/plugins/hoster/FilerNet.py
@@ -92,7 +92,6 @@ class FilerNet(SimpleHoster):
                 self.error(_("LINK_PATTERN not found"))
             dl = 'http://filer.net' + m.group(1)
 
-        self.logDebug("Direct link: " + dl)
         self.download(dl, disposition=True)
 
 
diff --git a/module/plugins/hoster/KingfilesNet.py b/module/plugins/hoster/KingfilesNet.py
index ce34da38f..202ab4a77 100644
--- a/module/plugins/hoster/KingfilesNet.py
+++ b/module/plugins/hoster/KingfilesNet.py
@@ -9,7 +9,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
 class KingfilesNet(SimpleHoster):
     __name__    = "KingfilesNet"
     __type__    = "hoster"
-    __version__ = "0.04"
+    __version__ = "0.05"
 
     __pattern__ = r'http://(?:www\.)?kingfiles\.net/(?P<ID>\w{12})'
 
@@ -38,7 +38,7 @@ class KingfilesNet(SimpleHoster):
         # Click the free user button
         post_data = {'op': "download1",
                      'usr_login': "",
-                     'id': self.info['ID'],
+                     'id': self.info['pattern']['ID'],
                      'fname': self.pyfile.name,
                      'referer': "",
                      'method_free': "+"}
@@ -57,7 +57,7 @@ class KingfilesNet(SimpleHoster):
         self.logDebug("rand = ", rand)
 
         post_data = {'op': "download2",
-                     'id': self.info['ID'],
+                     'id': self.info['pattern']['ID'],
                      'rand': rand,
                      'referer': self.pyfile.url,
                      'method_free': "+",
diff --git a/module/plugins/hoster/LetitbitNet.py b/module/plugins/hoster/LetitbitNet.py
index a1a812de4..ed8d4a39d 100644
--- a/module/plugins/hoster/LetitbitNet.py
+++ b/module/plugins/hoster/LetitbitNet.py
@@ -139,7 +139,4 @@ class LetitbitNet(SimpleHoster):
         if api_rep['status'] == 'FAIL':
             self.fail(api_rep['data'])
 
-        direct_link = api_rep['data'][0][0]
-        self.logDebug("Direct Link: " + direct_link)
-
-        self.download(direct_link, disposition=True)
+        self.download(api_rep['data'][0][0], disposition=True)
diff --git a/module/plugins/hoster/LuckyShareNet.py b/module/plugins/hoster/LuckyShareNet.py
index aeab46d3d..2c33b57e7 100644
--- a/module/plugins/hoster/LuckyShareNet.py
+++ b/module/plugins/hoster/LuckyShareNet.py
@@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
 class LuckyShareNet(SimpleHoster):
     __name__    = "LuckyShareNet"
     __type__    = "hoster"
-    __version__ = "0.03"
+    __version__ = "0.04"
 
     __pattern__ = r'https?://(?:www\.)?luckyshare\.net/(?P<ID>\d{10,})'
 
@@ -42,9 +42,7 @@ class LuckyShareNet(SimpleHoster):
     # TODO: There should be a filesize limit for free downloads
     # TODO: Some files could not be downloaded in free mode
     def handleFree(self):
-        file_id = re.match(self.__pattern__, self.pyfile.url).group('ID')
-        self.logDebug("File ID: " + file_id)
-        rep = self.load(r"http://luckyshare.net/download/request/type/time/file/" + file_id, decode=True)
+        rep = self.load(r"http://luckyshare.net/download/request/type/time/file/" + self.info['pattern']['ID'], decode=True)
         self.logDebug("JSON: " + rep)
         json = self.parseJson(rep)
 
@@ -69,7 +67,6 @@ class LuckyShareNet(SimpleHoster):
         if not json['link']:
             self.fail(_("No Download url retrieved/all captcha attempts failed"))
 
-        self.logDebug("Direct URL: " + json['link'])
         self.download(json['link'])
 
 
diff --git a/module/plugins/hoster/NowVideoAt.py b/module/plugins/hoster/NowVideoAt.py
index c0b49c6f4..3d9b706d3 100644
--- a/module/plugins/hoster/NowVideoAt.py
+++ b/module/plugins/hoster/NowVideoAt.py
@@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
 class NowVideoAt(SimpleHoster):
     __name__    = "NowVideoAt"
     __type__    = "hoster"
-    __version__ = "0.06"
+    __version__ = "0.07"
 
     __pattern__ = r'http://(?:www\.)?nowvideo\.(at|ch|co|eu|sx)/(video|mobile/#/videos)/(?P<ID>\w+)'
 
@@ -32,7 +32,7 @@ class NowVideoAt(SimpleHoster):
 
 
     def handleFree(self):
-        self.html = self.load("http://www.nowvideo.at/mobile/video.php", get={'id': self.info['ID']})
+        self.html = self.load("http://www.nowvideo.at/mobile/video.php", get={'id': self.info['pattern']['ID']})
 
         m = re.search(self.LINK_FREE_PATTERN, self.html)
         if m is None:
diff --git a/module/plugins/hoster/OneFichierCom.py b/module/plugins/hoster/OneFichierCom.py
index 7847a11e9..977d45b6f 100644
--- a/module/plugins/hoster/OneFichierCom.py
+++ b/module/plugins/hoster/OneFichierCom.py
@@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
 class OneFichierCom(SimpleHoster):
     __name__    = "OneFichierCom"
     __type__    = "hoster"
-    __version__ = "0.73"
+    __version__ = "0.74"
 
     __pattern__ = r'https?://(?:www\.)?(?:(?P<ID1>\w+)\.)?(?P<HOST>1fichier\.com|alterupload\.com|cjoint\.net|d(es)?fichiers\.com|dl4free\.com|megadl\.fr|mesfichiers\.org|piecejointe\.net|pjointe\.com|tenvoi\.com)(?:/\?(?P<ID2>\w+))?'
 
@@ -46,7 +46,7 @@ class OneFichierCom(SimpleHoster):
             self.wait(wait_time, reconnect)
             self.retry(reason="You have to wait been each free download")
 
-        id = self.info['ID1'] or self.info['ID2']
+        id = self.info['pattern']['ID1'] or self.info['pattern']['ID2']
         url, inputs = self.parseHtmlForm('action="https://1fichier.com/\?%s' % id)
 
         if not url:
diff --git a/module/plugins/hoster/PromptfileCom.py b/module/plugins/hoster/PromptfileCom.py
index 22fea09ea..af38c4e15 100644
--- a/module/plugins/hoster/PromptfileCom.py
+++ b/module/plugins/hoster/PromptfileCom.py
@@ -38,9 +38,8 @@ class PromptfileCom(SimpleHoster):
         m = re.search(self.LINK_PATTERN, self.html)
         if m is None:
             self.error(_("LINK_PATTERN not found"))
-        direct = m.group(1)
-        self.logDebug("Found direct link: " + direct)
-        self.download(direct, disposition=True)
+
+        self.download(m.group(1), disposition=True)
 
 
 getInfo = create_getInfo(PromptfileCom)
diff --git a/module/plugins/hoster/TurbobitNet.py b/module/plugins/hoster/TurbobitNet.py
index 7426ea35c..9d7dcc67b 100644
--- a/module/plugins/hoster/TurbobitNet.py
+++ b/module/plugins/hoster/TurbobitNet.py
@@ -17,7 +17,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo, t
 class TurbobitNet(SimpleHoster):
     __name__    = "TurbobitNet"
     __type__    = "hoster"
-    __version__ = "0.15"
+    __version__ = "0.16"
 
     __pattern__ = r'http://(?:www\.)?turbobit\.net/(?:download/free/)?(?P<ID>\w+)'
 
@@ -42,7 +42,7 @@ class TurbobitNet(SimpleHoster):
 
 
     def handleFree(self):
-        self.url = "http://turbobit.net/download/free/%s" % self.info['ID']
+        self.url = "http://turbobit.net/download/free/%s" % self.info['pattern']['ID']
         self.html = self.load(self.url, ref=True, decode=True)
 
         rtUpdate = self.getRtUpdate()
@@ -130,7 +130,7 @@ class TurbobitNet(SimpleHoster):
 
         for b in [1, 3]:
             self.jscode = "var id = \'%s\';var b = %d;var inn = \'%s\';%sout" % (
-                          self.info['ID'], b, quote(fun), rtUpdate)
+                          self.info['pattern']['ID'], b, quote(fun), rtUpdate)
 
             try:
                 out = self.js.eval(self.jscode)
diff --git a/module/plugins/hoster/UploadingCom.py b/module/plugins/hoster/UploadingCom.py
index 2b11e3bf4..b163f2252 100644
--- a/module/plugins/hoster/UploadingCom.py
+++ b/module/plugins/hoster/UploadingCom.py
@@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo, t
 class UploadingCom(SimpleHoster):
     __name__    = "UploadingCom"
     __type__    = "hoster"
-    __version__ = "0.38"
+    __version__ = "0.39"
 
     __pattern__ = r'http://(?:www\.)?uploading\.com/files/(?:get/)?(?P<ID>\w+)'
 
@@ -47,7 +47,7 @@ class UploadingCom(SimpleHoster):
 
     def handlePremium(self):
         postData = {'action': 'get_link',
-                    'code': self.info['ID'],
+                    'code': self.info['pattern']['ID'],
                     'pass': 'undefined'}
 
         self.html = self.load('http://uploading.com/files/get/?JsHttpRequest=%d-xml' % timestamp(), post=postData)
@@ -70,7 +70,7 @@ class UploadingCom(SimpleHoster):
         self.req.http.c.setopt(HTTPHEADER, ["X-Requested-With: XMLHttpRequest"])
         self.req.http.lastURL = self.pyfile.url
 
-        res = json_loads(self.load(ajax_url, post={'action': 'second_page', 'code': self.info['ID']}))
+        res = json_loads(self.load(ajax_url, post={'action': 'second_page', 'code': self.info['pattern']['ID']}))
 
         if 'answer' in res and 'wait_time' in res['answer']:
             wait_time = int(res['answer']['wait_time'])
@@ -79,7 +79,7 @@ class UploadingCom(SimpleHoster):
         else:
             self.error(_("No AJAX/WAIT"))
 
-        res = json_loads(self.load(ajax_url, post={'action': 'get_link', 'code': self.info['ID'], 'pass': 'false'}))
+        res = json_loads(self.load(ajax_url, post={'action': 'get_link', 'code': self.info['pattern']['ID'], 'pass': 'false'}))
 
         if 'answer' in res and 'link' in res['answer']:
             url = res['answer']['link']
diff --git a/module/plugins/hoster/WebshareCz.py b/module/plugins/hoster/WebshareCz.py
index cd43de2bb..17aaff37c 100644
--- a/module/plugins/hoster/WebshareCz.py
+++ b/module/plugins/hoster/WebshareCz.py
@@ -35,13 +35,14 @@ class WebshareCz(SimpleHoster):
 
     def handleFree(self):
         api_data = self.load('https://webshare.cz/api/file_link/', post={'ident': self.fid})
+
         self.logDebug("API data: " + api_data)
+
         m = re.search('<link>(.+)</link>', api_data)
         if m is None:
             self.error(_("Unable to detect direct link"))
-        direct = m.group(1)
-        self.logDebug("Direct link: " + direct)
-        self.download(direct, disposition=True)
+
+        self.download(m.group(1), disposition=True)
 
 
     def getFileInfo(self):
diff --git a/module/plugins/hoster/ZippyshareCom.py b/module/plugins/hoster/ZippyshareCom.py
index 0f41d338a..3edf3c5c1 100644
--- a/module/plugins/hoster/ZippyshareCom.py
+++ b/module/plugins/hoster/ZippyshareCom.py
@@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
 class ZippyshareCom(SimpleHoster):
     __name__    = "ZippyshareCom"
     __type__    = "hoster"
-    __version__ = "0.61"
+    __version__ = "0.62"
 
     __pattern__ = r'(?P<HOST>http://www\d{0,2}\.zippyshare\.com)/v(?:/|iew\.jsp.*key=)(?P<KEY>\d+)'
 
@@ -57,8 +57,8 @@ class ZippyshareCom(SimpleHoster):
 
     def get_link(self):
         checksum = self.get_checksum()
-        p_url    = join("d", self.info['KEY'], str(checksum), self.pyfile.name)
-        dl_link  = urljoin(self.info['HOST'], p_url)
+        p_url    = join("d", self.info['pattern']['KEY'], str(checksum), self.pyfile.name)
+        dl_link  = urljoin(self.info['pattern']['HOST'], p_url)
         return dl_link
 
 
diff --git a/module/plugins/internal/XFSHoster.py b/module/plugins/internal/XFSHoster.py
index 2aaf18b1a..587d47f6e 100644
--- a/module/plugins/internal/XFSHoster.py
+++ b/module/plugins/internal/XFSHoster.py
@@ -16,7 +16,7 @@ from module.utils import html_unescape
 class XFSHoster(SimpleHoster):
     __name__    = "XFSHoster"
     __type__    = "hoster"
-    __version__ = "0.26"
+    __version__ = "0.27"
 
     __pattern__ = r'^unmatchable$'
 
@@ -49,10 +49,10 @@ class XFSHoster(SimpleHoster):
     LEECH_LINK_PATTERN = r'<h2>Download Link</h2>\s*<textarea[^>]*>([^<]+)'
     LINK_PATTERN       = None  #: final download url pattern
 
-    CAPTCHA_PATTERN     = r'(https?://[^"\']+?/captchas?/[^"\']+)'
-    CAPTCHA_DIV_PATTERN = r'>Enter code.*?<div.*?>(.+?)</div>'
-    RECAPTCHA_PATTERN   = None
-    SOLVEMEDIA_PATTERN  = None
+    CAPTCHA_PATTERN       = r'(https?://[^"\']+?/captchas?/[^"\']+)'
+    CAPTCHA_BLOCK_PATTERN = r'>Enter code.*?<div.*?>(.+?)</div>'
+    RECAPTCHA_PATTERN     = None
+    SOLVEMEDIA_PATTERN    = None
 
     FORM_PATTERN    = None
     FORM_INPUTS_MAP = None  #: dict passed as input_names to parseHtmlForm
@@ -234,10 +234,10 @@ class XFSHoster(SimpleHoster):
                     retries = 3
                 else:
                     delay = 1 * 60 * 60
-                    retries = 25
+                    retries = 24
 
-                self.wait(delay, True)
-                self.retry(retries, reason=_("Download limit exceeded"))
+                self.wantReconnect = True
+                self.retry(retries, delay, _("Download limit exceeded"))
 
             elif 'countdown' in self.errmsg or 'Expired' in self.errmsg:
                 self.retry(reason=_("Link expired"))
@@ -249,6 +249,7 @@ class XFSHoster(SimpleHoster):
                 self.fail(_("File too large for free download"))
 
             else:
+                self.wantReconnect = True
                 self.retry(wait_time=60, reason=self.errmsg)
 
         if self.errmsg:
@@ -311,7 +312,7 @@ class XFSHoster(SimpleHoster):
             inputs['code'] = self.decryptCaptcha(captcha_url)
             return 1
 
-        m = re.search(self.CAPTCHA_DIV_PATTERN, self.html, re.S)
+        m = re.search(self.CAPTCHA_BLOCK_PATTERN, self.html, re.S)
         if m:
             captcha_div = m.group(1)
             numerals    = re.findall(r'<span.*?padding-left\s*:\s*(\d+).*?>(\d)</span>', html_unescape(captcha_div))
-- 
cgit v1.2.3