API local

A API local expõe o JPGBoost como um serviço HTTP/JSON na sua máquina. Permite-lhe controlar a importação, as definições e a exportação a partir de qualquer linguagem capaz de enviar um pedido HTTP.

Incluído no Free

Esta funcionalidade está disponível tanto no JPGBoost Free como no Pro. No Free, cada imagem processada conta para a quota diária: 50 imagens por dia e 5 MB por ficheiro. O JPGBoost Pro remove ambos os limites.

Ativar a API

A API está desativada por predefinição. Ativa-se em segundos:

  1. Abra Definições (⌘,) e depois o separador API local.
  2. Marque a caixa de ativação. O servidor arranca de imediato.
  3. Ajuste a porta se necessário. O valor predefinido é 51823.
  4. Copie o token de autenticação apresentado logo abaixo. Um botão permite regenerá-lo a qualquer momento.
A API permanece na sua máquina

A porta só está aberta na interface de loopback. Nenhum outro dispositivo da rede pode aceder à API, mesmo conhecendo o seu endereço IP e o seu token.

Autenticação

Cada pedido tem de levar o cabeçalho Authorization com o seu token. Sem ele, ou com um token inválido, a API responde 401.

TOKEN="<token apresentado em Definições>"
BASE="http://127.0.0.1:51823/v1"

curl -s -H "Authorization: Bearer $TOKEN" "$BASE/status"

Referência de rotas

Todas as rotas têm o prefixo /v1 e devolvem JSON estruturado: tamanho antes e depois, rácio de compressão, e o possível erro de cada ficheiro.

MétodoRotaFunção
GET/v1/statusNúmero de imagens, qualidade e formato globais
POST/v1/importImportar ficheiros a partir dos seus caminhos
POST/v1/settingsAlterar a qualidade, o formato ou aplicar um perfil
GET/v1/imagesListar as imagens do lote atual
POST/v1/exportExportar todo o lote para uma pasta
POST/v1/clearEsvaziar a lista
POST/v1/images/{id}/qualityDefinir a qualidade de uma imagem (null para voltar à definição global)
POST/v1/images/{id}/exportExportar uma única imagem para um caminho específico
DELETE/v1/images/{id}Remover uma imagem do lote
GET/v1/profilesListar os perfis de exportação
POST/v1/profilesCriar ou substituir um perfil
DELETE/v1/profiles/{nome}Eliminar um perfil (nome codificado para o URL)

Exemplos passo a passo

Consultar o estado atual

curl -s -H "Authorization: Bearer $TOKEN" "$BASE/status"

Importar ficheiros

curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"paths": ["/caminho/para/imagem1.png", "/caminho/para/imagem2.jpg"]}' \
  "$BASE/import"

Alterar a qualidade e o formato

curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"quality": 80, "format": "webp"}' \
  "$BASE/settings"

Listar as imagens atuais

A resposta indica, para cada imagem, o seu identificador, o seu estado, o seu tamanho antes e depois, o seu rácio e o possível erro.

curl -s -H "Authorization: Bearer $TOKEN" "$BASE/images"

Exportar o lote

A exportação aguarda que qualquer compressão em curso termine antes de escrever os ficheiros. Este tempo de espera é configurável com waitTimeoutSeconds, fixado em 30 segundos por predefinição.

curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"folder": "/caminho/de/saida", "waitTimeoutSeconds": 30}' \
  "$BASE/export"

Esvaziar a lista

curl -s -X POST -H "Authorization: Bearer $TOKEN" "$BASE/clear"

Atuar sobre uma imagem específica

Cada imagem tem um identificador, devolvido por /v1/images. Permite tratá-la de forma individual.

# Qualidade específica de uma imagem
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"quality": 92}' \
  "$BASE/images/<id>/quality"

# Voltar à definição global para esta imagem
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"quality": null}' \
  "$BASE/images/<id>/quality"

# Exportar uma única imagem para um caminho específico
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"path": "/caminho/de/saida/foto.webp"}' \
  "$BASE/images/<id>/export"

# Remover uma imagem do lote
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" "$BASE/images/<id>"

Perfis de exportação via a API

A API expõe a mesma lista de perfis que a interface. Consulte o guia Perfis de exportação para conhecer a regra de prioridade. No JPGBoost Free, o limite de um único perfil aplica-se também aqui: POST /v1/profiles recusa a criação de um segundo perfil, mas continua a aceitar a substituição do perfil existente com o mesmo nome.

# Criar ou substituir um perfil (mesmo nome = substituição)
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Web JPEG", "format": "jpeg", "quality": 70, "destinationFolder": "/caminho/de/saida"}' \
  "$BASE/profiles"

# Listar os perfis
curl -s -H "Authorization: Bearer $TOKEN" "$BASE/profiles"

# Eliminar um perfil (o espaço transforma-se em %20 no URL)
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" "$BASE/profiles/Web%20JPEG"

# Aplicar um perfil às definições globais
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"profile": "Web JPEG"}' "$BASE/settings"

# Exportar para a pasta do perfil, sem voltar a indicar "folder"
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"profile": "Web JPEG"}' "$BASE/export"
Nomes de perfis num URL

A rota de eliminação coloca o nome do perfil no URL, pelo que tem de estar codificado. Um espaço transforma-se em %20, como em /v1/profiles/Web%20JPEG.

O marcador predefinido não é exposto aqui

Consulte o perfil predefinido no guia de Perfis de exportação. Essa definição só é feita em Definições → Perfis, nunca através de POST /v1/profiles. Atualizar um perfil existente através desta rota preserva o seu estado predefinido tal como está, sem nunca o repor.

Verificar que tudo funciona

Dois scripts são incluídos dentro da aplicação, em Contents/Resources. Execute-os com o JPGBoost aberto e a API ativada. Pedem o token pelo teclado, a menos que a variável de ambiente TOKEN já esteja definida, o que permite encadeá-los numa integração contínua.

Conjunto de verificações

Verifica a autenticação, o encaminhamento e a validação de parâmetros, com uma saída ✓/✗. Apenas leitura por predefinição; se lhe for dada uma imagem, também realiza um ciclo real de importação e exportação.

SCRIPTS=/Applications/JPGBoost.app/Contents/Resources

"$SCRIPTS/test_local_api.sh"
"$SCRIPTS/test_local_api.sh" /caminho/para/imagem.png

Percurso guiado

Percorre passo a passo a sequência completa descrita acima de forma legível, desde a recusa sem token até à exportação final, passando pelo estado, pela importação, pelas definições e pela lista.

"$SCRIPTS/local_api_demo.sh" /caminho/para/imagem.png
Onde são escritos os ficheiros

O percurso guiado exporta para uma pasta temporária, cujo caminho apresenta no final da execução. Nada é escrito na própria aplicação.

Segurança e privacidade

  • O servidor só escuta na interface de loopback (127.0.0.1), o que significa que só é acessível a partir do seu Mac. Nunca está exposto à internet.
  • Nenhuma imagem viaja pela internet. A API apenas controla o motor de compressão local.
  • O token é gerado na sua máquina. Regenere-o se achar que pode ter sido divulgado, por exemplo após colá-lo num script partilhado.
  • Desative a API quando não a estiver a usar: esse é o seu estado predefinido.