# Атрибуция изображений упражнений

Этот каталог содержит оптимизированные копии изображений из лицензированных источников
**RepDB free** и **Everkinetic**. Полные условия — в
[`docs/exercise-content-sources.md`](../../../docs/exercise-content-sources.md).

| Параметр | Значение |
|---|---|
| Дата импорта | 2026-10-20 |
| Упражнений с медиа | 380 из 876 (`exercise_library`) |
| Файлов | 2 106 WebP (702 кадра × 3 размера: 512 / 400 / 200 px) |
| Манифест соответствия | `backend/config/seed/exercise_media_map.json` |
| Таблица в БД | `exercise_media` (атрибуция хранится на каждый файл) |

Структура каталогов:

| Каталог | Кадров | Файлов | Размер | Источник |
|---|---:|---:|---:|---|
| `repdb/` | 442 | 1 326 | ≈ 12,8 MiB | RepDB free (246 упражнений) |
| `everkinetic/` | 260 | 780 | ≈ 7,1 MiB | Everkinetic (134 упражнения) |

Правила именования: `{source}/{source_id}-{pose}-{512|400|200}.webp`. В `exercise_media.path`
записан базовый файл 512 px; `-400`/`-200` — уменьшенные варианты для `srcset`. Изображения
никогда не хотлинкаются: файлы хранятся локально и отдаются с нашего домена.

---

## RepDB free

**Обязательная атрибуция (дословно):**

```text
Exercise data by RepDB (repdb.co)
https://repdb.co
```

- Источник: <https://repdb.co>, репозиторий <https://github.com/RepDB/exercise-dataset>
- Зафиксированный коммит: `b407c5951a027a27817fb2a5cee9ec9feffc4dc7` (v1.48, скачано 2026-10-20)
- Лицензия: **RepDB Free Tier License v1.0** —
  <https://github.com/RepDB/exercise-dataset/blob/b407c5951a027a27817fb2a5cee9ec9feffc4dc7/LICENSE-DATA.md>
- Ссылка на каждый файл-источник хранится в `exercise_media.source_url` и ведёт на GitHub blob
  этого коммита, например:
  `https://github.com/RepDB/exercise-dataset/blob/b407c5951a027a27817fb2a5cee9ec9feffc4dc7/images/flat/arnold-press-start.webp`

**Изменения изображений.** Исходники RepDB — уже WebP 512×512. Файлы `-512` скопированы без
изменений; `-400` и `-200` — пропорциональное уменьшение (даунскейл). Апскейл, кадрирование,
перекраска и удаление фона не выполнялись — это разрешённые лицензией модификации и ничего
сверх них.

**Ограничения лицензии, важные нам.** Использование внутри приложения (в т.ч. коммерческое)
разрешено при наличии видимой атрибуции. Датасет (или производный датасет) нельзя
перепубликовывать, перепродавать и отдавать как API. Изображения не использовались как
входные/reference/training-материалы генеративных моделей. Платный тир (анимации
`premium-samples/`) не используется.

---

## Everkinetic

**Полный блок атрибуции:**

```text
Иллюстрации: Everkinetic (Greg Priday), https://github.com/everkinetic/data
Лицензия: CC BY-SA 4.0, https://creativecommons.org/licenses/by-sa/4.0/
Изменения: изображения уменьшены до 512/400/200 px, конвертированы из PNG в WebP
и вписаны в белое поле (letterbox) без кадрирования и без апскейла.
Адаптированные изображения распространяются по CC BY-SA 4.0.
Оригинал предоставляется «как есть», без гарантий.
```

- Источник: репозиторий <https://github.com/everkinetic/data>
- Зафиксированный коммит: `446bb9a3d0c3beb6b84f7c9d77dfc8af707a2ab6` (скачано 2026-10-20)
- Лицензия: **CC BY-SA 4.0** —
  <https://github.com/everkinetic/data/blob/446bb9a3d0c3beb6b84f7c9d77dfc8af707a2ab6/LICENSE.md>
- Ссылка на каждый исходный PNG — в `exercise_media.source_url`, например:
  `https://github.com/everkinetic/data/blob/446bb9a3d0c3beb6b84f7c9d77dfc8af707a2ab6/dist/png/0213-relaxation.png`
- Соответствие поз: `*-relaxation.png` → `pose='start'`, `*-tension.png` → `pose='peak'`;
  если кадр один — `pose='main'`.

**Описание изменений (для CC BY-SA).** Каждый PNG:

1. при необходимости сконвертирован из палитрового режима в truecolor (`imagepalettetotruecolor`);
2. пропорционально уменьшен так, чтобы поместиться в квадрат 512 / 400 / 200 px;
3. вписан в белое поле соответствующего размера без кадрирования и без апскейла
   (изображения меньше целевого размера не растягиваются);
4. сохранён в WebP (quality 82).

Композиты из Everkinetic и RepDB не делались: на каждое упражнение выбран ровно один источник.

### NOTICE (CC BY-SA 4.0)

```text
Файлы в frontend/public/exercises/everkinetic/ являются адаптированными версиями
иллюстраций проекта Everkinetic (автор: Greg Priday,
https://github.com/everkinetic/data) и распространяются на условиях
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0),
https://creativecommons.org/licenses/by-sa/4.0/.

Изменения: уменьшение до 512/400/200 px, конвертация PNG → WebP,
вписывание в белое поле без кадрирования; палитровые PNG переведены в truecolor.

Оригинальные изображения предоставляются «как есть», без каких-либо гарантий.
Имя Everkinetic не используется для обозначения одобрения этого приложения.
На адаптированные изображения не накладываются дополнительные ограничения
(DRM, запрет скачивания, обязательная подписка): получатель может использовать их
дальше на условиях CC BY-SA 4.0.
```

---

## Другие источники

- **free-exercise-db** — только текст и метаданные (Unlicense).
  Изображения free-exercise-db в приложении **не используются**: ни один файл не скопирован,
  `exercise_media.source` никогда не равен `free-exercise-db`, исторический
  `exercise_library.image_path` не выводится в API/UI и не подставляется как fallback.
- **hasaneyldrm/exercises-dataset** — только справочник русских терминов; медиа
  (© Gym visual) не используется.
- **wger** — не импортируется.

Сырые датасеты RepDB/Everkinetic в репозиторий не коммитятся: здесь лежат только
оптимизированные файлы и эта атрибуция.

---

## Как читать атрибуцию

Источник истины — поля `exercise_media` (`source`, `license`, `author`, `source_url`), а не
EXIF, имена файлов или захардкоженные строки во фронтенде. Если у строки нет полной
атрибуции или источник вне allowlist, изображение не рендерится (fail closed). Короткие
строки для карточки: `Источник: RepDB (repdb.co)` и `Иллюстрация: Everkinetic · CC BY-SA 4.0`,
полные формулировки — выше и на публичной странице «Источники и лицензии».
