четверг, 10 ноября 2011 г.

Как сохранить видео с Youtube, Vimeo и любого Flash проигрователя

Если вкратце:

for pid in `ps aux | grep flashplugin | grep -v grep | awk '{print $2}'`;
do
FD_DIR=/proc/$pid/fd
for fd in `ls -l $FD_DIR | grep '/tmp/Flash' | grep -o '[0-9]* ->' | grep -o '[0-9]*'`;
do
FD=$FD_DIR/$fd
cp $FD `ls -l $FD | grep -o 'Flash[^ ]*'`.flv;
done;
done

Копируете строки приведенные выше в консоль и нажимаете Enter. Всё видео проигрываемое во Flash плеере в момент исполнения команды будет скопировано в текущий каталог с именами вида: Flash(что-то).flv

Раньше все видео проигрываемые Flash плеером хранились в /tmp и его можно было просто скопировать. Но с некоторых пор плеер удаляет файлы с видео из /tmp сразу после создания. В Linux данные файлов по настоящему не удаляются пока их не прекратят использовать все программы, но по оригинальному имени к файлу обратится уже нельзя. Через директорию /proc можно получать информацию о процессах, в частности, получить доступ ко всем файлам открытым программой, даже удаленным.

Адрес файла будет таким:
/proc/{PID процесса}/fd/{Дескриптор файла}

PID процесса можно узнать с помощью команды ps или любого менеджера процессов.

Нужный дескриптор файла можно определить выполнив:
ls -l /proc/{PID процесса}/fd

В выводе этой команды будут оригинальные имена файлов включая удаленные.

2 комментария:

  1. Если вкратце!! xD ахаха!
    Жесточайше! Дима спасибо - тема как раз крайне актуальна была )

    ОтветитьУдалить