Wednesday, May 4, 2011

Obtener los videos Flash manualmente (ya no están en /tmp)



Después de la actualización de Flash Player a la versión 10.2 en Ubuntu 10.10 ya no aparecen los vídeos en /tmp. Los que usábamos el método de descargar los vídeos de Flash, buscándolos en la carpeta /tmp/ y copiándolos en nuestra carpeta personal sin necesidad de ningún programa adicional, nos hemos encontrado con la sorpresa de que ya no se guardan en este directorio.

Aunque podemos encontrarlos en nuestra carpeta personal en el directorio oculto: ".mozilla/firefox/82rr2zck.default/Cache" (82rr2zck puede variar), me gusta saber que está pasando y porqué y me puse a investigar.

Nota: Probado con éxito con Firefox y Chromium en: Ubuntu 10.10 amd64 (64bits) con el flashplugin de 64bits, Ubuntu 10.10 amd64 (64bits) con el flashplugin de 32bits, Ubuntu 10.10 i386 (32bits), Debian Squeeze (stable) y Debian Wheezy (testing).



1. Comencé la reproducción de un vídeo cualquiera de Youtube.

2. Como sabía que los archivos temporales se guardaban con el nombre Flash + un código de números y letras, abrí mi terminal y busqué cualquier archivo Flash con el comando "lsof":

lsof |grep Flash

Y la terminal me respondió (tarda un poco, paciencia):

npviewer. 2235 usuario 11u REG 8,3 6923916 654482 /tmp/FlashXXUt9wzs (deleted)

Por lo que me cercioro de que el archivo está "deleted" incluso antes de su reproducción completa.

3. Vuelvo a ejecutar el comando antes de su reproducción total:

lsof |grep Flash

Y la terminal me devuelve:

npviewer. 2235 usuario 11u REG 8,3 20948620 654482 /tmp/FlashXXUt9wzs (deleted)

Y ratifico que el tamaño de archivo ha aumentado considerablemente (6923916 a 20948620), por lo que el archivo, aunque esté "deleted", está ahí, se modifica y tiene que haber un enlace simbólico que me haga llegar a él.

4. Busco el enlace en el directorio /proc/, ya que es donde se guarda la virtualización de los archivos en Linux, con:

ls -l /proc/2235/fd/11

Donde "2235" es el nº de proceso en la 2ª columna.
Donde "11" es el descriptor del fichero sin la letra que le sigue en la 4ª columna.

Y la terminal me responde:

lrwx------ 1 usuario usuario 64 2011-02-13 18:07 /proc/2235/fd/11 -> /tmp/FlashXXUt9wzs (deleted)

Por lo que existe el enlace al archivo, aunque esté "deleted", por lo que sólo me queda copiarlo.

5. Lo copio a mi carpeta personal con el comando:

cp /proc/2235/fd/11 video.flv

Donde "video.flv" es el nombre que le doy al vídeo.

Abro mi carpeta personal y woalá, allí está el vídeo y lo reproduzco sin problemas.

METODO SIMPLIFICADO

Por supuesto no tenéis que hacer todo lo que yo he hecho y sólo bastaría con:

1º. Comenzar a reproducir el vídeo y antes de que se termine de cargar por completo, buscar el archivo para conocer el nº del proceso y el descriptor, con:

lsof |grep Flash

La terminal nos responderá algo parecido a:

npviewer. 2235 usuario 11u REG 8,3 6923916 654482 /tmp/FlashXXUt9wzs (deleted)

2º. Cuando haya terminado de cargarse por completo y sin cerrar el navegador, copiarlo a nuestra carpeta personal con el comando:

cp /proc/2235/fd/11 video.flv

Donde debemos cambiar el 2235 y el 11 por los obtenidos en el anterior comando.

Y listo ya podemos seguir descargándonos vídeos sin la necesidad de instalar nada.


Fuente

4 comentarios:

Lycus HackerEmo said...

todos esos pasos es muy complicado, debe de haber una carpeta en especial donde se guarden los videos.

y por cierto tambien eso pasa usando Fedora 14 y Opera

Ramphis Che said...

Sii son bien complicados, es mejor instalar youtube-dl y olvidarse de eso...

Pero de todas maneras es bueno conocer que todavia se puede hacer manual :P

Anonymous said...

probar este script

salu2

#! /bin/bash
#--------------------------------------------------------------------
#
# videocache.sh
#
# script que nos permite copiar a la carpeta que
# queramos los videos visualizados desde Youtube, Vimeo, etc ....
#
# version 0.2 - myk_toni 24-11-11
#
#--------------------------------------------------------------------

# definimos colores
#---------------------------
YELLOW="\033[1;33m"
ROJO="\033[0;31m"
CYAN="\033[0;36m"
AZULCLARO="\033[1;34m"
VERDECLARO="\033[1;32m"
ENDCOLOR="\033[0m"
#---------------------------

echo -e $ROJO
echo "Te aconsejo cerrar todas las ṕaginas web abiertas, y solo abrir la que contiene el video que quieres bajar"
echo "Visualiza el video que quieres descargar hasta que veas que se ha cargado todo y no cierres la página"
echo -e $ENDCOLOR
echo ""
echo -e $AZULCLARO
echo "Pulsa ENTER para continuar cuando se haya cargado totalmente el video y espera hasta que el programa te pida un NUMERO"
echo -e $ENDCOLOR
read
#echo -e $VERDECLARO
lsof |grep Flash
#echo -e $ENDCOLOR
echo -e $ROJO
echo "Introduce el primer número que veas a empezando por la izquierda : "
echo -e $ENDCOLOR
read NUMERO1
echo -e $ROJO
echo "Introduce el número que verás después del nombre del usuario : (SOLO EL NÚMERO) "
echo -e $ENDCOLOR
read NUMERO2
echo -e $ROJO
echo "Introduce la carpeta donde quieres copiar el video : "
echo -e $ENDCOLOR
read CARPETA
cp /proc/$NUMERO1/fd/$NUMERO2 $CARPETA/video1.mp4

Fermat said...

hola amigo, acabo de hacer el script, pero la verdad que necesito mas informacion, espero me ayides. gracias.

Post a Comment