Anime Scrapper es una solución completa para obtener información sobre animes desde varios sitios web populares. Incluye una herramienta de scraping de línea de comandos y una API REST para acceder a los datos almacenados. Con esta herramienta puedes obtener datos como títulos, sinopsis, episodios, calificaciones y más, todo de manera rápida y eficiente.
- 🚀 Rápido y Eficiente: Aprovecha la velocidad de Bun.js para realizar scraping rápido
- 🌐 Soporte Multi-Sitio: Extrae información de múltiples fuentes de anime
- 💾 Exportación de Datos: Guarda los resultados en formatos JSON o CSV
- 🔍 Búsqueda Avanzada: Encuentra animes por nombre, género, temporada, etc.
- 🖼️ Descarga de Imágenes: Opción para descargar portadas e imágenes
- 🔄 API REST: Accede a los datos a través de una API bien estructurada
- 📊 Base de Datos: Almacenamiento persistente con Supabase
- 📱 Búsqueda en Tiempo Real: Búsqueda de texto completo para encontrar animes rápidamente
- Clona este repositorio:
git clone https://github.com/tuusuario/anime-scrapper.git
cd anime-scrapper
- Instala las dependencias:
bun install
- Configura las variables de entorno:
cp .env.example .env
# Edita el archivo .env con tus credenciales de Supabase
Para personalizar las fuentes y opciones de scraping, edita el archivo config.js
:
// Ejemplo de configuración
module.exports = {
sources: ['crunchyroll', 'funimation'],
downloadImages: true,
outputFormat: 'json'
};
# Comando básico
bun run index.js
# Buscar por nombre de anime
bun run index.js --search "Naruto"
# Especificar fuentes
bun run index.js --source crunchyroll
# Limitar resultados
bun run index.js --limit 10
# Exportar a CSV
bun run index.js --export csv
Iniciar el servidor:
bun run start:api
Endpoints disponibles:
# Obtener todos los animes (paginados)
GET /api/animes?page=1
# Obtener los últimos animes
GET /api/animes/latest?limit=10
# Obtener animes en emisión
GET /api/animes/broadcast?limit=20
# Obtener animes por rating
GET /api/animes/rating?limit=15
# Buscar animes por texto
GET /api/animes/search/:query?page=1&pageSize=10
# Obtener información detallada de un anime
GET /api/animes/:animeId
# Obtener episodios de un anime
GET /api/animes/:animeId/episodes?offset=0&limit=12
{
"animeId": "attack-on-titan",
"title": "Attack on Titan",
"originalTitle": "進撃の巨人",
"episodes": 75,
"status": "Finalizado",
"genres": ["Acción", "Drama", "Fantasía"],
"rating": 9.2,
"images": {
"poster": "https://example.com/poster.jpg",
"banner": "https://example.com/banner.jpg"
}
}
anime-scrapper/
├── index.js # Punto de entrada CLI
├── src/
│ ├── scrapers/ # Módulos de scraping para cada sitio
│ ├── services/ # Servicios (base de datos, etc.)
│ ├── utils/ # Utilidades y helpers
│ ├── enums/ # Enumeraciones y constantes
│ └── types/ # Tipos TypeScript
├── api/
│ ├── router/ # Rutas de la API
│ ├── controllers/ # Controladores de la API
│ └── index.ts # Punto de entrada de la API
├── config.js # Configuración principal
└── README.md # Este archivo
Las contribuciones son siempre bienvenidas!
- Fork el proyecto
- Crea una nueva rama (
git checkout -b feature/amazing-feature
) - Realiza tus cambios
- Commit tus cambios (
git commit -m 'Add some amazing feature'
) - Push a la rama (
git push origin feature/amazing-feature
) - Abre un Pull Request
Distribuido bajo la licencia MIT. Consulta el archivo LICENSE
para más información.
Desarrollado con ❤️ por Alexander