Obtenga la lista de videos de YouTube por palabras clave usando la API de búsqueda de YouTube
YouTube es el segundo motor de búsqueda más grande del mundo. Debido a su popularidad, muchos sitios web integran funcionalidades relacionadas con YouTube en su sitio web. Esto incluye incrustar videos de YouTube, botón de suscripción de YouTube, galería de videos de YouTube, búsqueda de videos, etc. En este artículo, veremos cómo integrar la API de búsqueda de YouTube al sitio web.
Este artículo explica cómo se puede implementar la tarea de buscar videos de YouTube dentro de un sitio web. Usaremos la API de búsqueda de YouTube para obtener videos basados en palabras clave, filtrarlos por opciones disponibles (fecha, calificación, etc.) y mostrar la lista de videos. Voy a imprimir el título del video y la identificación del video. El usuario puede imprimir otra información también según sus necesidades.
Empezando
Para comenzar, primero debe crear una clave API en su cuenta de Google Console. Esta clave es necesaria al interactuar con las API de YouTube. Sin esta clave, YouTube considera que todas las llamadas API entrantes no están autorizadas.
A continuación se muestran los pasos para obtener la clave API.
- Dirígete a la Consola para desarrolladores de Google https://console.developers.google.com.
- Crea un nuevo proyecto. Opcionalmente, también puede seleccionar un proyecto existente.
- Da nombre a tu proyecto. Google Console creará un ID de proyecto único para usted.
- Su proyecto recién creado aparecerá en la parte superior de la barra lateral izquierda.
- Haga clic en Biblioteca en el menú de la izquierda. Verá una lista de API de Google. Habilite la API de datos de YouTube.
- A continuación, en el menú de la izquierda, haga clic en Credenciales. Seleccione la clave API en Crear credenciales.
- Copie esta clave de API.
Crear una interfaz de usuario
Para este tutorial, voy a crear un formulario donde un usuario puede ingresar la palabra clave, elegir una cantidad de videos para regresar y filtrar el tipo. La API de YouTube tiene un límite de 50 registros a la vez, por lo que mantendremos un límite de 50 en los campos numéricos. Agregaremos paginación para obtener el conjunto de registros anterior y siguiente. En cada respuesta, YouTube proporciona valores para nextPageToken y prevPageToken si están disponibles. Usando estos valores como un parámetro como ‘pageToken = PageToken_VALUE’ en las solicitudes HTTP GET, podemos recuperar el conjunto de registros siguiente o anterior.
Hay varias opciones disponibles para los tipos de filtro que son ‘fecha’, ‘calificación’, ‘relevancia’, ‘título’, ‘viewCount’. El usuario puede seleccionar cualquiera de ellos y el resultado final dependerá del filtro seleccionado.
<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>
Aquí creamos un formulario que tiene 3 campos para ingresar una palabra clave, establecer el número de registros para devolver y el tipo de filtro.
Integrar la API de búsqueda de YouTube
En esta etapa, estamos listos con nuestra clave API y formulario HTML. A continuación, necesitamos obtener los valores del formulario y pasarlos al punto final de la API de YouTube junto con la clave de la API. Después de esto, procesaremos la respuesta 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
}
}
?>
El código anterior comprueba los parámetros de consulta de una palabra clave, max_result y el valor de orden para ordenar. Toma estos valores y los pasa al punto final de la API. A cambio, agrega respuesta a la variable $arr_list
. Recorreremos esta variable e imprimiremos la información sobre los videos.
<?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>';
}
}
?>
Puede colocar este código después del HTML del formulario. Le dará una lista de títulos de video, identificadores de video junto con enlaces de paginación.
Nuestro código final es el siguiente:
<?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 comprenda la integración de la API de búsqueda de YouTube en su sitio web. Comparta sus pensamientos y sugerencias en la sección de comentarios a continuación.
Artículos relacionados
- Cómo obtener etiquetas de video de YouTube usando la API de YouTube
- API de YouTube: cómo obtener una lista de videos de YouTube de su canal
- Cómo obtener miniaturas de videos de YouTube, Vimeo y Dailymotion