A solicitud de nuestros visitantes les presentamos PHP Youtube Downloader 2.0 la cual es la nueva versión del script PHP que permite descargar vídeos de Youtube utilizando PHP. Esta nueva versión esta adaptada a la nueva estructura de datos de Youtube.
Nota: Esta información es para propósitos educativos, el autor no se responsabiliza de los usos que puedan hacer los usuarios de la presente información
Como funciona?
Para una explicación detallada de como funciona las rutas de Youtube pueden leer: Constructing YouTube FLV URL on client-side without any server-side script. Pero resumiendo cuando se desea acceder a un vídeo de Youtube, primero se genera un identificador de sesión que se devuelve al usuario y posteriormente se hace el llamado al vídeo con el identificador del vídeo y el identificador de sesión de la forma:
-
http://www.youtube.com/get_video.php?video_id=idvideo&t=idsesion
Entonces para obtener los vídeos, nuestro objetivo es obtener el idsesion para construir la ruta final del descarga.
Implementando
Lo primero que hacemos es construir una función que se conecte a Youtube y obtenga los headers de respuesta a la petición inicial del vídeo, entre estos headers estará el identificador que necesitamos. Nótese que esta función recibe como parámetro el identificador del vídeo.
-
function getHeaders($varurl) {
-
$host = "www.youtube.com";
-
$url = "/v/".$varurl;
-
$session = "";
-
if ($fp) {
-
if($char === "\n") {
-
return($session);
-
} else {
-
if ($arrValue[0] == "Location") {
-
$session = $getvars['t'];
-
}
-
}
-
} else {
-
$header = $header.$char;
-
}
-
}
-
}
-
}
El siguiente paso es crear la URL con la ruta final del vídeo que deseamos acceder, en nuestro caso estamos recibiendo el identificador del vídeo por método GET de un formulario y estamos construyendo el URL mostrado al inicio en donde obtenemos el identificador de sesión haciendo uso de la función getHeaders.
Uniendo el código, agregando un formulario en el cual el usuario ingresa el id del vídeo obtenemos la nueva versión de nuestra herramienta para descargar vídeos de Youtube solo utilizando PHP. Pueden ver el ejemplo funcionando en: http://samples.unijimpe.net/phpyoutube.php
Finalmente les dejo los archivos fuente de este ejemplo para que lo puedan revisar y mejorar.
Posts Relacionados


Comentarios Total 58 comentarios
Publicado: 14/12/2007 11:43 am
Interesante tutorial. Y gracias por compartir el código.
Saludos desde Trujillo-Peru. :)
Publicado: 14/12/2007 7:23 pm
NOo anda, que pasoo Amigo, tu eras grande, ya no nos quieres dar los codigos como antes, esta bien que lo hagas tu, pero eso fue lo que te hizo ser grande, y ya no eres como antes.
Si volverias a hacer la descarga de videos propios de youtube como el que hiciste antes para que cada uno pueda tener nuestro propio buscador con descarga seria distinto, pero ya no eres el mismo
es una lastima
Publicado: 15/12/2007 1:57 pm
Muchas gracias por publicar el código!
Pero el problema es que el archivo que colgaste para descargar es exactamente el mismo al de la version “obsoleta” 1.0 de tu PHP YouTube Downloader no? Entonces sigue dando el mismo problema o por lo menos ami no me funciona.
Respecto a los códigos que has puesto en el post dónde se deben incluir? Sería posible que colgases el archivo actualizado para descargar?
Un saludo y muchas gracias por tu trabajo y tu contribución!
Publicado: 15/12/2007 6:16 pm
Hola, debido a un pequeño problema me equivoque y no puse el archivo correcto para la descarga. He corregido el enlace y ya pueden descargar el archivo correcto.
http://www.box.net/shared/rcdpgblmz0
Gracias por su interés y también por sus sugerencias.
Publicado: 16/12/2007 3:58 pm
Ahora vuelves a estar en lo alto amigo,
Ten en cuenta que mucha gente te visita porque explicas muchas cosas que la mayoria no entiende, y si se interesan en tu blog es por eso, porque logran hacer cosas que quizas de otra manera no lograrian.
A ti te conoci por querer poner un buscador de videos propios y nunca deje de visitarte por eso,
Espero nos sigas brindando tutoriales como los de siempre.
Publicado: 17/12/2007 10:48 am
Unijimpe!!!
Nuevamente Gracias por tu aportacion, seguiremos en contacto.
Feliz Año Nuevo.
Publicado: 17/12/2007 12:14 pm
Probado y Funcionando Correctamente!!!
Gracias unijimpe.
Publicado: 18/12/2007 4:08 pm
Vaya Chevere aporte justamente lo estaba buscando esta perfecto como el primero!! – Gracias
Me preguntaba si se podría modificar o cambiar el nombre del archivo en este caso es get_video.flv no? pues me gustaría cambiarlo por otro se podría hacer eso, es que mi profe de computo no puede y yo le sorprendería si me enseñan ok bueno salu2 a todos
Bye Amigos espero su respuesta con ansias y vendré a ver todo los días la respuesta después del cole… Bye
Publicado: 21/12/2007 8:09 pm
Bien Mano eres lo maximo, funcional totalmente y lo mejor de todo q no utiliza las variables curl q utiliza adriansoft en el otro post, el me lo paso y pues, no funcionaba en host gratis, ahor ami incognita, es , q no puedo utilizarla tampoco en gratishost, peor eh hehco mi pc server y si puedo, y la cosa es q me restringen la funcion fsockopen()
alguien qme recomiende algun host donde pueda utilizarla.
Seria d emucha ayuda gracias.
Mi msn es webmikito@mikito.tk para cualquier cosa
Gracias
Publicado: 21/12/2007 11:04 pm
Ahora sí… este es el unijimpe que me gusta, código libre para todos como tiene que ser!
Publicado: 23/12/2007 5:03 am
gracias por el esfuerzo que resulta para vosotros el realizar estos códigos y compartirlos, la verdad es que es fantástico el altruismo que demostrais por vuestra parte.
Un Saludo y seguir en la línea sois los mejores. :-P
Publicado: 29/12/2007 9:02 pm
Muchas gracias amigo, yo tambien llegué aca buscando un buscador de YouTube, despues youtube cambio la cosa y se me complicó, me volviste a salar :D
Te felicito
Publicado: 31/12/2007 4:32 am
[...] por la pagina de unijimpe me encontré con un tuto en php para descargar video de youtube simplemente indicando el valor de id del video, me pareció una excelente idea más si dicha idea [...]
Publicado: 31/12/2007 10:36 am
No me funciona, me baje el la url directa (http://www.box.net/shared/rcdpgblmz0)y solo hice un cambio, el siguiente..
Cambié: <form action=”" method=”get”>
por:
Y cuando lo pongo se actualiza la página pero no hace la descarga, ¿a que se debe? Besos.
Publicado: 31/12/2007 10:37 am
phpyoutube.php es lo que puse en form action, que no salió, perdón y saludos de nuevo!
Publicado: 10/01/2008 4:20 pm
Hola como estas mis respetos para este es el mejor blog que he visitado .
Me poedes resolver una duda como le ago para traferir la url
a una varialbe ejemplo
$Urldescarga
doy a entender ?
header(“Location: “.$videoUrl.”?video_id=”.$videoIds.”&t=”.getHeaders($videoIds));
pasar esto a una variable enves de que se descargue quiero saber la direccion y mostrar:
un link algo asi
http://www.youtube.com/get_video.php?video_id=idvideo&t=idsesion
y luego que le den click para descargar en ves que se descargue automatico lo que yo quiero es extraer la direccion del video y ponerla en una variable.
No se si me doy a entender
Publicado: 10/01/2008 11:09 pm
Muy claro y funcional el código. Se me ocurre que quizá la función en lugar de recibir el identificador del video podria recibir directamente la URL del video y obtener este identificador de allí. Es algo que resulta sencillo de hacer y su principal ventaja es no andar explicandole al usuario que cosa es y como conseguir el dichoso identificador.
Se agradece por el código.
Saludos y felicitaciones por el blog.
Publicado: 22/01/2008 1:34 am
Joel, esto lo publique en el post: Actualizacion de Sprytube
………………………….
Encontre otro script que sirve para bajar videos de youtube.
Pueden ver el ejemplo en http://www.animexdeluxe.uni.cc/videos/
Es el “Youtube Downloader 2″
El cual genera la url directa del video, mas o menos asi
cache.googlevideo.com/get_video?video_id=rn8ULJGboOE&origin=ash-v215.ash.youtube.com
si le agregamos la extencion .flv se puede reproducir con cualquier reproductor flash.
Seria muy bueno que integraran de nuevo el otro reproductor y la opcion de descargar los videos directamente en la busqueda de los videos ^^
Aqui esta el codigo fuente:
http://video.qooqle.jp/dl/youtube_downloader.zip?070607
Publicado: 24/01/2008 1:58 pm
Muchas muchas gracias unjimpe!!!
me has salvado la vida!!!
Publicado: 29/01/2008 8:30 am
Exelente entrada, yo no tenia idea de donde sacar el ID SESION, quisiera preguntar a ti o a los visitantes, si intentaron crear su propio reproductor de video youtube, yo logre crear uno pero la calidad de la imagen es muy baja, mas baja que en la misma pagina del youtube Haha, tal ves Uds me puedan ayudar mejorarlo.
Publicado: 30/01/2008 6:15 pm
Gracias pero tengo una duda con firefox lo bajo normal y luego una vez bajado le agrego la extencion .FLV?? y conque se reproduce
Publicado: 30/01/2008 8:24 pm
Para visualizar archivos FLV puedes utilizar el Riva FLV Player el cual es un reproductor de videos FLV. Lo puedes descargar de manera gratuita en: http://www.rivavx.com/index.php?id=422&L=3
Publicado: 31/01/2008 7:57 am
se puede utilizar el mismo codigo para bajar los videos de Dailymotion?
Publicado: 02/02/2008 8:48 pm
Hola, de donde me lo puedo bajar ya que el enlace no funiona?
Saludos
Publicado: 13/02/2008 8:10 am
hay gente que hace poco y para colmo son aduladores cuando les conviene como Marco,osea, se pasan esperando que los demas hagan las cosas.Si alguien publica un codigo mal no es por mala intencion, sino por equivocacion o simplemente por que a alguioen le habra dado resultado…
Quejarse menos y aprovechar mas la informacion de intenet.
Publicado: 21/04/2008 12:19 pm
por que canbian esa ruta no la encuentro la nesesito y no se puede
Publicado: 21/04/2008 5:46 pm
Hola amigos, me baje el codigo php lo puse en mi web, pero tengo problemas, no funciona o estoy haciendo algo mal, por favor si me pueden ayudar a solucionar este problemita. agradeciendo anticipadamente la atencion a la presente.
Saludos desde peru
MiguelDextre
Publicado: 22/04/2008 6:35 pm
Hola! Deben de haber cambiado el método porque ya no funciona. Yo hice uno que parseaba el xml de goear.com, aquí os lo dejo:
extract($_POST);
$id = explode(‘=’, $url_goear);
$contenido = @file_get_contents(“http://www.goear.com/files/sst/secm” . $id[1] . “.xml”);
$contenido_separado = explode(‘”‘, $contenido);
header (“Location: “. $contenido_separado[5]);
Publicado: 10/08/2008 9:40 am
Cuando bajo el archivo me aparece con este nombre get_video.106&ipbits=16&expire=1218400513&key=yt1&sver=2 pero no se ejecuta con el flash player ni con quicktime, sera que no esta funcionando o hay algo mal en el script. Lo probe directamente con el que tienen de prueba aqui.
Publicado: 14/08/2008 4:42 pm
Bueno me gusto mucho este script asi que lo expandi para que recibiera tanto identificadores como la Url completa… Espero comentarios…
URL del codigo fuente:
http://www.fileden.com/files/2006/9/15/218647/phpyoutube.zip
JedK_XP
Publicado: 16/08/2008 5:44 pm
hola unijimpe quiera saber cual es la direccion que genera el PHP Youtube Downloader 2.0
al momento de descargar un video
Publicado: 16/08/2008 7:09 pm
px no ponen tambien para descargar de megavideo.com
Publicado: 06/10/2008 9:04 pm
hola buenas veran e subido el codigo aun servidor gratis que es usuarios lycos pero no da alguien me podria decir por que es
Publicado: 24/10/2008 7:51 pm
Hola, el codigo y la pagina no funcionan, da en blanco. Puedes arreglarlo?
Publicado: 24/10/2008 11:07 pm
Hola, efectivamente este script ha dejado de funcionar, nuevamente Youtube ha cambiado las rutas de los vídeos, estamos trabajando para resolver este problema.
Publicado: 26/10/2008 3:37 am
Hola, despues de un poco de investigación ahora tenemos una nueva forma de descargar videos, ello lo hemos implementado y puesto en funcionamiento en:
http://sprytube.unijimpe.net
Publicado: 26/10/2008 10:44 am
Hola. ¿puedes publicar el código PHP?
Saludos
Publicado: 26/10/2008 1:33 pm
Hola, podrías por favor publicar el codigo que usas ahora? Muchas gracias
Publicado: 26/10/2008 2:18 pm
Hola,
Agradecería si pudieses compartir la nueva forma de obtener el “session”, dado que YouTube lo ha cambiado.
Por mi parte he encontrado una solución, pero me gustaría ver la tuya en caso que sea mas eficiente.
Saludos,
PD: Demo de mi fix aquí
http://www.infosec.cl/youtube/
Publicado: 26/10/2008 10:41 pm
Hola, como se explica en este post para descargar un vídeo se debe acceder mediante el siguiente URL:
http://www.youtube.com/get_video.php?video_id=idvideo&t=idsesion
El idvideo es el identificador del vídeo, pero idsesion es una variable que se genera como sesión. El problema consiste en conseguir esta segunda variable.
En el nuevo cambio que ha hecho Youtube, antes de acceder al vídeo se accede a:
http://www.youtube.com/get_video_info?video_id=idvideo
Este URL devuelve un texto en formato urlencoded con los datos del vídeo, entre ellos el idsesion en una variable llamada token.
Entonces para obtener el vídeo, primero hacemos la consulta a esta nueva URL, extraemos la variable token y con ello generamos la ruta directa al vídeo como el explicado en el post.
Publicado: 26/10/2008 11:21 pm
Excelente.
Muchas gracias.
Por mi parte, la solucion que implemente es la siguiente:
Al ingresar a la url del video, ejemplo: http://www.youtube.com/watch?v=idvideo
Si observamos el HTML podremos encontrar un token valido en mas de una ocacion, siendo la mas identificable en la variable java “swfArgs”.
Ejemplo:
var swfArgs = {“usef”: 0, “fmt_map”: “6/720000/7/0/0″, “hl”: “en”, “iv_storage_server”: “http://www.google.com/reviews/y/”, “vq”: null, “video_id”: “idvideo”, “l”: 77, “sk”: “rLFnl453V34-T4vsNnk-AeAG_0lpg48C”, “t”: “OEgsTojFAypLc6iPOJtnHn1RO”, “plid”: “uQmxmAAACgAAUIQE”, “iv_module”: “http://s.ytimg.com/yt/swf/iv_module-vfl57703.swf”};
Siendo “t” el valor que nos interesa, en este caso: “OEgsTojFAypLc6iPOJtnHn1RO” que seria nuestro token.
Tu acercamiento es mejor, dado que es mas pequeño el codigo y la busqueda mas sencilla. Para mi caso, es mejor el mio dado que dicho HTML es solicitado de todas formas para obtener otros datos que utilizo.
Para quien quiera estraer entonces el token del HTML, puede utilizar este codigo.. siendo $html el HTML de http://www.youtube.com/watch?v=idvideo
Codigo:
[php]
[/php]
Saludos!
Publicado: 27/10/2008 4:02 pm
Hola amigo MArcos, podrias compartir el codigo??
Publicado: 28/10/2008 6:27 pm
Unijimpe !!! Auxilio, te pediria que me ayudaras con el código para descargar videos de Youtube.
Saludos!
Publicado: 28/10/2008 9:54 pm
Hola,
Para quienes quieran, adjunto un PHP con una nueva funcion que devuelve el TOKEN a base de un identificador de youtube.
Aca:
http://www.infosec.cl/youtube/funcion_token.zip
Saludos!
Publicado: 29/10/2008 8:47 am
hey, i cant speak spanish but we all know that we had problem with youtube and its nice to see that u guys have fixed it…i just checked http://samples.unijimpe.net/phpyoutube.php and it says PHP Youtube Downloader 2.1 so i was wondering when will we be able to download version 2.1??
Publicado: 30/10/2008 12:56 am
Hola, efectivamente estuve trabajando en la nueva versión y recién ahora la tengo lista así pueden ver la explicación completa y descargar los archivos fuente en:
http://blog.unijimpe.net/php-youtube-downloader-21/
Publicado: 03/11/2008 1:55 pm
WOO…
UNIJIMPE Y GRACIAS POR SEGIR EXPLICANDO ESTOS TUTORIALES QUE SON MUY BUENOS SIGE A SI Y LLEGARAS MUY ALTO
Publicado: 15/11/2008 5:04 pm
Hola a todos.
Me gustaría proponer la creación de un GRUPO DE TRABAJO de personas interesadas en investigar el acceso a los vídeos (y otros datos) de Youtube y otras plataformas.
UniJimpe hace una labor admirable, pero no podemos cargarle la responsabilidad de solucionarnos siempre la papeleta. Hay que currar y aportar un poquito, creo yo…
Yo no soy programador, pero empecé mirando su script y ya he accedido otras 7 plataformas por mi cuenta, lo que demuestra que no es tan difícil.
Creando este grupo podríamos trabajar, aportar y compartir nuestros conocimientos entre todos. También podríamos explorar formas alternativas de acceso para adelantarnos a los cambios y contar con scripts alternativos a los que echar mano rápidamente en caso de cambios.
Resumiendo: ¡¡¡juntos podemos hacer grandes cosas!!! Mucho mejor que tener a una persona pegándose la paliza para que luego nos beneficiemos todos de su trabajo.
Si os parece buena idea escribidme y vemos cómo podemos hacerlo:
c0nt4ct4r@gmail.com
Un abrazo!!!
Publicado: 22/12/2008 5:53 pm
intento descargar el video tal como dice ahi pero no puedo que hago?
tambien baje otro pero me da error haber si alguien lo puede checar
http://www.pinkynet.com.mx/bajar_youtube_2/
Publicado: 28/12/2008 4:48 pm
alguien me podria pasar el script de php-youtube-downloader-2.1/
lo que pasa es que lo intente bajar pero dice “post no encontrado”
http://blog.unijimpe.net/download/4/
Publicado: 22/02/2009 3:28 am
alguien me puede dar el codigo de youtube download? es que cuando lo instalaba me pidio un codigo para poder instalarlo, y se lo agradeseria… les dejo my hotmail para que me lo envien ok grasia…
Publicado: 22/02/2009 5:17 pm
hotmail es} alafunx@hotmail.com
Publicado: 02/03/2009 8:34 pm
me marca el siguiente error “Call to undefined function: curl_init()” me podrias decir por q??.
Ya le movi e investigue el funcionamiento de esa función pero no se por q me marca el error.
gracias!!
Publicado: 03/03/2009 11:54 pm
Fulanito, primero que estas viendo una versión antigua del script, la ultima versión la pueden encontrar en: http://blog.unijimpe.net/php-youtube-downloader-21/.
Respecto al error de curl_init, es por que en tu hosting esta deshabilitada la librería cURL, debes solicitar al administrador del servidor que habilite esta librería.
Publicado: 06/04/2009 8:52 am
amigos, estoy probando la version 2.1 que ustedes tienen online y no funciona.Seguramente YOUTUBE hizo algun cambio. Gracias por su ayuda.
Publicado: 13/10/2009 6:43 pm
Oe man unijimpe ponte todos los archivos de tu demo http://samples.unijimpe.net/phpyoutube.php para bajar ps no seas malo soy un novato en estas cosas, a ver si te animas
Publicado: 26/11/2009 6:51 pm
porque me aparece el url ke es error
Publicado: 22/02/2010 2:29 am
[...] por la pagina de unijimpe me encontré con un tuto en php para descargar video de youtube simplemente indicando el valor de id del video, me pareció una excelente idea más si dicha idea [...]