Buscar videos por keywords utilizando la API de YouTube

Si quieres listar vídeos de YouTube en tu sitio web, necesitas acceder a la API de la plataforma. En tutoriales anteriores vimos cómo acceder a la API de YouTube con una librería para obtener distintos vídeos de la plataforma de hosting para vídeos. Al utilizar esta librería, podremos obtener recursos de YouTube como vídeos, listas de reproducción, canales y demás. En este artículo, te mostraré el código para obtener un listado de vídeos de YouTube mediante keywords.

En este ejemplo, obtendremos las distintas keywords mediante una caja de texto. Es decir, el usuario se encargará de filtrar los vídeos introduciendo keywords en dicha caja de texto. Cuando el usuario introduzca una keyword, buscaremos vídeos en YouTube mediante la librería de la API de YouTube y los obtendremos. Más tarde, crearemos una galería de vídeos con lo resultado.

En PHP comprobaremos si el keyword introducido no está vacío, y procederemos a realizar la búsqueda con la librería para obtener los vídeos. He definido un número máximo de resultados en una constante de PHP y enviaremos este valor a la llamada de la API. Cómo no, agregaremos a la llamada también el keyword introducido por el usuario.

Filtro de keywords en HTML

He creado un filtro HTML para buscar vídeos por keywords. El usuario podrá enviar keywords para filtrar vídeos. Validaremos la keyword en el lado del servidor antes de realizar la llamada de la API. Después de enviar el formulario, si no se encuentra ningún valor en el input de la keyword, mostraremos un error en la web . De lo contrario, la keyword se enviará con la llamada API y los videos relacionados se mostrarán en una galería. En la llamada API, enviaremos la keyword en el parámetro q.

<?php
    if (isset($_POST['submit']) )
     {
        $keyword = $_POST['keyword'];
               
        if (empty($keyword))
        {
            $response = array(
                  "type" => "error",
                  "message" => "Please enter the keyword."
                );
        } 
    }
         
?>
<h2>Search Videos by keyword using YouTube Data API V3</h2>
<div class="search-form-container">
    <form id="keywordForm" method="post" action="">
        <div class="input-row">
            Search Keyword : <input class="input-field" type="search"
                id="keyword" name="keyword"
                placeholder="Enter Search Keyword">
        </div>

        <input class="btn-submit" type="submit" name="submit"
            value="Search">
    </form>
</div>

<?php 
if(!empty($response)) { 
?>
<div class="response <?php echo $response["type"]; ?>
    ">
    <?php echo $response["message"]; ?>
</div>
<?php 
}
?>

Solicitud cURL para obtener los vídeos de YouTube

En el siguiente script, solicitamos acceso a YouTube Data API V3 para obtener videos por keyword. Después de obtener los datos remotos, la respuesta CURL devolverá los datos de los videos. Parsearemos la respuesta CURL para obtener el título del video y la descripción en la galería.

<?php
if (isset($_POST['submit']) )
{
     
  if (!empty($keyword))
  {
    $apikey = 'YOUR API KEY'; 
    $googleApiUrl = 'https://www.googleapis.com/youtube/v3/search?part=snippet&q=' . $keyword . '&maxResults=' . MAX_RESULTS . '&key=' . $apikey;

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $googleApiUrl);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_VERBOSE, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $response = curl_exec($ch);

    curl_close($ch);
    $data = json_decode($response);
    $value = json_decode(json_encode($data), true);
?>

<div class="result-heading">About <?php echo MAX_RESULTS; ?> Results</div>
<div class="videos-data-container" id="SearchResultsDiv">

<?php
    for ($i = 0; $i < MAX_RESULTS; $i++) {
        $videoId = $value['items'][$i]['id']['videoId'];
        $title = $value['items'][$i]['snippet']['title'];
        $description = $value['items'][$i]['snippet']['description'];
        ?> 
    
<div class="video-tile">
<div  class="videoDiv">
    <iframe id="iframe" style="width:100%;height:100%" src="//www.youtube.com/embed/<?php echo $videoId; ?>" 
data-autoplay-src="//www.youtube.com/embed/<?php echo $videoId; ?>?autoplay=1"></iframe>         
</div>
<div class="videoInfo">
<div class="videoTitle"><b><?php echo $title; ?></b></div>
<div class="videoDesc"><?php echo $description; ?></div>
</div>
</div>
           <?php 
        }
    } 
           
}
?> 

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.