epa-cli 是一个交互式且可脚本化的命令行工具,通过 EPA 委内瑞拉五金店公开的 GraphQL 端点查询其商品目录,并通过 HTML 爬取补充门店库存数据。

Stars

5

7 天增长

暂无数据

Fork 数

0

开放 Issue

0

开源协议

暂无数据

最近更新

2026-07-29

AI 仓库情报摘要
FR-AI / ANALYSIS

为什么值得关注

该项目以清晰的架构(仓库模式将 CLI 与数据源解耦)、巧妙处理缺失 API 数据(通过尽力而为的爬取)以及完整的脚本化模式(支持 JSON 输出)脱颖而出,同时为真实商店提供了实用且用户友好的工具。

适合谁使用

  • 偏好使用 CLI 工具完成日常任务的开发者
  • 寻求更快浏览 EPA 商品目录的委内瑞拉消费者
  • 需要以编程方式访问 EPA 商品数据的集成工程师
  • 需要对商品列表进行测试或监控的 QA 或自动化工程师

典型使用场景

  • 通过关键词或精确 SKU 搜索商品,支持分页和详情查看
  • 检查每家实体店的实时库存可用性
  • 通过 JSON 输出和退出码编写价格监控或目录查找脚本
  • 通过内省探索 EPA GraphQL 模式,用于开发或分析

项目优势

  • 解耦架构:CLI 仅依赖 ProductRepository 接口,更换数据源无需修改 CLI 逻辑
  • 可脚本化的标志和多种输出格式(表格、JSON、颜色控制),便于集成到管道中
  • 弹性爬取:库存数据独立在适配器中;若爬取失败,详情仍能显示并附带降级说明
  • 默认使用浏览器 User-Agent 应对 CloudFront WAF,避免 403 错误

使用前须知

  • 门店库存数据来源于 HTML 爬取,若网站主题变更可能失效
  • 非官方 API,使用需遵守 EPA 条款,禁止大量请求
  • 部分字段(如商品特性表)因服务端渲染且无 API 暴露而未实现

README 快速开始

epa-cli

CLI interactivo por si te sientes superior al resto de la humanidad por querer usar el cli para todo, en esta ocasión para consultar el catálogo de Ferretería EPA Venezuela vía su endpoint GraphQL público (/graphql).

Uso

npm install
npm run dev

Te va a salir un menú navegable con flechas (↑↓ + Enter):

? ¿Qué quieres hacer?
❯ Buscar productos
  Buscar por SKU
  Salir

Buscar productos — escribe un término (ej. taladro) y te lista SKU, nombre, precio (con el precio de oferta tachado si aplica, formateado con la moneda de la tienda), disponibilidad y el link directo al producto, con un encabezado N resultados — página P de T. Si hay más de una página, te ofrece "Siguiente página" / "Página anterior" sin tener que repetir la búsqueda.

Buscar por SKU — escribe el SKU exacto (ej. VE-1001010) y te trae ese producto puntual, si existe.

En ambos flujos podés seleccionar "Ver detalle de un producto" (Enter sobre uno de la lista) para ver su ficha completa: descripción larga, categoría, precio, disponibilidad, calificación/reseñas si tiene, vigencia de la oferta si aplica, disponibilidad por tienda física ("Disponible en: Maracaibo, Valencia..."), y productos relacionados — que a su vez se pueden abrir con Enter, encadenando fichas.

La disponibilidad por tienda no sale de GraphQL (confirmado que no existe ahí, ver "Limitaciones confirmadas del schema") — sale de un scraping best-effort del HTML público de la página de producto (HtmlStoreAvailabilityRepository), porque ese dato viene renderizado server-side por Magento y no hay ningún endpoint (ni GraphQL ni REST) que lo exponga. Es la única parte del CLI que no habla con /graphql, y a propósito está aislada en su propio adaptador: si el theme de EPA cambia y el scraping deja de matchear, la ficha sigue mostrando todo lo demás con una nota ("no se pudo determinar") en vez de romperse. La tabla de "Características" (dimensiones, etc.) no se agregó — es la misma historia (renderizada server-side, sin API), pero no vale la pena scrapearla también por ahora.

Mientras espera la respuesta de EPA, el CLI muestra un spinner (se desactiva solo si la salida no es una terminal, por ejemplo al redirigir a un archivo).

Para compilar y correr la versión de producción:

npm run build
npm start

También se puede instala

项目描述

tienda EPA pero pa gente que le gusta usar la compu

相关仓库与替代方案

根据分类、Topic 和编程语言匹配的相似项目。

0xwilliamortiz
精选
0xwilliamortiz GitHub avatar

openclaude-improved

OpenClaude is an open-source CLI coding agent that runs on any platform and supports a wide range of LLM providers, offering the same tools and workflows as Claude Code.

AI 与机器学习大语言模型
577
RongleCat
精选
RongleCat GitHub avatar

grok-app

Grok App is a desktop command center built with Tauri 2 that wraps the local Grok Build CLI into a graphical workbench for managing sessions, projects, media, automations, and accounts.

开发者工具CLI 与终端
356
marcelpanse
精选
marcelpanse GitHub avatar

youtube-guitar-tab-parser

A CLI tool that downloads YouTube guitar lesson videos, uses Claude vision to detect and extract the tab region from sampled frames, de-duplicates lines by bar number, and assembles them into a PDF.

开发者工具CLI 与终端
165