API de datos de Youtube

Para crear aplicaciones relacionadas con youtube tenemos 2 APIs, API de datos y API del reproductor:

- El API de datos está orientado a desarrolladores acostumbrados a programar en el lado del servidor. Yotube nos proporciona clases implementadas en varios lenguajes de programación que nos podemos descargar.

- El API del reproductor nos permite configurar las opciones del reproductor de youtube en nuestra web, creando incluso nuestros propios controles.

En este artículo nos vamos a centrar en una descripción general del API de datos.

Esta API se basa en el protocolo REST, con peticiones HTTP y respuesta en formato XML, aunque también podemos obtener la respuesta en formato JSON añadiento a la petición el parámetro alt=jsonc.

Para autenticarnos disponemos de 3 esquemas: AuthSub, OAuth o ClientLogin.

- AuthSub: Para crear una aplicación web que permita a los usuarios vincular vídeos, comentarios, puntuaciones, contactos u otra información con sus propias cuentas de YouTube.

- OAuth: Este método se utiliza con la misma finalidad que el anterior pero utilizando un sistema estándar basado en el protocolo abierto OAuth

- ClientLogin: Para asociar todas las acciones de tu aplicación a una cuenta de Youtube.

Si tu aplicación requiere que sus usuarios introduzcan su usuario y contraseña de youtube, no deberías usar el método ClientLogin.

Para crear tu aplicación también necesitarás de una clave de desarrollador y un ID de cliente que puedes obtener aquí

En la guía de referencia del API tienes información detallada sobre todas las acciones que puedes realizar y sobre los códigos de respuesta HTTP para solicitudes del API de datos de YouTube.

Ahora vamos a ver unos ejemplos con PHP y curl de lo que podemos hacer utilizando este API:

Añadir un vídeo favorito a tu canal:

En este ejemplo suponemos que estamos utilizando el método de autenticación ClientLogin. En las cabeceras de la petición POST debemos pasarle el método de autenticación y el "authtoken" que obtenemos al autenticarnos (AUTH_TOKEN), la clave de desarrollador (DEVELOPER_KEY). También le estamos indicando que queremos los datos en formato JSON. En la variable $data tenemos que poner el id del video de youtube que queremos añadir como favorito a nuestro canal. como estamos utilizando un protocolo REST tenemos que enviarlo en el formato correspondiente, por eso las claves del array deben ser ["data"]["video"]["id"], este formato será el mismo que recibamos cuando hagamos una petición GET para obtener los videos favoritos de nuesto canal.

	$data["data"]["video"]["id"] = 'ID_VIDEO';

	$ch = curl_init();

	curl_setopt($ch,CURLOPT_URL,'http://gdata.youtube.com/feeds/api/users/TU_CANAL/favorites?alt=jsonc');

	curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
	curl_setopt($ch, CURLOPT_HTTPHEADER, array(
			"Host: gdata.youtube.com",
			"Content-Type: application/json",
			"Authorization: GoogleLogin auth=AUTH_TOKEN",
			"GData-Version: 2,
			"X-GData-Key: key=DEVELOPER_KEY"
	));
	$response = curl_exec($ch);
	$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
	curl_close($ch);

Borrar un vídeo favorito de tu canal:

Para borrar un video favorito de nuestro canal es muy simple, solo tenemos que enviar una petición DELETE a la url del video correspondiente. Para referenciar al video en la url utilizamos su ID.

	$ch = curl_init('http://gdata.youtube.com/feeds/api/users/TU_CANAL/favorites/ID_VIDEO');
	curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_HTTPHEADER, array(
			"Host: gdata.youtube.com",
			"Content-Type: application/atom+xml",
			"Authorization: GoogleLogin auth=AUTH_TOKEN",
			"X-GData-Key: key=DEVELOPER_KEY"
	));
	$response = curl_exec($ch);
	$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
	curl_close($ch);

Obtener los vídeos favoritos de tu canal:

Obtener un listado con los vídeos favoritos de tu canal es mucho más simple. No necesitamos estar autenticados, pues esta acción es pública. Así que podemos utilizar la función de php "file_get_contents". Si pasamos por GET el parámetro alt=jsonc, recibiremos la respuesta en JSON, por lo que parsearla será mucho más sencillo, solo hay que aplicarle la función "json_decode" a la respuesta.

	$response = file_get_contents("http://gdata.youtube.com/feeds/api/users/TU_CANAL/favorites?v=2&alt=jsonc");
	$response = json_decode($response,true);

En la guía de referencia del API tenemos los códigos de respuesta de estas acciones, además de una explicación más detallada de lo que podemos hacer con esta API. En estos ejemplos hemos utilizado php y curl para hacer las peticiones, pero desde la web del API podemos descargarnos clases para distintos lenguajes de programación que nos facilitarán esta tarea.

Comentarios

Comentario de Jose - 20 de Febrero de 2012 - 17:16
interesante
Ha habido un error en el envío
Comentario enviado. Será revisado por la moderación antes de ser publicado.

Deja tu comentario

Tu nombre:
Tu email:
Tu comentario: