YouTube es una popular plataforma dedicada a compartir vÃdeos donde también puede ver vÃdeos de otros usuarios. Sin embargo, a menudo necesitamos obtener dichos videos de YouTube para utilizarlos cuando no tengamos conexión. Si eres desarrollador de PHP, seguramente habrás buscado algún script de PHP para descargar videos de YouTube en tu equipo. Si no has encontrado ninguno, en este artÃculo te explicaré cómo crear de forma sencilla tu propio script para descargar tus videos favoritos de YouTube.
SÃ, sabemos que Youtube no cuenta con ningún método oficial para descargar vÃdeos, pero eso no significa que no podamos hacerlo. Sabemos que el reproductor siempre emite una solicitud HTTP a http://youtube.com/get_video_id?video_id=EL_ID_DEL_VIDEO para obtener información sobre un video concreto. El resultado de dicha solicitud contiene una cadena codificada en la que viene la ubicación del vÃdeo. Asà pues, lo que tendremos que hacer es descargarnos dicho fichero.
$vid = $_GET['vid']; // Youtube video ID $vformat = $_GET['vformat']; // The MIME type of the video. e.g. video/mp4, video/webm, etc. parse_str(file_get_contents("http://youtube.com/get_video_info?video_id=".$vid),$info); $streams = $info['url_encoded_fmt_stream_map'];
Ahora vamos a recuperar todos los streams. Los stream son conjuntos de URLS codificadas separadas por comas. Con el fin de recuperar todos los streams, tendremos que convertirlo en un array mediante el uso de explode(',', $stream).
$streams = explode(',',$streams);
Finalmente, debemos recorrer el bucle por todos los streams para obtener la información.
foreach($streams as $stream){ parse_str($stream,$data); //Now decode the stream if(stripos($data['type'],$vformat) !== false){ $video = fopen($data['url'].'&signature='.$data['sig'],'r'); //the video $file = fopen('video.'.str_replace($vformat,'video/',''),'w'); stream_copy_to_stream($video,$file); fclose($video); fclose($file); echo 'Youtube Video Download finished! Now check downloaded file.'; break; } }
Aquà tienes el script completo de PHP para descargar vÃdeos de YouTube.
<?php $vid = $_GET['vid']; //the youtube video ID $vformat = $_GET['vformat']; //the MIME type of the video. e.g. video/mp4, video/webm, etc. parse_str(file_get_contents("http://youtube.com/get_video_info?video_id=".$vid),$info); //decode the data $streams = $info['url_encoded_fmt_stream_map']; //the video's location info $streams = explode(',',$streams); foreach($streams as $stream){ parse_str($stream,$data); //decode the stream if(stripos($data['type'],$vformat) !== false){ //We've found the right stream with the correct format $video = fopen($data['url'].'&signature='.$data['sig'],'r'); //the video $file = fopen('video.'.str_replace($vformat,'video/',''),'w'); stream_copy_to_stream($video,$file); //copy it to the file fclose($video); fclose($file); echo 'Youtube Video Download finished! Now check the file.'; break; } } ?>
A continuación, te explico cómo llamar al script para descargar vÃdeos de Youtube si es que el script se encuentra en un servidor local.
http://localhost/PHP SCRIPT NAME.php?vid=THE YOUTUBE VIDEO ID&vformat=THE MIME TYPE OF THE VIDEO
Fuente: phpzag.com