Super do Povo Encartes Downloader
Baixa todos os encartes vigentes e todas as suas páginas via Playwright (navegador headless) + rasterização de PDF com poppler. O próprio JS do site autentica e lista os encartes; o script intercepta a resposta e, para cada encarte, baixa o PDF (quando existe) rasterizando cada página em alta resolução — só cai para as imagens prontas do site quando não há PDF.
Setup (só na primeira vez)
brew install poppler
cd superdopovo-encartes && npm install
O Chromium do Playwright é baixado automaticamente no primeiro npm install (via npx playwright install chromium se necessário).
Comando padrão
node superdopovo-encartes/download-encartes.js
Saída: ~/Downloads/Encartes/SuperDoPovo/DD-Mês/
Como funciona
- Abre Chromium headless e navega para
loja.superdopovo.com.br/booklets - Intercepta a resposta de rede de
/api/v1/booklets/<shop_id>— o site é um SPA da plataforma botvendas e essa rota exige um JWT de curta duração que o próprio JS obtém sozinho (não dá pra chamar a API direto comcurl) - Filtra por vigência: mantém só encartes com
end >= hoje(ignora vencidos; use--allpara trazer todos) - Para cada encarte:
- Se tem
pdf: baixa o PDF num arquivo temporário,pdfinfoconta as páginas,pdftoppm -jpeg -r 200rasteriza cada uma. O PDF é descartado depois — só o JPG fica. - Se não tem
pdf(pdf: null): baixa direto as imagens desheets[], que já vêm prontas do CDN público (Google Storage). - Encartes sem PDF e sem
sheets/linkssão pulados com aviso, sem quebrar o script.
- Se tem
- Pula arquivos já existentes (idempotente por página)
- Grava
manifest.jsoncom rede, data, dpi, vigência e fonte (pdfousheets) de cada encarte
Por que PDF em vez das imagens prontas (sheets)
O payload da API já traz imagens rasterizadas em sheets[], mas elas são baixa resolução (~72dpi, tipo 595×842) e às vezes têm menos páginas que o PDF real (um encarte observado tinha 4 sheets contra 5 páginas no PDF). Por isso o script sempre prefere o PDF quando ele existe, e só usa sheets como fallback nos encartes que não têm PDF (normalmente fotos soltas tipo "WhatsApp Image...", cuja imagem única já é a fonte original em boa qualidade).
Estrutura de saída
Downloads/Encartes/SuperDoPovo/16-Julho/
JPG/
1605-17-a-19-07-pagina-01.jpg (via PDF, ~2205x3150)
1605-17-a-19-07-pagina-05.jpg
1602-17-a-23-07-pagina-01.jpeg (via sheets, sem PDF disponível)
...
manifest.json
Nome do arquivo: <id>-<vigência>-pagina-NN.<ext>. O campo name da API (nome de arquivo cru, tipo "WhatsApp Image 2026-07-09 at 14.49.17.jpeg") é ignorado — vigência (start/end) é mais confiável e informativo.
Opções
# Só o encarte mais recente (teste)
node superdopovo-encartes/download-encartes.js --only-newest
# Inclui encartes já vencidos
node superdopovo-encartes/download-encartes.js --all
# Resolução alternativa de rasterização
node superdopovo-encartes/download-encartes.js --dpi 300
# Pasta de destino alternativa (conterá JPG/)
node superdopovo-encartes/download-encartes.js --output /caminho/completo
# Pasta raiz alternativa (conterá SuperDoPovo/DD-Mês/ dentro)
node superdopovo-encartes/download-encartes.js --base /outro/caminho
Comportamento ao acionar
- Executar o script direto — sem perguntas desnecessárias
- Mostrar o output (rede, data, dpi, nº encartes, nº páginas, destino)
- Confirmar a pasta com
lsse o usuário quiser verificar - Se
pdfinfo/pdftoppmausentes, o script já exibebrew install poppler - Se Playwright ausente, o script falha com mensagem clara — rodar
npm installna pastasuperdopovo-encartes/ - Se houver outro erro, mostrar a mensagem exata