# Guia de scraping para IA

Este guia mostrará o fluxo de trabalho para coletar e filtrar dados do YouTube para fins de treinamento de IA usando [**as fontes especializadas do Web Scraper API**](https://oxylabs.io/products/scraper-api/web/youtube): `youtube_search`, `youtube_video_trainability`, `youtube_metadata`, `youtube_download`, `youtube_transcript`.

## Passo 1: Pesquisar vídeos

Comece pesquisando vídeos relacionados ao seu tópico de interesse.

### Pesquisa básica

Para uma pesquisa rápida que retorna até 20 resultados:

```json
{
  "source": "youtube_search",
  "query": "your search term"
}
```

### Pesquisa estendida

Para resultados mais abrangentes (até 700 resultados):

```json
{
  "source": "youtube_search_max",
  "query": "your search term"
}
```

### Pesquisar com filtros

Refine sua pesquisa com filtros:

```json
{
  "source": "youtube_search",
  "query": "your search term",
  "type": "video",
  "duration": "4-20",
  "upload_date": "this_month",
  "sort_by": "view_count",
  "hd": true
}
```

{% hint style="info" %}
Use os filtros apropriados para restringir os resultados com base nas suas necessidades específicas. As opções incluem tipo de conteúdo (vídeo, canal, playlist), duração, data de envio e configurações de qualidade.
{% endhint %}

## Passo 2: Extrair IDs de vídeo dos resultados da pesquisa

Após receber os resultados da pesquisa, extraia os **IDs de vídeo** para processamento posterior. Na resposta de `youtube_search` ou `youtube_search_max`, os IDs de vídeo estão diretamente disponíveis no `videoId` campo de cada item de resultado, como mostrado neste trecho de exemplo de resposta:

```json
{
    "results": [
        {
            "content": [
                {
                    "videoId": "LK9XuImr8Xg",  // This is the video ID you need
                    "thumbnail": {
                        "thumbnails": [
                            {
                                "url": "https://i.ytimg.com/vi/LK9XuImr8Xg/hq720_2.jpg?sqp=-oaymwE2COgCEMoBSFXyq4qpAygIARUAAIhCGABwAcABBvABAfgBtgiAAoAPigIMCAAQARhaIGUoLTAP&rs=AOn4CLDTvqEgoE2ZNfnn3EalF2ujcthVNw",
                                "width": 360,
                                "height": 202
                            }
                        ]
                    },
                    "title": {
                        // title details
                    }
                }
            ]
        }
    ]
}
```

Extraia esses IDs de vídeo para uma lista a ser usada em chamadas de API subsequentes.

## Passo 3: Verificar elegibilidade para treinamento de IA

Antes de baixar ou usar vídeos para treinamento de IA, verifique a elegibilidade deles:

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

A resposta indicará se o vídeo pode ser usado para fins de treinamento de IA:

* `["all"]` - Treinamento permitido para todas as partes
* `["none"]` - Nenhum treinamento permitido para qualquer parte
* `["party1", "party2", ...]` - Treinamento permitido apenas para partes específicas

## Passo 4: Obter metadados do vídeo&#x20;

Colete informações adicionais sobre os vídeos para avaliar melhor sua qualidade e relevância:

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

A resposta conterá metadados como contagem de visualizações, comentários, avaliações e outras métricas que podem ajudar a avaliar a qualidade do conteúdo.

{% hint style="success" %}
O `parse` parâmetro deve ser definido como `true` para a fonte de metadados.
{% endhint %}

## Passo 5: Recuperar conteúdo dos vídeos selecionados

Depois de identificar vídeos de alta qualidade e treináveis com base na elegibilidade e nos metadados, você pode prosseguir com a recuperação de conteúdo. Isso pode ser feito em dois passos paralelos:

### 5.1 Baixar conteúdo de vídeo/áudio

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

Opções adicionais para download:

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

{% hint style="info" %}
Esta fonte está disponível apenas via a integração assíncrona [**Push-Pull integration**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/push-pull) e [**Cloud Storage**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/features/result-processing-and-storage/cloud-storage) feature.
{% endhint %}

**Observação:**

* Os vídeos podem ter até 3 horas de duração
* A resolução padrão é 720p (pode ser personalizada)
* Você pode especificar apenas áudio, apenas vídeo ou ambos

### 5.2 Recuperar transcrições de vídeo

{% hint style="danger" %}
Transcrições não são o mesmo que legendas ocultas (CC). Nem todos os vídeos têm transcrições disponíveis em todos os idiomas. Se uma transcrição não existir no idioma especificado, a API retornará um `404` status code.
{% endhint %}

#### **Verificando se um vídeo tem transcrições:**

A maneira mais eficiente de verificar a disponibilidade de transcrições é examinando os metadados do vídeo [**(Passo 4)**](https://developers.oxylabs.io/documentation/pt-br/overview), que inclui estes campos:

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

{% hint style="info" %}
Essa abordagem é mais econômica do que fazer solicitações que resultem em `404` errors, which are billable.
{% endhint %}

Se os metadados mostrarem que transcrições estão disponíveis, você pode recuperá-las com:

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

Para vídeos com transcrições criadas manualmente, especifique:

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

#### **Verificando se um vídeo tem transcrições (manualmente):**

No YouTube, clique no menu "..." abaixo do vídeo e procure por **"Show transcript"** nas opções do menu. Se essa opção estiver ausente, o vídeo não tem transcrições disponíveis. Quando presente, você pode clicá-la para ver os idiomas de transcrição disponíveis.

## Processamento em lote

Para processamento eficiente de múltiplos vídeos, use endpoints em lote:

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

## Boas práticas

1. Siga o fluxo de descoberta de **search → trainability → metadata → content** para maximizar a eficiência
2. Reduza os resultados da pesquisa antes de processar vídeos individuais
3. Sempre verifique a treinabilidade antes de usar o conteúdo para IA
4. Verifique [**response codes**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/response-codes) e implemente novas tentativas para requisições que falharem
