def __init__(self, args): self.args = args self.logger = setup_logging(args.logfile) self.convert_storage = None self.server_actions_thread = None self.stop_input_thread = False self.input_task_queue = queue.Queue() self.ocr_tasks = dict() self.all_put_files_count = 0 self.input_files_size = 0 self.processed_files_size = 0 self.failed_files_size = 0 self.successful_get_requests = 0 self.finished_ocr_tasks = 0 self.hot_folder_path = None if sys.platform.startswith('win32'): self.hot_folder_path = self.get_hot_folder_path_from_running_tasks( ) if self.hot_folder_path is None: raise Exception("cannot find running HotFolder.exe") self.file_garbage_collection_timestamp = 0 self.self_server_ping_timestamp = 0 self.ocr_queue_is_empty_last_time_stamp = time.time() self.got_ocred_file_last_time_stamp = time.time() self.http_server_is_working = False self.convert_storage = TConvertStorage(self.logger, args.db_json, args.user_bin_file_size) self.continuous_winword_failures_count = 0 if args.clear_json: self.convert_storage.clear_database() self.create_folders() host, port = self.args.server_address.split(":") super().__init__((host, int(port)), THttpServerRequestHandler) if shutil.which("qpdf") is None: msg = "cannot find qpdf, sudo apt install qpdf" self.logger.error(msg) raise Exception(msg) if shutil.which("pdfcrack") is None: msg = "cannot find pdfcrack\nsee https://sourceforge.net/projects/pdfcrack/files/" self.logger.error(msg) raise Exception(msg) self.send_to_telegram("conversion server started on {}".format( self.args.server_address))
def parse_args(): parser = argparse.ArgumentParser() parser.add_argument("--db-json", dest='db_json', required=True) parser.add_argument("--file-no", dest='file_no', type=int) parser.add_argument("--fix-file-offset", dest='fix_file_offset', action="store_true", default=False) parser.add_argument("--disable-converted-storage-check", dest='check_converted_storage', action="store_false", default=True) parser.add_argument("--disable-input-file-storage-check", dest='check_input_file_storage', action="store_false", default=True) return parser.parse_args() if __name__ == '__main__': args = parse_args() logger = setup_logging(log_file_name="check_snowball.log") convert_storage = TConvertStorage(logger, args.db_json) convert_storage.check_storage( args.file_no, fix_file_offset=args.fix_file_offset, check_converted_storage=args.check_converted_storage, check_input_file_storage=args.check_input_file_storage)