Beispiel #1
0
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