Skip to content

JLex11/anime-scrapper

Folders and files

NameName
Last commit message
Last commit date
Mar 16, 2025
Mar 16, 2025
Mar 16, 2025
Aug 19, 2023
Jan 11, 2024
Mar 16, 2025
Aug 19, 2023
Mar 16, 2025
Mar 16, 2025
Mar 16, 2025
Mar 16, 2025
Mar 16, 2025
Mar 16, 2025

Repository files navigation

🍥 Anime Scrapper 🍥

Una herramienta potente para extraer información de sitios web de anime

Bun JS JavaScript TypeScript Supabase Express Estado

📋 Descripción

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.

✨ Características

  • 🚀 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

📦 Requisitos previos

  • Bun v1.2.5 o superior
  • Una cuenta en Supabase para la base de datos

🚀 Instalación

  1. Clona este repositorio:
git clone https://github.com/tuusuario/anime-scrapper.git
cd anime-scrapper
  1. Instala las dependencias:
bun install
  1. Configura las variables de entorno:
cp .env.example .env
# Edita el archivo .env con tus credenciales de Supabase

⚙️ Configuración

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'
};

📚 Uso

Herramienta CLI

# 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

API REST

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

📊 Ejemplos

Ejemplo de salida JSON de la API

{
  "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"
  }
}

📁 Estructura del proyecto

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

🤝 Contribución

Las contribuciones son siempre bienvenidas!

  1. Fork el proyecto
  2. Crea una nueva rama (git checkout -b feature/amazing-feature)
  3. Realiza tus cambios
  4. Commit tus cambios (git commit -m 'Add some amazing feature')
  5. Push a la rama (git push origin feature/amazing-feature)
  6. Abre un Pull Request

📜 Licencia

Distribuido bajo la licencia MIT. Consulta el archivo LICENSE para más información.


Desarrollado con ❤️ por Alexander