Wocart
Wocart runs the whole cash-on-delivery business for Algerian stores: an Arabic-first checkout, phone verification, Yalidine, ZR Express, NOEST, Guepex and 82 EcoTrack couriers, your own drivers, and M
翻訳待ち
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Coleta preços online de produtos industrializados (com EAN) de supermercados da Região Metropolitana de Campinas, guarda em SQLite com histórico, e (nas próximas fases) permite buscar um produto e ver o ranking do mais barato ao mais caro.
database.py (com categorias, identidade de mercado e migração idempotente).coletores/vtex.py) e VIP Commerce
(coletores/vipcommerce.py), cada um reaproveitável entre mercados da mesma plataforma.config/categorias.json): Mercearia, Bebidas, Limpeza, Higiene, Laticínios
(Hortifrúti entra como "em breve"). Cada produto é etiquetado pela categoria do termo que o achou.cor_badge (monograma) + loja_ref gravados.analise/normalizar.py): extrai gramatura do nome e calcula
R$/kg, R$/L, R$/un (~97% de cobertura; casos ambíguos ficam sem valor de propósito).analise/ranking.py): busca por nome (acento/ordem-insensível) ou EAN
e ordena do mais barato ao mais caro entre mercados.api/main.py): /categorias, /categoria/{slug}, /buscar?q=,
/produto/{ean}, /historico/{ean}, cesta (/cesta) e lista/alertas
(/lista GET/POST com quantidade, /lista/{ean} DELETE, /alertas). Cada linha de
preço vem com identidade do mercado, link do produto no site, sparkline e tendência.lista.comprado).coleta_diaria.bat) + notificação toast (notificar_alertas.py).front/index.html): página única acessível (AA, mobile-first) — busca +
chips de categoria (com "em breve"), cards expansíveis, ranking por mercado com
monograma colorido, sparkline de histórico (rótulo textual + aria-label),
selo "menor preço", e rótulo "preço de loja online · atualizado em {data}".coletar.py popula tudo; amostra.py e analise/renormalizar.py como utilitários.| Mercado | Plataforma | Status |
|---|---|---|
| Savegnago | VTEX | ✅ ativo |
| Covabra | VTEX | ✅ ativo |
| Atacadão | VTEX | ✅ ativo (atacarejo; loja campinas-dom-pedro, preço online uniforme) |
| Enxuto | VIP Commerce | ✅ ativo (org 153; token gerado automaticamente) |
| Super Dalben | VIP Commerce | ✅ ativo (org 29; token gerado automaticamente) |
| Tenda Atacado | API própria | ✅ ativo (token X-Authorization gerado automaticamente) |
| Super Pague Menos | Convertiez | ✅ ativo (fallback HTML: EAN só na página do produto) |
| Carrefour | VTEX | ⛔ adiado — Cloudflare bloqueia todo /api/ (503) até no navegador real |
paguemenos.com.bré a farmácia (Fortaleza); o supermercado de Campinas ésuperpaguemenos.com.br. Enxuto usaenxuto.com(não.com.br).
"VTEX-first": onde o mercado é VTEX, consumimos o JSON de catálogo (
/api/catalog_system/pub/products/search/) em vez de parsear HTML.
iniciar.batEle prepara o ambiente na primeira vez, sobe o servidor e abre o navegador em http://localhost:8080. Para parar, feche a janela preta. Pronto.
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -r requirements.txt
copy .env.example .env # ajuste se quiser
python coletar.py # todos os mercados ativos
python coletar.py savegnago # só um mercado
python amostra.py # query de amostra (contagens, preços, histórico)
python -m analise.ranking "café brasileiro" # ranking por nome (CLI)
python -m analise.ranking 7891000100103 # ranking por EAN (CLI)
python -m analise.renormalizar # recalcula R$/un sem re-scraping
python -m uvicorn api.main:app --port 8000 # sobe API + front em http://localhost:8000
python notificar_alertas.py # checa a lista e notifica alertas (toast)
agendar_coleta.bat # registra a coleta diária no Windows (roda 1x)
config/mercados.json # mercados: slug, url_base, plataforma, ativo, classe do coletor
config/sementes.json # ~40 termos de busca (industrializados comuns)
coletores/base.py # interface Coletor + ItemColeta + checagem de robots.txt
coletores/vtex.py # coletor VTEX genérico (paginação, pacing, validação de EAN)
coletores/savegnago.py # config específica do Savegnago (delega ao genérico)
db/schema.sql # DDL; precos é APPEND-ONLY (histórico)
db/database.py # conexão + upsert de produtos/mercados + insert de preços
coletar.py # entrypoint: orquestra, isola falhas por mercado
amostra.py # query de amostra
precos; nada é
sobrescrito. Rodar 2x gera 2 snapshots por produto.precos.origem = 'online'.robots.txt, delay ≥ 1s por domínio (configurável),
User-Agent identificável (header From/X-Bot-Contato), sem paralelismo no mesmo domínio.Fazer scraping pode conflitar com os Termos de Uso de cada site. O uso desta
ferramenta é de responsabilidade do operador. Mantenha volume baixo e uso pessoal,
respeite robots.txt e o pacing. Isto não é aconselhamento jurídico.
sc/CEP).