997f777514d252b286abe3348f4998a69580bc5c
New brands: Dodge, Honda, Mitsubishi, Jeep, BMW, Fiat, Hyundai, Infiniti, Kia, Land Rover, Lexus Features: - Interactive menu to select brand and batch - Skip wait time by pressing ENTER - Years range: 1975-2026 - 5 years per batch with 3 min pause
Autoparts DB
Sistema completo de gestión de base de datos de vehículos y autopartes con dashboard web, herramientas de web scraping y múltiples interfaces de consulta.
Descripción
Autoparts DB es una solución integral para la gestión de información de vehículos que incluye:
- Base de datos SQLite normalizada con información de marcas, modelos, motores y años
- Dashboard web moderno y responsivo para consultar y explorar datos
- Herramientas de web scraping para recopilar datos de RockAuto.com
- Interfaces de línea de comandos (CLI) y programática
- Scripts de utilidad para gestión y mantenimiento de datos
Estadísticas de la Base de Datos
| Elemento | Cantidad |
|---|---|
| Marcas | 12 |
| Modelos | 10,923 |
| Motores | 10,919 |
| Combinaciones modelo-año-motor | 12,075 |
Tecnologías Utilizadas
Backend
- Python 3 - Lenguaje principal
- SQLite 3 - Base de datos
- Flask 2.3.3 - Framework web
- BeautifulSoup4 - Web scraping
- requests - HTTP client
- lxml - Parser XML/HTML
Frontend
- HTML5 - Estructura
- Bootstrap 5.3.0 - Framework CSS
- JavaScript (ES6+) - Lógica cliente
- Font Awesome 6.0.0 - Iconos
Estructura del Proyecto
Autopartes/
├── vehicle_database/ # Sistema principal de base de datos
│ ├── sql/
│ │ └── schema.sql # Esquema de la base de datos
│ ├── scripts/
│ │ ├── database_manager.py # Gestión de la BD
│ │ ├── query_interface.py # Interfaz CLI
│ │ └── csv_importer.py # Importador CSV
│ ├── data/
│ │ ├── brands.csv # Datos de marcas
│ │ ├── engines.csv # Datos de motores
│ │ └── models.csv # Datos de modelos
│ ├── vehicle_database.db # Base de datos SQLite
│ └── setup.sh # Script de inicialización
│
├── dashboard/ # Interfaz web
│ ├── server.py # Backend Flask
│ ├── index.html # Frontend HTML
│ ├── dashboard.js # Lógica JavaScript
│ └── start_dashboard.sh # Script de inicio
│
├── vehicle_scraper/ # Herramientas de web scraping
│ ├── rockauto_scraper.py # Scraper RockAuto
│ ├── rockauto_scraper_v2.py # Scraper mejorado
│ ├── scrape_toyota.py # Scraper Toyota
│ ├── scrape_nissan_ford_chevrolet.py
│ └── manual_input.py # Ingreso manual
│
├── add_*.py # Scripts para agregar datos
├── remove_*.py # Scripts de limpieza
└── QUICK_START.sh # Guía rápida de inicio
Instalación
Requisitos Previos
- Python 3.8 o superior
- pip (gestor de paquetes de Python)
Pasos de Instalación
-
Clonar el repositorio
git clone https://git.consultoria-as.com/[usuario]/Autoparts-DB.git cd Autoparts-DB -
Instalar dependencias
pip install flask requests beautifulsoup4 lxml -
Inicializar la base de datos (opcional - ya incluye datos)
cd vehicle_database ./setup.sh
Uso
Iniciar el Dashboard Web
cd dashboard
python3 server.py
El dashboard estará disponible en: http://localhost:5000
Usar la Interfaz CLI
cd vehicle_database/scripts
python3 query_interface.py
Ejecutar Web Scraping
cd vehicle_scraper
python3 rockauto_scraper_v2.py
Agregar Datos Manualmente
cd vehicle_scraper
python3 manual_input.py
API REST
El dashboard expone los siguientes endpoints:
| Endpoint | Método | Descripción |
|---|---|---|
/api/brands |
GET | Obtiene todas las marcas |
/api/models?brand=X |
GET | Obtiene modelos por marca |
/api/years |
GET | Obtiene años disponibles |
/api/engines |
GET | Obtiene motores disponibles |
/api/vehicles |
GET | Búsqueda con filtros |
Ejemplo de Uso
# Obtener todas las marcas
curl http://localhost:5000/api/brands
# Buscar vehículos por marca y año
curl "http://localhost:5000/api/vehicles?brand=Toyota&year=2020"
Esquema de Base de Datos
Tablas
brands
| Campo | Tipo | Descripción |
|---|---|---|
| id | INTEGER | Clave primaria |
| name | TEXT | Nombre de la marca |
| country | TEXT | País de origen |
| founded_year | INTEGER | Año de fundación |
models
| Campo | Tipo | Descripción |
|---|---|---|
| id | INTEGER | Clave primaria |
| brand_id | INTEGER | FK a brands |
| name | TEXT | Nombre del modelo |
| body_type | TEXT | Tipo de carrocería |
| generation | TEXT | Generación |
| production_start_year | INTEGER | Año inicio producción |
| production_end_year | INTEGER | Año fin producción |
engines
| Campo | Tipo | Descripción |
|---|---|---|
| id | INTEGER | Clave primaria |
| name | TEXT | Nombre del motor |
| displacement_cc | INTEGER | Cilindrada en cc |
| cylinders | INTEGER | Número de cilindros |
| fuel_type | TEXT | Tipo de combustible |
| power_hp | INTEGER | Potencia en HP |
| torque_nm | INTEGER | Torque en Nm |
| engine_code | TEXT | Código del motor |
years
| Campo | Tipo | Descripción |
|---|---|---|
| id | INTEGER | Clave primaria |
| year | INTEGER | Año |
model_year_engine
| Campo | Tipo | Descripción |
|---|---|---|
| id | INTEGER | Clave primaria |
| model_id | INTEGER | FK a models |
| year_id | INTEGER | FK a years |
| engine_id | INTEGER | FK a engines |
| trim_level | TEXT | Nivel de equipamiento |
| drivetrain | TEXT | Tracción |
| transmission | TEXT | Transmisión |
Diagrama de Relaciones
brands ──┐
│
├──< models ──┐
│ │
years ───┼─────────────┼──< model_year_engine
│ │
engines ─┴─────────────┘
Scripts Disponibles
Scripts de Datos
| Script | Descripción |
|---|---|
add_toyota_data.py |
Agrega datos de Toyota |
add_honda_data.py |
Agrega datos de Honda |
add_nissan_data.py |
Agrega datos de Nissan |
add_ford_data.py |
Agrega datos de Ford |
add_chevrolet_data.py |
Agrega datos de Chevrolet |
add_audi_data.py |
Agrega datos de Audi |
add_acura_data.py |
Agrega datos de Acura |
| ... | Y más marcas |
Scripts de Mantenimiento
| Script | Descripción |
|---|---|
remove_brands_and_cleanup.py |
Limpia marcas innecesarias |
check_and_remove_brands.py |
Verifica y elimina marcas |
Funcionalidades del Dashboard
Panel de Filtros
- Selección de marca
- Selección de modelo (dinámico según marca)
- Filtro por año
- Filtro por motor
Panel de Resultados
- Visualización en tarjetas
- Información detallada del vehículo
- Especificaciones del motor
- Datos de transmisión y tracción
Características
- Diseño responsivo
- Actualización en tiempo real
- Animaciones y transiciones suaves
- Soporte para múltiples idiomas
Arquitectura del Sistema
┌─────────────────┐ ┌──────────────────┐
│ RockAuto.com │────>│ Web Scraper │
└─────────────────┘ └────────┬─────────┘
│
v
┌─────────────────┐ ┌──────────────────┐
│ Manual Input │────>│ SQLite Database │
└─────────────────┘ └────────┬─────────┘
│
┌───────────────────────┼───────────────────────┐
│ │ │
v v v
┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Flask API │ │ CLI Interface │ │ CSV Importer │
└────────┬────────┘ └──────────────────┘ └──────────────────┘
│
v
┌─────────────────┐
│ Web Dashboard │
│ (Browser) │
└─────────────────┘
Contribuir
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/nueva-funcionalidad) - Commit tus cambios (
git commit -am 'Agrega nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Crea un Pull Request
Licencia
Este proyecto es de uso interno.
Contacto
Para más información, contactar al equipo de desarrollo.
Autoparts DB - Sistema de Gestión de Base de Datos de Vehículos
Description
Languages
Python
61.1%
JavaScript
17.7%
HTML
17.3%
CSS
3.5%
Shell
0.4%