Archivo de la etiqueta: download

Como bajar vídeos flash que se resisten (ComedyCentral, por ejemplo)

Me he pasado unas cuantas horas intentando descargar un vídeo en Flash para no depender de mi conexión a Internet cuando quiera volver a verlo. Con Firefox no suelo tener mayor problema en hacerlo gracias a Video Download Helper, una extensión que a golpe de click te resuelve la papeleta casi siempre. Pero el caso de esta tarde quedaba fuera de los dominios de Video Download Helper, porque no se trataba de un vídeo en Flash (FLV) descargado desde la web (HTTP), sino del típico esquema reproductor multimedia en Flash + streaming de vídeo por RTMP.

En concreto, mi «reto» era descargar la entrevista de Stephen Colbert a Lawrence Lessig (os la recomiendo, muy buena 😉 ).

Buscando en gúguel llegué a páginas bastante desactualizadas que me hablaban de infinidad de programas para Win32 como GetFLV o ReplayAV que terminé probando en Wine y en una máquina Windows con VirtualBox, con poco éxito.

Cada vez que pulsaba el botón de play, mi frustración iba en aumento, porque tenía claro que «si se puede ver, se puede descargar». Así que con el típico enfoque «moscas a cañonazos» que predomina en el recetario de este humilde blog, terminé dando con lo obvio (aunque como dijo Lacan: «Lo obvio suele pasar desapercibido, precísamente por obvio», también procede el más castizo refrán: «vistos los cojones, toro»): capturar todo, buscar URLs en la captura y descargarlas.

Manos a la obra:

1. Captura de tráfico

Para capturar el tráfico, nada como el viejo tcpdump a todo trapo:

tcpdump -i eth0 -p -s 0 -w captura.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C7042 packets captured
7042 packets received by filter
0 packets dropped by kernel

2. Búsqueda en la captura

Para buscar, probamos con grep:

grep -i rtmp captura.pcap
Coincidencia en el fichero binario captura.pcap

Sabemos que estás ahí…

strings captura.pcap | grep rtmp
rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_240.flv
rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_480.flv
@rtmp://88.221.92.180:1935/ondemand?_fcs_vhost=cp9950.edgefcs.net

Perfecto, a por ello…

3. Descarga del stream de vídeo

Para bajar un flujo de datos en RTMP, rtmpdump o flvstreamer son nuestros aliados:

flvstreamer -r "rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_240.flv" -o colbert.flv
FLVStreamer v1.8e
(c) 2009 Andrej Stepanchuk, The Flvstreamer Team, license: GPL
Connecting ...
Starting download at 0.000 kB
Metadata:
duration 370.94
width 240
height 180
videodatarate 250
audiodatarate 80
framerate 14.98
creationdate Fri Jan 9 01:01:09 2009
lasttimestamp 370.91
lastkeyframetimestamp 368.97
videocodecid 4
audiocodecid 2
audiodelay 0
canSeekToEnd FALSE
filesize 12810455
videosize 8851208
audiosize 3879788
datasize 19758
ERROR: ReadPacket, failed to read RTMP packet body. len: 65812
Download may be incomplete (downloaded about 8.30%), try --resume
Closing connection.

Vaya, parece que se corta cada pocos bytes, probaremos usando la fuerza bruta y la opción «resume»:

while true; do flvstreamer --resume -r "rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_240.flv" -o colbert.flv; done

¡Genial! El FLV ya está en nuestro disco duro a buen recaudo. Ahora a remezclaro y vitaminarlo 🙂

Bajar presentaciones no disponibles para descarga en Slideshare

Este artículo va de saltarse restricciones, de forma manual y un poco chapucera, pero efectiva O:-)

Restricciones que quizá estén ahí por algo, pero que personalmente me tocan la moral porque no me gusta nada depender de la conexión a Internet y de que los hados de la Cloud Computing se apiaden de mí cuando los necesite.

El caso es que cuando encuentro una presentación en Slideshare que me gusta, suelo descargármela y archivarla en mi PC (muy 1.0, ya sé, pero es que se ven muchos sopapos 2.0 y tampoco estamos para perder el tiempo :-D).

Bueno, al tema. Como os digo, todo esto es un poco manual, quizá se pueda automatizar algo más (animaos a hacer sugerencias en los comentarios 😉 ):

  1. Instalamos GreaseMonkey en nuestro Mozilla Firefox.
  2. Instalamos y activamos el script «SlideShare Downloader» de GreaseMonkey.
  3. Instalamos el complemento DownThemAll! de Mozilla Firefox.
  4. Accedemos a una presentación en Slideshare que no permita la descarga (ésta, por ejemplo). Si hemos hecho los pasos anteriores bien, nos aparecerá un enlace «Download» al lado de la presentación (fijaos que es diferente del original «Get File»): Download Slideshare
  5. Pulsamos en el enlace y nos generará tantos enlaces a ficheros flash como transparencias tenga la presentación: Slideshare download all
  6. En esa ventana, botón derecho > DownThemAll! y nos bajamos todos los SWFs: Slideshare downthemall
  7. Pasamos los SWFs a JPG con SWF2JPG (quizá venga bien un bucle tipo: for F in *.swf; do swf2jpg $F $F.jpg; done).
  8. Con todos los JPGs, hacemos un PDF: convert *jpg presentación.pdf
  9. Profit! 😉