5. Listado de YouTube con SimpleXML.

En este post explicaremos cómo obtener un listado de los vídeos más vistos de YouTube desde PHP.

He armado un listado con las cuestiones que creo que hay que tener claras para hacer esto:

1. ¿Qué es el API de datos de YouTube y cómo se utiliza?

2. ¿Cómo obtengo el listado de los vídeos más vistos de YouTube?

3. ¿Cómo manipulo desde PHP el resultado obtenido?

Y estas las respuestas:

1. ¿Qué es el API de datos de YouTube y cómo se utiliza?

Pues no lo sé. Por una parte, según la Wikipedia: “Una interfaz de programación de aplicaciones o API (del inglés Application Programming Interface) es el conjunto de funciones y procedimientos (o métodos si se refiere a programación orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción”. Mientras que, por otra, según Google: “Las API de datos de Google (“Google Data” abreviado) constituyen un sencillo protocolo estándar para leer e introducir datos en la Web”.

Como hasta hace poco mi idea de API era como la de la Wikipedia; es decir, algo así como un conjunto de llamadas a funciones o métodos ya programados, me he despistado un poco tras leer la definición del API de Google: “un sencillo protocolo estándar para leer e introducir datos en la Web”.

Supongo que, en realidad, viene a ser lo mismo, y al API de Google se le llama API porque hacemos llamadas a URLs que devuelven feeds en formato RSS o Atom, en vez de hacer llamadas a funciones o métodos ya programados. En cualquier caso, como explica el documento Protocol Basics de Google, podemos utilizar las API Google así: haciendo una petición HTTP a un servicio, a través de un URL con unos parámetros específicos.

De hecho, esto ya lo hemos hecho: en el artículo Geocodificación con PHP y el API Google Maps (3), de Quentin Zervaas (www.phpriot.com), hacíamos una petición HTTP al URL http://maps.google.com/maps/geo, especificando los parámetros q, key y output. También vimos esto en 2. cURL y su sintaxis, pero a lo griego, cuando usábamos cURL para obtener la respuesta del servicio de Google.

Resumiendo, si para Google Maps hacíamos una llamada al URL http://maps.google.com/maps/geo, ahora, para obtener un listado de los vídeos más vistos de YouTube, usaremos el URL http://gdata.youtube.com/feeds/api/standardfeeds/most_viewed. Esta vez, sin embargo, la respuesta no es una dirección; sino un archivo XML en formato Atom.

2. ¿Cómo obtengo el listado de los vídeos más recientes de YouTube?

Con una llamada a http://gdata.youtube.com/feeds/api/standardfeeds/most_viewed

3. ¿Cómo manipulo desde PHP el resultado obtenido?

Con SimpleXML, por ejemplo.

Ejemplo

Más concretamente, podemos armar un controlador como este:

 

class YoutubeController extends AppController{
var $name = 'Youtube';
var $uses = array();
function masVistos(){
   $apiURL = "<a href="http://gdata.youtube.com/feeds/api/standardfeeds/most_viewed">
   $ch = curl_init();
   $timeout = 0;
   curl_setopt($ch, CURLOPT_URL, $apiURL);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
   $respuestaYoutube = curl_exec($ch);
   curl_close($ch);
   $feedAtom = new SimpleXMLElement($respuestaYoutube);
   $this->set('feedAtom',$feedAtom);
   }
}

Con su vista asociada, para mostrar por pantalla los vídeos más vistos:


   echo '
<h3>Los videos más vistos son...</h3>
';
   foreach ($feedAtom->entry as $entry){
      echo $entry->title.'
';
   }

Obtenemos así un listado con los vídeos más vistos de YouTube:

Los videos más vistos son…

Avril Lavigne – Girlfriend
Evolution of Dance
Chris Brown – With You
Rihanna – Don’t Stop The Music
Leona Lewis – Bleeding Love
Jeff Dunham – Achmed the Dead Terrorist
Lezberado: Revenge Fantasies
Charlie bit my finger – again !
Alicia Keys – No One
Hahaha
Timbaland – Apologize (feat. One Republic)
Chris Brown;Chris Brown featuring T-Pain – Kiss Kiss
Miley Cyrus – 7 Things – Official Music Video (HQ)
Akon – “Don’t Matter”
Potter Puppet Pals in “The Mysterious Ticking Noise”
Timbaland – The Way I Are OFFICIAL MUSIC VIDEO
Jonas Brothers – SOS Music Video – Official (HQ)
Oral
Crank Dat Soulja Boy Spongebob
guitar
Jonas Brothers – Burnin’ Up – Official Music Video (HQ)
High School Musical
Sean Kingston – Beautiful Girls
Vanessa Hudgens Say Ok Music Video (Official with Zac Efron)
Soulja Boy Tell`em – Crank That (Soulja Boy)