# Читалка с иллюстрациями для iPad mini

Схема: книга в EPUB → распакована в `/media-new/books/<книга>/` → nginx в k3s раздаёт её как сайт →
iPad открывает `http://192.168.1.100:30808/books/`. Иллюстрации добавляются по 2–3 главы в день.

## Один раз

```bash
pip install lxml pillow --break-system-packages    # на сервере
sudo mkdir -p /media-new/books
kubectl apply -f books-k8s.yaml
python3 book.py unpack ~/hp1.epub /media-new/books/hp1
```

На iPad откроется `…:30808/books/hp1/`. В Safari: «Поделиться» → «На экран Домой», и получится иконка как у приложения.

## Каждый день

```bash
B=/media-new/books/hp1
python3 book.py list $B                 # номера глав
python3 book.py text $B 5 > ch5.txt     # текст главы → в ChatGPT
# ...получил картинки от ChatGPT...
python3 book.py ill $B 5 "кусок фразы из абзаца" scene1.png --caption "Косой переулок"
python3 book.py ill $B 5 "другая фраза" scene2.png
```

Картинка встаёт **после** абзаца, где нашлась фраза, и сама ужимается до 1024 px JPEG. Перезапускать nginx не нужно: достаточно обновить страницу на iPad.
Если что-то пошло не так, `book.py unill $B 5` уберёт все картинки главы, и можно вставить заново.

Правь главы только через скрипт: XHTML строгий, и одна незакрытая скобка ломает всю страницу.
`book.py check $B` проверяет все главы.

Когда книга готова, `book.py pack $B hp1-illustrated.epub` соберёт обычный EPUB, его можно открыть в iBooks офлайн.

## Промпты для ChatGPT

**Один раз, в начале чата/проекта — «стилевой паспорт»:**

> Мы иллюстрируем детскую книгу для чтения с ребёнком N лет. Стиль: тёплая книжная акварель,
> мягкий свет, без фотореализма, без сходства с актёрами из фильмов. Составь короткий визуальный
> паспорт главных героев (возраст, рост, волосы, глаза, одежда, отличительные черты) строго по тексту книги —
> дальше используй его для всех картинок, чтобы персонажи не менялись.

**На каждую главу (вставить текст из `book.py text`):**

> Вот глава 5. Выбери 2–3 сцены, которые лучше всего проиллюстрировать для ребёнка
> (не страшные, ключевые для сюжета). Для каждой дай: (1) точную короткую цитату из абзаца,
> после которого ставить картинку — дословно, 5–8 слов; (2) подпись в 2–4 слова; (3) нарисуй её
> в нашем стиле, горизонтально 4:3.

Цитату из пункта (1) передаёшь в `book.py ill` как фразу.
