# Path: common/common_html.py
# def get_head(title, css = None, html5 = False):
# 
# Path: common/utils.py
# def read_file(filename):
# def write_file(filename, text):
# def save_obj(filename, data):
# def load_obj(filename):
# def sha1(filename):
# def write_sha1(sha1, filename):
# def url_opener():
# def copy_file_from_url(url, out_file, expect_sha1 = None, max_retry = 4):
# def compress_file_data(out_filename, data, compress_type):
# def compress_file(out_filename, in_filename, compress_type):
# def uncompress_file(filename, compress_type):
# def _retry_on_eintr(func, *args):
# def safe_read(fd):
# def safe_write(fd, text):
# def print_traceback(*kwargs):
# def readline_backward(filename, buf_size=8192):
# 
# Path: common/lifo_cache.py
# class LifoCacheMem(object):
# class LifoCache(LifoCacheMem):
#     def __init__(self, cache_size):
#     def get(self, key):
#     def set(self, key, data):
#     def stat_ratio(self, count, total = None):
#     def access_stat(self, as_type = None):
#     def __init__(self, cache_name, mem_cache_size = 4, disk_cache_size = 32):
#     def get(self, filename):
#     def set(self, filename, data):
#     def access_stat(self, as_type = None):
# 
# Path: common/job_queue.py
# class JobQueue:
#     def __init__(self, filename = None):
#     def put(self, *args):
#     def remove(self):
#     def get(self):
#     def copy_items(self, get_last = False):
#     def save(self, filename):
#     def empty(self):
#     def _load(self, filename):
#     def expect(func, data, *args):
#     def put_get_save_test():
#     def thread_test():
#         def thread1(jobs):
#         def thread2(jobs):
# 
# Path: common/tool_connect.py
# class ToolConnect:
#     def __init__(self, server_name, port):
#     def _ill_formed_request(self, conn, data):
#     def wait_request(self):
#     def send_text_reply(self, conn, data):
#     def send_reply(self, conn, data):
#     def close(self):


import os
import thread
import time
import hashlib
import re
import ocr
from common import common_html
from common import utils
from common import lifo_cache
from common import job_queue
from common import tool_connect
    html = u''
    for i in queue:
        url = i[0]
        html += date_s(i[3])+' '+i[2]+" "+i[1]+" "+url+"<br />"
    return html

def do_status(queue):
    queue = queue.copy_items(True)

    html = common_html.get_head('OCR service')
    html += '<body><div>The ocr robot is runnning.<br /><hr />'
    html += "%d jobs in queue.<br/>" % len(queue)
    html += html_for_queue(queue)
    html += '</div></body></html>'

    return html

def next_pagename(match):
    return '%s/page%d-%spx-%s' % (match.group(1), int(match.group(2)) + 1, match.group(3), match.group(4))

def next_url(url):
    return re.sub(u'^(.*)/page(\d+)-(\d+)px-(.*)$', next_pagename, url)

def bot_listening(queue, cache):

    print date_s(time.time()) + " START"

    tools = tool_connect.ToolConnect('ws_ocr_daemon', 45133)

    try:

# Path: common/common_html.py
# def get_head(title, css = None, html5 = False):
# 
# Path: common/utils.py
# def read_file(filename):
# def write_file(filename, text):
# def save_obj(filename, data):
# def load_obj(filename):
# def sha1(filename):
# def write_sha1(sha1, filename):
# def url_opener():
# def copy_file_from_url(url, out_file, expect_sha1 = None, max_retry = 4):
# def compress_file_data(out_filename, data, compress_type):
# def compress_file(out_filename, in_filename, compress_type):
# def uncompress_file(filename, compress_type):
# def _retry_on_eintr(func, *args):
# def safe_read(fd):
# def safe_write(fd, text):
# def print_traceback(*kwargs):
# def readline_backward(filename, buf_size=8192):
# 
# Path: common/lifo_cache.py
# class LifoCacheMem(object):
# class LifoCache(LifoCacheMem):
#     def __init__(self, cache_size):
#     def get(self, key):
#     def set(self, key, data):
#     def stat_ratio(self, count, total = None):
#     def access_stat(self, as_type = None):
#     def __init__(self, cache_name, mem_cache_size = 4, disk_cache_size = 32):
#     def get(self, filename):
#     def set(self, filename, data):
#     def access_stat(self, as_type = None):
# 
# Path: common/job_queue.py
# class JobQueue:
#     def __init__(self, filename = None):
#     def put(self, *args):
#     def remove(self):
#     def get(self):
#     def copy_items(self, get_last = False):
#     def save(self, filename):
#     def empty(self):
#     def _load(self, filename):
#     def expect(func, data, *args):
#     def put_get_save_test():
#     def thread_test():
#         def thread1(jobs):
#         def thread2(jobs):
# 
# Path: common/tool_connect.py
# class ToolConnect:
#     def __init__(self, server_name, port):
#     def _ill_formed_request(self, conn, data):
#     def wait_request(self):
#     def send_text_reply(self, conn, data):
#     def send_reply(self, conn, data):
#     def close(self):


# Path: ocr/ocrdaemon.py
import os
import thread
import time
import hashlib
import re
import ocr
from common import common_html
from common import utils
from common import lifo_cache
from common import job_queue
from common import tool_connect

    html = u''
    for i in queue:
        url = i[0]
        html += date_s(i[3])+' '+i[2]+" "+i[1]+" "+url+"<br />"
    return html

def do_status(queue):
    queue = queue.copy_items(True)

    html = common_html.get_head('OCR service')
    html += '<body><div>The ocr robot is runnning.<br /><hr />'
    html += "%d jobs in queue.<br/>" % len(queue)
    html += html_for_queue(queue)
    html += '</div></body></html>'

    return html

def next_pagename(match):
    return '%s/page%d-%spx-%s' % (match.group(1), int(match.group(2)) + 1, match.group(3), match.group(4))

def next_url(url):
    return re.sub(u'^(.*)/page(\d+)-(\d+)px-(.*)$', next_pagename, url)

def bot_listening(queue, cache):

    print date_s(time.time()) + " START"

    tools = tool_connect.ToolConnect('ws_ocr_daemon', 45133)

    try:

        while True: