cotacao-cafe
v1.3.0
Published
Biblioteca para buscar a cotação do café da Cooabriel
Maintainers
Readme
Cotação do Café - Cooabriel
Busca programaticamente a cotação diária do café Conilon da Cooabriel.
🚀 Instalação
pnpm add cotacao-cafe🖥️ CLI
Execute direto no terminal:
npx cotacao-cafeOu instale globalmente:
npm install -g cotacao-cafe
cotacao-cafeOpções disponíveis
cotacao-cafe [opções]
Opções:
-V, --version Exibe versão do pacote
-j, --json Exibe saída em formato JSON
-q, --quiet Modo silencioso (apenas erros)
-l, --limit <numero> Limita quantidade de cotações na tabela (0 = todas, padrão: 10)
--no-colors Desabilita cores no output
--no-charts Desabilita gráficos ASCII
-h, --help Exibe ajudaExemplos:
# Saída JSON para integração com scripts
cotacao-cafe --json | jq '.historicoMensal[0]'
# Mostrar todas as cotações na tabela
cotacao-cafe --limit 0
# Mostrar últimas 20 cotações
cotacao-cafe --limit 20
# Sem gráficos (mais rápido)
cotacao-cafe --no-charts
# Versão do pacote
cotacao-cafe --version📖 Uso
Cotação do dia
import { buscarCotacaoCooabriel } from 'cotacao-cafe';
async function main() {
const cotacoes = await buscarCotacaoCooabriel();
console.table(cotacoes);
}
main();Saída:
┌─────────┬─────────────┬────────────┬───────┬────────┐
│ (index) │ tipo │ data │ hora │ preco │
├─────────┼─────────────┼────────────┼───────┼────────┤
│ 0 │ Conilon 7 │ 05/12/2025 │ 10:30 │ 1360 │
│ 1 │ Conilon 7/8 │ 05/12/2025 │ 10:30 │ 1355 │
│ 2 │ Conilon 8. │ 05/12/2025 │ 10:30 │ 1350 │
└─────────┴─────────────┴────────────┴───────┴────────┘Histórico mensal
import { buscarHistoricoMensal } from 'cotacao-cafe';
const cotacoes = await buscarHistoricoMensal();
console.log(`Total: ${cotacoes.length} cotações`);
// Filtrar por tipo
const conilon7 = cotacoes.filter((c) => c.tipo === 'Conilon 7');
console.table(conilon7.slice(-5)); // Últimas 5 cotaçõesFormatando para exibição
import { buscarCotacaoCooabriel } from 'cotacao-cafe';
const cotacoes = await buscarCotacaoCooabriel();
const formatador = new Intl.NumberFormat('pt-BR', {
style: 'currency',
currency: 'BRL',
});
cotacoes.forEach((cotacao) => {
console.log(
`${cotacao.tipo.padEnd(12)} | ${cotacao.data} | ${cotacao.hora} | ${formatador.format(cotacao.preco)}`
);
});Saída formatada:
Conilon 7 | 05/12/2025 | 10:30 | R$ 1.360,00
Conilon 7/8 | 05/12/2025 | 10:30 | R$ 1.355,00
Conilon 8 | 05/12/2025 | 10:30 | R$ 1.350,00🧩 Tipos
type CotacaoCafe = {
tipo: string; // "Conilon 7", "Conilon 7/8", etc.
data: string; // "dd/mm/aaaa"
hora: string; // "hh:mm"
preco: number; // valor em reais (1360.0)
};🎯 Por que usar?
- Útil: Cotação oficial da Cooabriel é referência para produtores de café Conilon no ES
- Simples: Funções async diretas
- Completo: Cotação do dia + histórico mensal
- Tipado: TypeScript com tipos claros
- Testado: 100% de cobertura de testes
- Offline: Testes usam fixture, não depende da internet
⚠️ Limitações
- Depende da estrutura HTML da página da Cooabriel
- Pode quebrar se o site mudar o layout da tabela
- Rate limiting: não faça requests muito frequentes
🛠️ Desenvolvimento
git clone https://github.com/gattifernando/cotacao-cafe
cd cotacao-cafe
pnpm install
pnpm dev # testa contra site real
pnpm test # testes unitários (com fixtures)
pnpm test:integration # testes de integração (requisições reais)
pnpm test:all # todos os testesScripts Disponíveis
pnpm dev- Executa script de desenvolvimento com dados reaispnpm cli- Testa CLI localmentepnpm build- Compila TypeScriptpnpm test- Testes unitários (offline, com fixtures)pnpm test:integration- Testes de integração (online, contra site real)pnpm test:all- Todos os testes (unitários + integração)pnpm test:dev- Testes em modo watchpnpm typecheck- Verificação de tipospnpm lint- ESLintpnpm format- Prettier
🧪 Testes
O projeto possui dois tipos de testes:
Testes Unitários (offline)
- Usam fixtures HTML salvos
- Rápidos e confiáveis
- Não dependem do site estar no ar
- Executam no CI a cada commit
Testes de Integração (online)
- Fazem requisições reais ao site
- Validam se o scraping ainda funciona
- Detectam mudanças na estrutura do site
- Execute manualmente:
pnpm test:integration - Executam automaticamente todos os dias às 9h via GitHub Actions
- Criam uma issue automaticamente se detectarem falha
⚠️ Aviso Legal e Limitações
IMPORTANTE: Este pacote é fornecido "como está", sem garantias de qualquer tipo.
- ✋ Não nos responsabilizamos pela exatidão, completude ou uso das informações fornecidas
- 📊 Os dados são extraídos de fontes públicas e podem conter erros ou imprecisões
- ⏱️ O serviço está sujeito a indisponibilidade ou alterações na fonte de dados
- 💼 Não deve ser utilizado como única fonte para decisões comerciais ou financeiras
- 🔍 Sempre valide as informações através de fontes oficiais antes de tomar decisões
- 🛡️ O autor e contribuidores não se responsabilizam por prejuízos resultantes do uso deste pacote
Este é um projeto de código aberto para fins educacionais e informativos.
🤝 Contribuindo
Contribuições são bem-vindas! Veja CONTRIBUTING.md para detalhes.
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feat/nova-feature) - Commit suas mudanças usando Conventional Commits
- Push para a branch (
git push origin feat/nova-feature) - Abra um Pull Request
📄 Licença
MIT - veja LICENSE para detalhes.
📧 Contato
- Fernando Gatti - GitHub - LinkedIn
- Repositório: github.com/gattifernando/cotacao-cafe
