Локальный API
Локальный API предоставляет JPGBoost в виде HTTP/JSON-сервиса на вашей машине. Он позволяет управлять импортом, настройками и экспортом из любого языка, способного отправлять HTTP-запросы.
Эта функция доступна как в JPGBoost Free, так и в Pro. Во Free каждое обработанное изображение учитывается в дневном лимите: 50 изображений в день и 5 МБ на файл. JPGBoost Pro снимает оба ограничения.
Активация API
API отключён по умолчанию. Он активируется за секунды:
- Откройте Настройки (⌘,), затем вкладку Локальный API.
- Отметьте флажок активации. Сервер запускается немедленно.
- При необходимости настройте порт. Значение по умолчанию —
51823. - Скопируйте токен аутентификации, отображаемый чуть ниже. Кнопка позволяет перегенерировать его в любой момент.
Порт открыт только на интерфейсе обратной связи. Ни одно другое устройство в сети не может получить доступ к API, даже зная ваш IP-адрес и токен.
Аутентификация
Каждый запрос должен содержать заголовок Authorization с вашим токеном. Без него, или с недействительным токеном, API отвечает 401.
TOKEN="<токен, показанный в Настройках>"
BASE="http://127.0.0.1:51823/v1"
curl -s -H "Authorization: Bearer $TOKEN" "$BASE/status"
Справочник маршрутов
Все маршруты имеют префикс /v1 и возвращают структурированный JSON: размер до и после, коэффициент сжатия и возможную ошибку каждого файла.
| Метод | Маршрут | Функция |
|---|---|---|
| GET | /v1/status | Количество изображений, глобальное качество и формат |
| POST | /v1/import | Импорт файлов по их путям |
| POST | /v1/settings | Изменение качества, формата или применение профиля |
| GET | /v1/images | Список изображений текущей группы |
| POST | /v1/export | Экспорт всей группы в папку |
| POST | /v1/clear | Очистка списка |
| POST | /v1/images/{id}/quality | Установка качества изображения (null для возврата к глобальной настройке) |
| POST | /v1/images/{id}/export | Экспорт одного изображения в определённый путь |
| DELETE | /v1/images/{id} | Удаление изображения из группы |
| GET | /v1/profiles | Список профилей экспорта |
| POST | /v1/profiles | Создание или замена профиля |
| DELETE | /v1/profiles/{имя} | Удаление профиля (имя закодировано для URL) |
Пошаговые примеры
Получение текущего статуса
curl -s -H "Authorization: Bearer $TOKEN" "$BASE/status"
Импорт файлов
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"paths": ["/путь/к/изображению1.png", "/путь/к/изображению2.jpg"]}' \
"$BASE/import"
Изменение качества и формата
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"quality": 80, "format": "webp"}' \
"$BASE/settings"
Список текущих изображений
Ответ указывает для каждого изображения его идентификатор, статус, размер до и после, коэффициент и возможную ошибку.
curl -s -H "Authorization: Bearer $TOKEN" "$BASE/images"
Экспорт группы
Экспорт ждёт завершения текущего сжатия перед записью файлов. Это время ожидания настраивается с помощью waitTimeoutSeconds, по умолчанию установлено в 30 секунд.
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"folder": "/путь/к/выводу", "waitTimeoutSeconds": 30}' \
"$BASE/export"
Очистка списка
curl -s -X POST -H "Authorization: Bearer $TOKEN" "$BASE/clear"
Действия над конкретным изображением
Каждое изображение имеет идентификатор, возвращаемый /v1/images. Это позволяет обрабатывать его индивидуально.
# Конкретное качество изображения
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"quality": 92}' \
"$BASE/images/<id>/quality"
# Возврат к глобальной настройке для этого изображения
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"quality": null}' \
"$BASE/images/<id>/quality"
# Экспорт одного изображения в определённый путь
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"path": "/путь/к/выводу/фото.webp"}' \
"$BASE/images/<id>/export"
# Удаление изображения из группы
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" "$BASE/images/<id>"
Профили экспорта через API
API предоставляет тот же список профилей, что и интерфейс. См. руководство Профили экспорта, чтобы узнать правило приоритета. В JPGBoost Free ограничение в один профиль действует и здесь: POST /v1/profiles отклоняет создание второго профиля, но по-прежнему принимает перезапись существующего профиля под тем же именем.
# Создание или замена профиля (то же имя = замена)
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Web JPEG", "format": "jpeg", "quality": 70, "destinationFolder": "/путь/к/выводу"}' \
"$BASE/profiles"
# Список профилей
curl -s -H "Authorization: Bearer $TOKEN" "$BASE/profiles"
# Удаление профиля (пробел становится %20 в URL)
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" "$BASE/profiles/Web%20JPEG"
# Применение профиля к глобальным настройкам
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"profile": "Web JPEG"}' "$BASE/settings"
# Экспорт в папку профиля без повторного указания "folder"
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"profile": "Web JPEG"}' "$BASE/export"
Маршрут удаления помещает имя профиля в URL, поэтому его нужно закодировать. Пробел становится %20, как в /v1/profiles/Web%20JPEG.
См. профиль по умолчанию в руководстве Профили экспорта. Эта настройка производится только в Настройках → Профили, никогда через POST /v1/profiles. Обновление существующего профиля через этот маршрут сохраняет его статус по умолчанию неизменным, никогда его не сбрасывая.
Проверка работоспособности
Два скрипта включены внутри приложения, в Contents/Resources. Запускайте их при открытом JPGBoost и активированном API. Они запрашивают токен с клавиатуры, если только переменная окружения TOKEN уже не установлена, что позволяет объединять их в цепочку в непрерывной интеграции.
Набор проверок
Проверяет аутентификацию, маршрутизацию и валидацию параметров, с выводом ✓/✗. По умолчанию только для чтения; если ему передать изображение, он также выполнит реальный цикл импорта-экспорта.
SCRIPTS=/Applications/JPGBoost.app/Contents/Resources
"$SCRIPTS/test_local_api.sh"
"$SCRIPTS/test_local_api.sh" /путь/к/изображению.png
Пошаговый сценарий
Проходит шаг за шагом всю описанную выше последовательность в удобочитаемой форме, от отказа без токена до финального экспорта, через статус, импорт, настройки и список.
"$SCRIPTS/local_api_demo.sh" /путь/к/изображению.png
Пошаговый сценарий экспортирует во временную папку, путь к которой отображается в конце выполнения. Ничего не записывается в само приложение.
Безопасность и конфиденциальность
- Сервер слушает только на интерфейсе обратной связи (
127.0.0.1), то есть доступен только с вашего Mac. Никогда не выставляется в интернет. - Ни одно изображение не проходит через интернет. API управляет только локальным движком сжатия.
- Токен генерируется на вашей машине. Перегенерируйте его, если считаете, что он мог стать известным, например после вставки в общий скрипт.
- Отключайте API, когда не используете его: это его состояние по умолчанию.