# Guía de scraping para IA

Esta guía le mostrará el flujo de trabajo para recopilar y filtrar datos de YouTube con fines de entrenamiento de IA usando [**las fuentes especializadas de Web Scraper API**](https://oxylabs.io/products/scraper-api/web/youtube): `youtube_search`, `youtube_video_trainability`, `youtube_metadata`, `youtube_download`, `youtube_transcript`.

## Paso 1: Buscar videos

Comience buscando videos relacionados con su tema de interés.

### Búsqueda básica

Para una búsqueda rápida que devuelva hasta 20 resultados:

```json
{
  "source": "youtube_search",
  "query": "su término de búsqueda"
}
```

### Búsqueda extendida

Para resultados más completos (hasta 700 resultados):

```json
{
  "source": "youtube_search_max",
  "query": "su término de búsqueda"
}
```

### Buscar con filtros

Refine su búsqueda con filtros:

```json
{
  "source": "youtube_search",
  "query": "su término de búsqueda",
  "type": "video",
  "duration": "4-20",
  "upload_date": "this_month",
  "sort_by": "view_count",
  "hd": true
}
```

{% hint style="info" %}
Use los filtros apropiados para reducir los resultados según sus necesidades específicas. Las opciones incluyen tipo de contenido (video, canal, lista de reproducción), duración, fecha de carga y ajustes de calidad.
{% endhint %}

## Paso 2: Extraer IDs de video de los resultados de búsqueda

Después de recibir los resultados de búsqueda, extraiga los **IDs de video** para un procesamiento posterior. En la respuesta de `youtube_search` o `youtube_search_max`, los IDs de video están disponibles directamente en el `videoId` campo de cada elemento de resultado, como se muestra en este fragmento de respuesta de ejemplo:

```json
{
    "results": [
        {
            "content": [
                {
                    "videoId": "LK9XuImr8Xg",  // Este es el ID de video que necesita
                    "thumbnail": {
                        "thumbnails": [
                            {
                                "url": "https://i.ytimg.com/vi/LK9XuImr8Xg/hq720_2.jpg?sqp=-oaymwE2COgCEMoBSFXyq4qpAygIARUAAIhCGABwAcABBvABAfgBtgiAAoAPigIMCAAQARhaIGUoLTAP&rs=AOn4CLDTvqEgoE2ZNfnn3EalF2ujcthVNw",
                                "width": 360,
                                "height": 202
                            }
                        ]
                    },
                    "title": {
                        // detalles del título
                    }
                }
            ]
        }
    ]
}
```

Extraiga estos IDs de video a una lista para usarlos en llamadas API posteriores.

## Paso 3: Verificar elegibilidad para entrenamiento de IA

Antes de descargar o usar videos para entrenamiento de IA, verifique su elegibilidad:

```json
{
  "source": "youtube_video_trainability",
  "video_id": "rFNDylrjn_w"
}
```

La respuesta indicará si el video puede usarse con fines de entrenamiento de IA:

* `["all"]` - Entrenamiento permitido para todas las partes
* `["none"]` - No se permite entrenamiento para ninguna parte
* `["party1", "party2", ...]` - Entrenamiento permitido solo para partes específicas

## Paso 4: Obtener metadata del video&#x20;

Recoja información adicional sobre los videos para evaluar aún más su calidad y relevancia:

```json
{
  "source": "youtube_metadata",
  "query": "VIDEO_ID",
  "parse": true
}
```

La respuesta contendrá metadata como recuentos de vistas, comentarios, valoraciones y otras métricas que pueden ayudarle a evaluar la calidad del contenido.

{% hint style="success" %}
El `parse` parámetro debe establecerse en `true` para la fuente de metadata.
{% endhint %}

## Paso 5: Recuperar contenido de los videos seleccionados

Después de identificar videos entrenables y de alta calidad según su elegibilidad y metadata, puede proceder con la recuperación de contenido. Esto se puede hacer en dos pasos paralelos:

### 5.1 Descargar contenido de video/audio

```json
{
  "source": "youtube_download",
  "query": "VIDEO_ID",
  "storage_type": "s3",
  "storage_url": "s3://su-bucket/su-carpeta/"
}
```

Opciones adicionales para la descarga:

```json
{
  "source": "youtube_download",
  "query": "VIDEO_ID",
  "storage_type": "s3",
  "storage_url": "s3://su-bucket/su-carpeta/",
  "context": [
    {
      "key": "download_type",
      "value": "video"
    },
    {
      "key": "video_quality",
      "value": "1080"
    }
  ]
}
```

{% hint style="info" %}
Esta fuente solo está disponible a través de la integración asíncrona [**Push-Pull**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/push-pull) y [**Cloud Storage**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/features/result-processing-and-storage/cloud-storage) característica.
{% endhint %}

**Nota:**

* Los videos pueden tener hasta 3 horas de duración
* La resolución predeterminada es 720p (se puede personalizar)
* Puede especificar solo audio, solo video o ambos

### 5.2 Recuperar transcripciones de video

{% hint style="danger" %}
Las transcripciones no son lo mismo que los subtítulos cerrados (CC). No todos los videos tienen transcripciones disponibles en todos los idiomas. Si no existe una transcripción en el idioma especificado, la API devolverá un `404` código de estado.
{% endhint %}

#### **Comprobar si un video tiene transcripciones:**

La forma más eficiente de comprobar la disponibilidad de transcripciones es examinando la metadata del video [**(Paso 4)**](https://developers.oxylabs.io/documentation/es/overview), que incluye estos campos:

```json
{
    "is_transcript_available": true,
    "generated_subtitle_languages": [
        "en"
    ],
    "generated_transcript_languages": [
        "en"
    ]
}
```

{% hint style="info" %}
Este enfoque es más rentable que hacer solicitudes que resulten en `404` errores, los cuales son facturables.
{% endhint %}

Si la metadata muestra que hay transcripciones disponibles, puede recuperarlas con:

```json
{
  "source": "youtube_transcript",
  "query": "VIDEO_ID",
  "context": [
    {
      "key": "language_code",
      "value": "en"
    }
  ]
}
```

Para videos con transcripciones creadas manualmente, especifique:

```json
{
  "source": "youtube_transcript",
  "query": "VIDEO_ID",
  "context": [
    {
      "key": "language_code",
      "value": "en"
    },
    {
      "key": "transcript_origin",
      "value": "uploader_provided"
    }
  ]
}
```

#### **Comprobar si un video tiene transcripciones (manualmente):**

En YouTube, haga clic en el menú "..." debajo del video y luego busque **"Mostrar transcripción"** en las opciones del menú. Si esta opción falta, el video no tiene transcripciones disponibles. Cuando esté presente, puede hacer clic para ver los idiomas de transcripción disponibles.

## Procesamiento masivo

Para el procesamiento eficiente de múltiples videos, use endpoints por lote:

```json
{
  "source": "youtube_video_trainability",
  "query": ["VIDEO_ID_1", "VIDEO_ID_2", "VIDEO_ID_3"]
}
```

## Buenas prácticas

1. Siga el flujo de descubrimiento desde **search → trainability → metadata → content** para maximizar la eficiencia
2. Reduzca los resultados de búsqueda antes de procesar videos individuales
3. Verifique siempre la elegibilidad para entrenamiento antes de usar contenido para IA
4. Compruebe [**códigos de respuesta**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/response-codes) e implemente reintentos para las solicitudes fallidas
