Avenidanet

Como subir videos con la Api de YouTube (I)

Inauguramos nuestro blog hace poco. Y queremos enfocarnos en las conocidas APIs (y muchos temas mas, claro) pero este es un sector que viene en aumento… y es difícil encontrar documentación al respecto (en nuestro idioma).

Bueno, entonces empezaremos con nuestro primer curso.

Utilizando la API de YouTube. Parte 1

Tema: Como subir videos con la Api de YouTube.

Espero no empezar con material muy pesado, pero he buscado esta información por todo lado y no encuentro nada. Ojala les sirva.

Requisitos:

  • PHP 5.1.4
  • La librería de Zend Framework (viene con demos)
  • Developer Key que se puede obtener aqui
  • Cuenta de Youtube

La estructura de los archivos es sencilla (un archivo y una carpeta)

  • index.php
  • Zend (esta carpeta viene en el comprimido de arriba y es la librería)

Abrimos nuestro index.php y digitamos: (no se te olvide la etiquetas de php al inicio y final del archivo)

[cc lang="php" tab_size="2" lines="40"]

require_once ‘Zend/Loader.php’; // Esta es la ruta del archivo loader.php que esta en la carpeta Zend

Zend_Loader::loadClass(‘Zend_Gdata_AuthSub’);
Zend_Loader::loadClass(‘Zend_Gdata_ClientLogin’);
Zend_Loader::loadClass(‘Zend_Gdata_YouTube’);

[/cc]

Revisemos linea por linea.

En la primera incluimos la libreria de Zend, en las siguientes 3 creamos una clase AuthSub, ClientLogin y claro la de Youtube.

[cc lang="php" tab_size="2" lines="40"]

$authenticationURL= ‘https://www.google.com/youtube/accounts/ClientLogin’;

$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
$username = ‘SU USUARIO@gmail.com’,
$password = ‘SU PASSWORD’,
$service = ‘youtube’,
$client = null,
$source = ‘MiYoutube’, // un nombre para identificar la aplicacion
$loginToken = null,
$loginCaptcha = null,
$authenticationURL);

$millave = ‘LA LLAVE o DEVELOPER KEY’;
$httpClient->setHeaders(‘X-GData-Key’, “key=${millave}”);
$yt = new Zend_Gdata_YouTube($httpClient);

[/cc]

$authenticationURL es la direccion donde vamos a enviar los datos que siguen (No cambiar)

Guardamos en $httpClient en valor de la función getHttpClient de la clase que definimos anteriormente ClientLogin, a la cual le enviamos 8 variables de la que debemos cambiar estas:

$username es la cuenta de correo que tenemos ligada con nuestra cuenta de youtube (en este caso debe ser de Gmail, mas adelante enseñaré con otras cuentas)
$password el password de la cuenta
$source es un nombre para identificar la aplicación.

Colocamos nuestra Llave, la pasamos como cabecera a nuestro elemento $httpClient

Después creamos el objeto $yt que es una clase de Youtube con el parametro $httpClient.

Hasta aqui nuestro script funciona para lo que es la Autentificacion en Youtube.

Vamos a subir un video, ya que estamos “logeados” a nuestra cuenta.

[cc lang="php" tab_size="2" lines="40"]

// Creamos una clase para la entrada del video
$miVideo= new Zend_Gdata_YouTube_VideoEntry();

// Creamos un objeto media group
$mediaGroup = $yt->newMediaGroup();
$mediaGroup->title = $yt->newMediaTitle()->setText(‘Video subido con la API’);
$mediaGroup->description = $yt->newMediaDescription()->setText(‘Mi primer video subido con la Api de Youtube. Curso del manejo de la API por Avenidanet’);

// Descarga el archivo que contiene los tags de youtube
$categoryScheme = ‘http://gdata.youtube.com/schemas/2007/categories.cat’;

$mediaGroup->category = array(
$yt->newMediaCategory()->setText(‘Tech’)->setScheme($categoryScheme),
);

// agregamos los tags
$mediaGroup->keywords = $yt->newMediaKeywords()->setText(‘Avenidanet, prueba, api’);

$miVideo->mediaGroup = $mediaGroup;

[/cc]

En el codigo anterior lo que vamos hacer es crear una clase VideoEntry (que es los datos del video) y le agregamos la características con el objeto MediaGroup

Vemos que podemos agregar:

  1. el titulo en $mediaGroup->title = $yt->newMediaTitle()->setText(‘Video subido con la API’);
  2. la descripción en $mediaGroup->description = $yt->newMediaDescription()->setText(‘Mi primer video subido con la Api de Youtube. Curso del manejo de la API por Avenidanet’);
  3. la categoría donde vamos a guardarlo en este caso Tech o tecnologia, se tomo como referencia del archivo http://gdata.youtube.com/schemas/2007/categories.cat donde vienen las etiquetas.
  4. y los tags en $mediaGroup->keywords = $yt->newMediaKeywords()->setText(‘Avenidanet, prueba, api’); tiene que estar separados con (,) coma y no contener espacios
  5. Por ultimo agregamos mediagroup a mivideo

[cc lang="php" tab_size="2" lines="40"]

$tokenHandlerUrl = ‘http://gdata.youtube.com/action/GetUploadToken’;
$tokenArray = $yt->getFormUploadToken($miVideo, $tokenHandlerUrl);
$clave= $tokenArray['token'];

$enviarloa = $tokenArray['url'];

//Este es el archivo que recibe la repuesta, mas adelante aprenderemos a leer esos datos

$devuelta = ‘http://www.mipagina.com/videossubidos.php’;

[/cc]

Lo anterior es el proceso para tomar la dirección de donde debemos enviar nuestro video en la variable $enviarloa con un token en $clave y adonde vamos a recibir la respuesta de como nos fue y el ID del video (si, ese que vemos en la url de youtube http://www.youtube.com/watch?v=yzUUJdMSL88).

Resumen:

  • Ya nos “logeamos” en YouTube
  • Tenemos la descripción de nuestro video en $miVideo (titulo, descripcion, etiqueta y tags) que utilizamos para generar la dirección donde enviarlo y token
  • Sabemos donde enviarlo en $enviarloa y un token en $clave
  • y donde recibiremos la repuesta $devuelta
  • Que nos falta..

Claro, enviar el video… Facil creamos un formulario donde el usuario o nosotros busquemos un video de nuestro disco duro.

[cc lang="php" tab_size="2" lines="40"]

// Contruimos el formulario

//Y introducimos los datos anteriores
$form = ‘

‘.

‘.

‘.

‘;

//Mostramos el formulario
echo $form;

[/cc]

Sencillo, verdad… No te olvides del multipart/form-data, en el formulario, espera la siguiente clase…

Descarga | Ejercicio 1