diff options
-rw-r--r-- | captcha/ShareonlineBiz.py | 48 | ||||
-rw-r--r-- | captcha/captcha.py | 6 | ||||
-rw-r--r-- | module/remote/SocketServer.py | 2 | ||||
-rw-r--r-- | pyLoadCli.py | 2 |
4 files changed, 47 insertions, 11 deletions
diff --git a/captcha/ShareonlineBiz.py b/captcha/ShareonlineBiz.py index 5c8e682f4..5d0eb37b8 100644 --- a/captcha/ShareonlineBiz.py +++ b/captcha/ShareonlineBiz.py @@ -1,33 +1,63 @@ -from captcha import OCR +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +#Copyright (C) 2009 kingzero, RaNaN +# +#This program is free software; you can redistribute it and/or modify +#it under the terms of the GNU General Public License as published by +#the Free Software Foundation; either version 3 of the License, +#or (at your option) any later version. +# +#This program is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +#See the GNU General Public License for more details. +# +#You should have received a copy of the GNU General Public License +# along with this program; if not, see <http://www.gnu.org/licenses/>. +# +### import urllib +from captcha import OCR + class ShareonlineBiz(OCR): def __init__(self): OCR.__init__(self) - def get_captcha(self, image): - urllib.urlretrieve("http://www.share-online.biz/captcha.php", "captcha.jpeg") + def get_captcha(self, image): self.load_image(image) self.to_greyscale() self.image = self.image.resize((160, 50)) self.pixels = self.image.load() self.threshold(1.85) - self.eval_black_white(240) - self.derotate_by_average() + #self.eval_black_white(240) + #self.derotate_by_average() letters = self.split_captcha_letters() final = "" - i = 0 for letter in letters: self.image = letter - self.image.save(str(i) + ".jpeg") - self.run_gocr() + self.run_tesser() final += self.result_captcha - i += 1 + + #replace common errors + final = final.replace("A", "4") + final = final.replace("‘5", "3") + final = final.replace("‘1", "7") + final = final.replace("‘L", "2") + final = final.replace("T", "7") + final = final.replace("b", "6") + final = final.replace("B", "2") + final = final.replace("I", "1") + final = final.replace("X", "1") return final + #tesseract at 60% + if __name__ == '__main__': ocr = ShareonlineBiz() + urllib.urlretrieve("http://www.share-online.biz/captcha.php", "captcha.jpeg") print ocr.get_captcha('captcha.jpeg') diff --git a/captcha/captcha.py b/captcha/captcha.py index 48816940d..7092e21c1 100644 --- a/captcha/captcha.py +++ b/captcha/captcha.py @@ -216,8 +216,10 @@ class OCR(object): if black_pixel_in_col == False and started == True: rect = (firstX, topY, lastX, bottomY) new_captcha = captcha.crop(rect) - - letters.append(new_captcha) + + w, h = new_captcha.size + if w > 5 and h > 5: + letters.append(new_captcha) started = False bottomY, topY = 0, height diff --git a/module/remote/SocketServer.py b/module/remote/SocketServer.py index 297a9a422..75916a52b 100644 --- a/module/remote/SocketServer.py +++ b/module/remote/SocketServer.py @@ -11,6 +11,7 @@ import asynchat import asyncore import socket import threading +import time from RequestHandler import RequestHandler @@ -67,6 +68,7 @@ class SecondaryServerSocket(asynchat.async_chat): def collect_incoming_data(self, data): self.data += data def found_terminator(self): + time.sleep(0.2) # if response is received to fast client gets an error O_o ?!?!? rep = self.handler.proceed(self.data) self.push(rep) self.data = "" diff --git a/pyLoadCli.py b/pyLoadCli.py index 6f38a40e7..378b97de9 100644 --- a/pyLoadCli.py +++ b/pyLoadCli.py @@ -38,6 +38,7 @@ class pyLoadCli: self.println(1, blue("py") + yellow("Load") + white(" Command Line Interface")) self.println(2, "") + self.file_list = {} self.thread.push_exec("get_links") @@ -84,6 +85,7 @@ class pyLoadCli: """Handle incoming data""" if obj.command == "update": #print updated information + print "\033[J" #clear screen self.println(1, blue("py") + yellow("Load") + white(" Command Line Interface")) self.println(2, "") self.println(3, white("%s Downloads:" % (len(obj.data)))) |