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)
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_YouTube');
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.
$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);
$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.
$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;
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:
- el titulo en $mediaGroup->title = $yt->newMediaTitle()->setText(’Video subido con la API’);
- 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’);
- 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.
- y los tags en $mediaGroup->keywords = $yt->newMediaKeywords()->setText(’Avenidanet, prueba, api’); tiene que estar separados con (,) coma y no contener espacios
- Por ultimo agregamos mediagroup a mivideo
$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';
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.
//Y introducimos los datos anteriores
$form = '
<form action="'. $enviarloa .'?nexturl='. $devuelta . <br /> '" enctype="multipart/form-data" method="post">'.
'<input name="file" type="file" />'.
'<input name="token" type="hidden" value="'. $clave .'" />'.
'<input type="submit" value="Subir video" />'.
'</form>';
//Mostramos el formulario
echo $form;
Sencillo, verdad… No te olvides del multipart/form-data, en el formulario, espera la siguiente clase…
Descarga | Ejercicio 1
Te interesó este articulo, visita estos...
17 Comentarios hasta ahora
Da tu opinion







Como subir videos con la Api de YouTube (I)…
Quieres subir vídeos desde tu web, revisa este manual te servirá. Ademas que te enseñan a utilizar la famosa API de Youtube de una forma muy sencilla….
[...] Como subir videos con la API de YouTube [...]
Hola, disculpa, como lo aplico en Joomla??
Santiago, no acostumbro a usar Joomla desde hace mucho tiempo. Pero voy a ver si te encuentro algo
Gracias, la verdad esta muy util el manual, pero de verdad quisiera saber como aplicarlo en Joomla, si desde el index.php o desde donde??
Gracias desde ya
Hola,
Para Santiago, en Joomla se debe hacer un componente y/o modulo ( las famosas extensiones ) que no es muy dificil, solo debes seguir ciertas reglas y se hace. Yo lo haria porque necesito algo así, el problema es que no me funciono este ejemplo; aquí les dejo el error para ver si alguien me puede explicar que problema tengo para corregirlo:
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home/xxx/public_html/zend/index.php on line 39
Saludos
Hola de nuevo, ya se porque era, estaba en una version antigua de PHP sin darme cuenta :p
bueno, ahora ya lo puse en php5 y “funciona” pero da otro error:
Fatal error: Uncaught exception ‘Zend_Gdata_App_HttpException’ with message ‘Expected response code 200, got 403′ in /home/inter/public_html/zend/Zend/Gdata/App.php:468 Stack trace: #0 /home/inter/public_html/zend/Zend/Gdata/YouTube.php(520): Zend_Gdata_App->post(Object(Zend_Gdata_YouTube_VideoEntry), ‘http://gdata.yo…’) #1 /home/inter/public_html/zend/index2.php(45): Zend_Gdata_YouTube->getFormUploadToken(Object(Zend_Gdata_YouTube_VideoEntry), ‘http://gdata.yo…’) #2 {main} thrown in /home/inter/public_html/zend/Zend/Gdata/App.php on line 468
seguramente por ahí falta algun paso por hacer, a ver si alguien me dice que pasa.
Saludos.
Hola, me sale un error parecido… Ch…. como sera para implementarlo en Joomla…Alguien??? HELP!!!!!!!!
Hola Santiago,
ya me salió el ejemplo de aquí, es muy fácil, después me paso para explicarte como lo hice y dejarte un link al modulo Joomla ( o lo que haga ) para que lo bajes, bueno y a todo el que lo quiera.
Saludos.
en serio te salio??
Pasame el link por favor para ver como lo hiciste…
Hola Santiago,
Si, ya lo tengo, pero lo primero que debes hacer es bajarte la version “buena del Zend Framework”, porque creo que es el problema, el Script de aquí funciona correctamente, yo me baje el Framework de la web de Zend y estaba mal o algo así leí por ahí, despues con el SmartSVN te descargas el Zend Framework que no se porque pero con ese se baja bien.
Pasate por mi web que te linkea desde mi nombre aqui en el mensaje y me mandas tu correo desde el formulario de contacto y ya nos ponemos en contacto para pasarte el “Framework Bueno” y el componente para Joomla.
Después voy a postear aquí el componente para el que le interese
Saludos.
Hola admin, me sirvio de mucho tu guia para subir videos y te lo agradezco, ahora, sabes de alguna forma como se hace para borrar videos utilizando esta api? muchas gracias por tu respuesta. cualquier cosa deje mi email. gracias.-
Hola Edgar, creo q es por el Zend mismo, xfa enviame el Framework q si vale y el componente a mi correo para revisarlo, ya q yo estaba trabajando directamente desde el index.php de la plantilla del sitio…
Y cual es tu correo Santiago?
aun me falta arreglar alguillo del componente pero ya funciona lo básico, no tiene parte de administrador así que tendras que descomprimirlo y editarlo tu mismo.
mandame tu correo que no soy adivino :p
Hola, tengo el mismo error que Edgard!
Fatal error: Uncaught exception ‘Zend_Gdata_App_HttpException’ with message ‘Expected response code 200, got 403′ i
alguien conoce la solucion?
Listo!
El problema es que no estaba colocando la dev key correcta!
Funciona el upload de archivo, y luego recojo las variables que recibo en la pagina de retorno. Pero, al copiar el id del video que me regresa, y luego intento buscarlo en youtube, dice un mensaje “Este vídeo no está disponible”. Como puedo acceder al video luego de subirlo?