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.
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:
- Abra Definições (⌘,) e depois o separador API local.
- Marque a caixa de ativação. O servidor arranca de imediato.
- Ajuste a porta se necessário. O valor predefinido é
51823. - Copie o token de autenticação apresentado logo abaixo. Um botão permite regenerá-lo a qualquer momento.
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étodo | Rota | Função |
|---|---|---|
| GET | /v1/status | Número de imagens, qualidade e formato globais |
| POST | /v1/import | Importar ficheiros a partir dos seus caminhos |
| POST | /v1/settings | Alterar a qualidade, o formato ou aplicar um perfil |
| GET | /v1/images | Listar as imagens do lote atual |
| POST | /v1/export | Exportar todo o lote para uma pasta |
| POST | /v1/clear | Esvaziar a lista |
| POST | /v1/images/{id}/quality | Definir a qualidade de uma imagem (null para voltar à definição global) |
| POST | /v1/images/{id}/export | Exportar uma única imagem para um caminho específico |
| DELETE | /v1/images/{id} | Remover uma imagem do lote |
| GET | /v1/profiles | Listar os perfis de exportação |
| POST | /v1/profiles | Criar 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"
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.
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
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.