Usando get_video en YouTube para download un video

Estoy intentando get la URL del video de cualquier video de YouTube como este:

Abierto

http://youtube.com/get_video_info?video_id=VIDEOID 

luego tome el valor del token account_playback_token y abra esta URL:

 http://www.youtube.com/get_video?video_id=VIDEOID&t=TOKEN&fmt=18&asv=2 

Esto debería abrir una página con solo el video o iniciar una descarga del video. Pero no sucede nada, la window de actividad de Safari dice 'No encontrado', así que hay algo mal con la URL. Quiero integrar esto en una aplicación para iPad, y el método javascript para get la URL del video que uso en la versión de iPhone de la aplicación no funciona, así que necesito otra solución.

YouTube cambia todo el time y creo que la URL no está actualizada. Por favor ayuda 🙂

Editar: parece que el método get_video ya no funciona. Realmente agradecería que alguien me dijera otra forma de encontrar la URL del video.

Gracias, realmente necesito ayuda.

Lo siento, eso ya no es posible. Limitan el token a la IP que lo obtuvo.

Aquí hay una solución utilizando la function get_headers() , que le proporciona una matriz con el enlace al video. No sé nada sobre ios , así que espero que puedas reescribir este código PHP tú mismo.

 <?php if(empty($_GET['id'])) { echo "No id found!"; } else { function url_exists($url) { if(file_get_contents($url, FALSE, NULL, 0, 0) === false) return false; return true; } $id = $_GET['id']; $page = @file_get_contents('http://www.youtube.com/get_video_info?&video_id='.$id); preg_match('/token=(.*?)&thumbnail_url=/', $page, $token); $token = urldecode($token[1]); $get = $title->video_details; $url_array = array ("http://youtube.com/get_video?video_id=".$id."&t=".$token, "http://youtube.com/get_video?video_id=".$id."&t=".$token."&fmt=18"); if(url_exists($url_array[1]) === true) { $file = get_headers($url_array[1]); } elseif(url_exists($url_array[0]) === true) { $file = get_headers($url_array[0]); } $url = trim($file[19],"Location: "); echo '<a href="'.$url.'">Download video</a>'; } ?> 

Yo uso esto y oscila: http://rg3.github.com/youtube-dl/

Simplemente copie una URL de YouTube desde su browser y ejecute este command con la URL de YouTube como el único argumento. Descubrirá cómo encontrar el mejor video de calidad y downloadlo por usted.

¡Estupendo! Necesitaba una manera de tomar una list de reproducción completa de videos.

En Linux, esto es lo que utilicé:

y = http://www.youtube.com ; f = "http://gdata.youtube.com/feeds/api/playlists/PLeHqhPDNAZY_3377_DpzRSMh9MA9UbIEN?start-index=26&quot;; para i en $ (curl -s $ f | grep -o "url = '$ y / watch? v = [^'] '"); do d = $ (echo $ i | sed "s | url \ =' $ y / watch? v = (. ) &. * '| \ 1 | "); youtube-dl –restrict-filenames "$ y / watch? v = $ d"; hecho

Tienes que encontrar la ID de list de reproducción de una URL de YouTube común como: https://www.youtube.com/playlist?list=PLeHqhPDNAZY_3377_DpzRSMh9MA9UbIEN

Además, esta técnica utiliza gdata API, limitando 25 loggings por página.
Por lo tanto, el parámetro? Start-index = 26 (para get la página 2 en mi ejemplo)

Esto podría usar algo de limpieza, y lógica adicional para iterar a través de todos los sets de 25 también.

Créditos:

https://stackoverflow.com/a/8761493/1069375

http://www.commandlinefu.com/commands/view/3154/download-youtube-playlist (que en sí mismo no funcionaba del todo)