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)

Anuncios

5 comentarios

  1. […] le pedimos al geocodificador de Google que nos mande un mapa. Esto es lo que hicimos, también, aquí, cuando le pedimos a YouTube que nos mandara un listado con los vídeos más vistos. En ambos […]

  2. […] Hola visitante, ¿qué tal la semana? En este post vamos a hacer lo mismo que hicimos en 5. Listado de YouTube con SimpleXML de esta categoría, YouTube y CakePHP. Esta vez, sin embargo, en vez de implementar la lógica en […]

  3. No sirve la funcion

  4. Estaba leyendo la API de Google para youtube, y pues te pasas por el arco del triunfo la clase Zend_GData para el acceso a datos, entonces que ventajas tengo de usar una u otro metodo de acceso a datos?

  5. Hola José Manuel,

    Pues ahora mismo no sabría que decirte, la verdad :-(. Si no ando equivocado, la clase Zend_GData es del framework Zend y aquí explican cómo usarla: http://framework.zend.com/manual/en/zend.gdata.html#zend.gdata.introduction. Es decir, no puedes utilizar Zend_GData con CakePHP, me atrevería a decir (aunque no estoy seguro y quizás me equivoco).

    En cualquier caso, este post es una introducción, informal, como este blog ;-P, al manejo del API de YouTube que explica algo muy sencillito: cómo obtener un listado de los videos más vistos. Mi conocimiento técnico, limitado, se pierde en la profundidad de tu pregunta. ¡Saludos!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: