Obtenha a lista de vídeos do YouTube por palavras-chave usando a API de pesquisa do YouTube
O YouTube é o segundo maior mecanismo de busca do mundo. Devido à sua popularidade, muitos sites integram funcionalidades relacionadas ao YouTube em seus sites. Isso inclui a incorporação de vídeos do YouTube, botão de inscrição do YouTube, galeria de vídeos do YouTube, pesquisa de vídeo, etc. Neste artigo, veremos como integrar a API de pesquisa do YouTube ao site.
Este artigo explica como se pode implementar a tarefa de pesquisar vídeos do YouTube em um site. Usaremos a API de pesquisa do YouTube para obter vídeos com base em palavras-chave, filtrar por opções disponíveis (data, classificação, etc.) e exibir a lista de vídeos. Vou imprimir o título do vídeo e a id do vídeo. O usuário pode imprimir outras informações também conforme sua necessidade.
Começando
Para começar, primeiro você precisa criar uma chave de API em sua conta do Console do Google. Essa chave é necessária ao interagir com as APIs do YouTube. Sem essa chave, o YouTube considera todas as chamadas de API recebidas como não autorizadas.
Abaixo estão as etapas para obter a chave API.
- Acesse o Google Developer Console https://console.developers.google.com.
- Crie um novo projeto. Opcionalmente, você também pode selecionar um projeto existente.
- Dê um nome ao seu projeto. O console do Google criará um ID de projeto exclusivo para você.
- Seu projeto recém-criado aparecerá no topo da barra lateral esquerda.
- Clique em Biblioteca no menu esquerdo. Você verá uma lista de APIs do Google. Ative a API de dados do YouTube.
- A seguir, no menu esquerdo, clique em Credenciais. Selecione a chave API em Criar credenciais.
- Copie esta chave de API.
Criar uma interface de usuário
Para este tutorial, vou criar um formulário onde o usuário pode inserir a palavra-chave, escolher vários vídeos para retornar e o tipo de filtro. A API do YouTube tem um limite de 50 registros por vez, portanto, manteremos um limite de 50 nos campos de número. Adicionaremos paginação para obter o conjunto de registros anterior e seguinte. Em cada resposta, o YouTube fornece valores para nextPageToken e prevPageToken, se disponíveis. Usando esses valores como um parâmetro como ‘pageToken = PageToken_VALUE’ em solicitações HTTP GET, podemos buscar o próximo conjunto de registros ou o anterior.
Existem várias opções disponíveis para os tipos de filtro: ‘data’, ‘classificação’, ‘relevância’, ‘título’, ‘viewCount’ O usuário pode selecionar qualquer um e o resultado final dependerá do filtro selecionado.
<form method="get">
<p><input type="text" name="q" placeholder="Enter keyword" value="<?php if(array_key_exists('q', $_GET)) echo $_GET['q']; ?>" required></p>
<p><input type="number" name="max_result" placeholder="Max Results" min="1" max="50" value="<?php if(array_key_exists('max_result', $_GET)) echo $_GET['max_result']; ?>" required></p>
<p>
<?php $arr_orders = ['date', 'rating', 'relevance', 'title', 'viewCount']; ?>
<select name="order" required>
<option value="">--SELECT ORDER--</option>
<?php foreach ($arr_orders as $order) { ?>
<option value="<?php echo $order; ?>" <?php if(array_key_exists('order', $_GET) && ($order==$_GET['order'])) echo 'selected'; ?>><?php echo ucfirst($order); ?></option>
<?php } ?>
</select>
</p>
<p><input type="submit" value="Submit"></p>
</form>
Aqui criamos um formulário que possui 3 campos para inserir uma palavra-chave, definir o número de registros a serem retornados e o tipo de filtro.
Integre a API de pesquisa do YouTube
Neste estágio, estamos prontos com nossa chave de API e formulário HTML. Em seguida, precisamos obter os valores do formulário e passá-los ao endpoint da API do YouTube junto com a chave da API. Depois disso, processaremos a resposta final.
<?php
$api_key = 'YOUR_API_KEY';
$arr_list = array();
if (array_key_exists('q', $_GET) && array_key_exists('max_result', $_GET) && array_key_exists('order', $_GET)) {
$formatted_keyword = implode("+", explode(" ", $_GET['q']));
$url = "https://www.googleapis.com/youtube/v3/search?q=$formatted_keyword&order=". $_GET['order'] ."&part=snippet&type=video&maxResults=". $_GET['max_result'] ."&key=". $api_key;
if (array_key_exists('pageToken', $_GET)) {
$url .= "&pageToken=". $_GET['pageToken'];
}
$arr_list = getYTList($url);
}
function getYTList($api_url = '') {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$arr_result = json_decode($response);
if (isset($arr_result->items)) {
return $arr_result;
} elseif (isset($arr_result->error)) {
//print error $arr_result->error
}
}
?>
O código acima verifica os parâmetros de consulta de uma palavra-chave, max_result e o valor do pedido para classificação. Ele pega esses valores e os passa para o terminal da API. Em troca, ele acrescenta uma resposta à variável $arr_list
. Faremos um loop por essa variável e imprimiremos as informações sobre os vídeos.
<?php
if (!empty($arr_list)) {
echo '<ul>';
foreach ($arr_list->items as $item) {
echo "<li>". $item->snippet->title ." (Video ID: ". $item->id->videoId .")</li>";
}
echo '</ul>';
$url = "?q=". $_GET['q'] ."&max_result=". $_GET['max_result'] ."&order=". $_GET['order'];
if (isset($arr_list->prevPageToken)) {
echo '<a href="'.$url.'&pageToken='.$arr_list->prevPageToken.'">Previous</a>';
}
if (isset($arr_list->nextPageToken)) {
echo '<a href="'.$url.'&pageToken='.$arr_list->nextPageToken.'">Next</a>';
}
}
?>
Você pode colocar esse código após o HTML do formulário. Ele lhe dará uma lista de títulos de vídeo, ids de vídeo e links de paginação.
Nosso código final é o seguinte:
<?php
$api_key = 'YOUR_API_KEY';
$arr_list = array();
if (array_key_exists('q', $_GET) && array_key_exists('max_result', $_GET) && array_key_exists('order', $_GET)) {
$formatted_keyword = implode("+", explode(" ", $_GET['q']));
$url = "https://www.googleapis.com/youtube/v3/search?q=$formatted_keyword&order=". $_GET['order'] ."&part=snippet&type=video&maxResults=". $_GET['max_result'] ."&key=". $api_key;
if (array_key_exists('pageToken', $_GET)) {
$url .= "&pageToken=". $_GET['pageToken'];
}
$arr_list = getYTList($url);
}
function getYTList($api_url = '') {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$arr_result = json_decode($response);
if (isset($arr_result->items)) {
return $arr_result;
} elseif (isset($arr_result->error)) {
//print error $arr_result->error
}
}
?>
<form method="get">
<p><input type="text" name="q" placeholder="Enter keyword" value="<?php if(array_key_exists('q', $_GET)) echo $_GET['q']; ?>" required></p>
<p><input type="number" name="max_result" placeholder="Max Results" min="1" max="50" value="<?php if(array_key_exists('max_result', $_GET)) echo $_GET['max_result']; ?>" required></p>
<p>
<?php $arr_orders = ['date', 'rating', 'relevance', 'title', 'viewCount']; ?>
<select name="order" required>
<option value="">--SELECT ORDER--</option>
<?php foreach ($arr_orders as $order) { ?>
<option value="<?php echo $order; ?>" <?php if(array_key_exists('order', $_GET) && ($order==$_GET['order'])) echo 'selected'; ?>><?php echo ucfirst($order); ?></option>
<?php } ?>
</select>
</p>
<p><input type="submit" value="Submit"></p>
</form>
<?php
if (!empty($arr_list)) {
echo '<ul>';
foreach ($arr_list->items as $item) {
echo "<li>". $item->snippet->title ." (Video ID: ". $item->id->videoId .")</li>";
}
echo '</ul>';
$url = "?q=". $_GET['q'] ."&max_result=". $_GET['max_result'] ."&order=". $_GET['order'];
if (isset($arr_list->prevPageToken)) {
echo '<a href="'.$url.'&pageToken='.$arr_list->prevPageToken.'">Previous</a>';
}
if (isset($arr_list->nextPageToken)) {
echo '<a href="'.$url.'&pageToken='.$arr_list->nextPageToken.'">Next</a>';
}
}
?>
Espero que você compreenda a integração da API de pesquisa do YouTube ao seu site. Por favor, compartilhe seus pensamentos e sugestões na seção de comentários abaixo.
Artigos relacionados
- Como obter tags de vídeo do YouTube usando a API do YouTube
- API do YouTube – Como obter uma lista de vídeos do YouTube do seu canal
- Como obter miniaturas de vídeos do YouTube, Vimeo e Dailymotion