def retrieve(key, path): epub = Epub() epub.expand(path) space = Space(epub) line_order = LineOrder(key, len(space)) def read_int(bit_size): bit_buffer = '' for i in range(bit_size): if space[line_order.next()]: bit_buffer += '1' else: bit_buffer += '0' return int(bit_buffer, 2) header_size = read_int(HEADER_BIT_SIZE) message_size = read_int(header_size) message = '' for i in range(0, message_size, CHAR_BIT_SIZE): message += chr(read_int(CHAR_BIT_SIZE)) epub.cleanup() return message