# Dooplex Anime API

API REST para gestionar información de animes, temporadas, episodios y videos.

## Configuración

### Base de Datos
La API utiliza MySQL con las siguientes tablas:
- `animes`
- `anime_seasons`
- `anime_episodes`
- `anime_videos`

### Configuración de Conexión
La configuración de la base de datos se encuentra en `db/config.php`:
```php
define('DB_HOST', 'localhost');
define('DB_DATABASE', 'docinesx_st');
define('DB_USERNAME', 'docinesx_anibal');
define('DB_PASSWORD', 'anibal5083038xS');
```

## Endpoints

### Base URL

https://api.docines.xyz/dooplex-anime/ 


### 1. Buscar Anime
**Endpoint:** `GET /api.php?action=get_anime`

**Parámetros:**
- `tmdb_id` (string): ID de TMDB o IMDB
  - Si comienza con "tt" (ej: tt32612521) → busca por `imdb_external_id`
  - Si es numérico → busca por `tmdb_id`
- `imdb_id` (string, opcional): ID de IMDB directamente

**Ejemplo de uso:**
```bash
# Buscar por TMDB ID numérico
GET https://api.docines.xyz/dooplex-anime/api.php?action=get_anime&tmdb_id=12345

# Buscar por IMDB ID
GET https://api.docines.xyz/dooplex-anime/api.php?action=get_anime&tmdb_id=tt32612521
```

**Respuesta exitosa:**
```json
{
  "success": true,
  "data": {
    "id": 1
  }
}
```

**Respuesta de error:**
```json
{
  "success": false,
  "message": "Anime no encontrado"
}
```

### 2. Obtener Temporadas
**Endpoint:** `GET /api.php?action=get_seasons`

**Parámetros:**
- `anime_id` (integer): ID del anime

**Ejemplo de uso:**
```bash
GET https://api.docines.xyz/dooplex-anime/api.php?action=get_seasons&anime_id=1
```

**Respuesta exitosa:**
```json
{
  "success": true,
  "data": [
    {
      "id": 1,
      "season_number": 1,
      "name": "Temporada 1"
    },
    {
      "id": 2,
      "season_number": 2,
      "name": "Temporada 2"
    }
  ]
}
```

### 3. Obtener Episodios
**Endpoint:** `GET /api.php?action=get_episodes`

**Parámetros:**
- `anime_season_id` (integer): ID de la temporada

**Ejemplo de uso:**
```bash
GET https://api.docines.xyz/dooplex-anime/api.php?action=get_episodes&anime_season_id=1
```

**Respuesta exitosa:**
```json
{
  "success": true,
  "data": [
    {
      "id": 1,
      "episode_number": 1,
      "name": "Episodio 1"
    },
    {
      "id": 2,
      "episode_number": 2,
      "name": "Episodio 2"
    }
  ]
}
```

### 4. Registrar Video
**Endpoint:** `POST /api.php?action=add_video`

**Content-Type:** `application/json`

**Parámetros del cuerpo (JSON):**
- `anime_episode_id` (integer, requerido): ID del episodio
- `server` (string, requerido): Nombre del servidor
- `header` (string, opcional): Encabezado del video
- `link` (string, requerido): URL del video
- `lang` (string, opcional): Idioma (por defecto: "Spanish")
- `embed` (integer, opcional): Si es embed (0 o 1, por defecto: 0)
- `hls` (integer, opcional): Si es HLS (0 o 1, por defecto: 0)
- `supported_hosts` (integer, opcional): Si soporta hosts (0 o 1, por defecto: 0)

**Ejemplo de uso:**
```bash
POST https://api.docines.xyz/dooplex-anime/api.php?action=add_video
Content-Type: application/json

{
  "anime_episode_id": 1,
  "server": "StreamServer",
  "header": "Video HD",
  "link": "https://example.com/video.mp4",
  "lang": "Spanish",
  "embed": 1,
  "hls": 0,
  "supported_hosts": 1
}
```

**Respuesta exitosa:**
```json
{
  "success": true,
  "message": "Video registrado exitosamente",
  "id": 123
}
```

## Códigos de Estado HTTP

- `200` - Éxito
- `400` - Solicitud incorrecta (parámetros faltantes o inválidos)
- `404` - Recurso no encontrado
- `405` - Método no permitido
- `500` - Error interno del servidor

## Estructura de Respuestas

Todas las respuestas siguen el siguiente formato:

**Éxito:**
```json
{
  "success": true,
  "data": { /* datos solicitados */ }
}
```

**Error:**
```json
{
  "success": false,
  "message": "Descripción del error"
}
```

## CORS

La API tiene configurado CORS para permitir solicitudes desde cualquier origen:
- `Access-Control-Allow-Origin: *`
- `Access-Control-Allow-Methods: GET, POST, OPTIONS`
- `Access-Control-Allow-Headers: Content-Type, Authorization`

## Ejemplos de Uso con cURL

### Buscar anime
```bash
curl -X GET "https://api.docines.xyz/dooplex-anime/api.php?action=get_anime&tmdb_id=12345"
```

### Obtener temporadas
```bash
curl -X GET "https://api.docines.xyz/dooplex-anime/api.php?action=get_seasons&anime_id=1"
```

### Obtener episodios
```bash
curl -X GET "https://api.docines.xyz/dooplex-anime/api.php?action=get_episodes&anime_season_id=1"
```

### Registrar video
```bash
curl -X POST "https://api.docines.xyz/dooplex-anime/api.php?action=add_video" \
  -H "Content-Type: application/json" \
  -d '{
    "anime_episode_id": 1,
    "server": "StreamServer",
    "header": "Video HD",
    "link": "https://example.com/video.mp4",
    "lang": "Spanish",
    "embed": 1,
    "hls": 0,
    "supported_hosts": 1
  }'
```

## Notas Técnicas

- La API utiliza PDO para las consultas a la base de datos
- Todas las consultas están preparadas para prevenir inyección SQL
- Los timestamps `created_at` y `updated_at` se generan automáticamente
- El campo `status` en `anime_videos` tiene valor predeterminado 0
- La API maneja automáticamente las solicitudes OPTIONS para CORS

## Mantenimiento

Para modificar la configuración de la base de datos, edita el archivo `db/config.php`.

La clase `Database` en `db/Database.php` maneja automáticamente la conexión y reconexión a la base de datos.