Since Firefox 4 i thought for a moment that everything changed and my happy days were over but i was wrong, i remembered that with Linux there are no sad days.
How to obtain the flash videos with Firefox 4:
When the video already finished loading in the browser (being Youtube or any other), do this:
ps -ef | grep libflashplayer.so | grep -v grep
walter 20040 19812 9 11:52 ? 00:53:34 /usr/lib/firefox-3.6.17/plugin-container /home/walter/.mozilla/plugins/libflashplayer.so 19812 plugin true
Now, with the PID, inspect what it is opening:
root@talento:~# lsof -p 20040 | grep Flash
lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/walter/.gvfs
Output information may be incomplete.
plugin-co 20040 walter 16u REG 8,2 1249930 21708868 /tmp/FlashXXQANNm2 (deleted)
root@talento:~#
You are interested in the file descriptor id, these are the file descriptors from that process:
root@talento:~# ls -la /proc/20040/fd/
total 0
dr-x------ 2 walter walter 0 2011-04-30 21:12 .
dr-xr-xr-x 7 walter walter 0 2011-04-30 21:06 ..
lr-x------ 1 walter walter 64 2011-04-30 21:12 0 -> /dev/null
lrwx------ 1 walter walter 64 2011-04-30 21:12 1 -> /home/walter/.xsession-errors
l-wx------ 1 walter walter 64 2011-04-30 21:12 10 -> pipe:[18679239]
lr-x------ 1 walter walter 64 2011-04-30 21:12 11 -> pipe:[18679240]
l-wx------ 1 walter walter 64 2011-04-30 21:12 12 -> pipe:[18679240]
lrwx------ 1 walter walter 64 2011-04-30 21:12 13 -> socket:[18679243]
lr-x------ 1 walter walter 64 2011-04-30 21:12 14 -> /home/walter/.mozilla/firefox/2te1hj2x.default/cert8.db
lr-x------ 1 walter walter 64 2011-04-30 21:12 15 -> /home/walter/.mozilla/firefox/2te1hj2x.default/key3.db
lrwx------ 1 walter walter 64 2011-04-30 21:15 16 -> /tmp/FlashXXQANNm2 (deleted)
lr-x------ 1 walter walter 64 2011-04-30 21:16 17 -> pipe:[19890054]
l-wx------ 1 walter walter 64 2011-04-30 21:16 18 -> pipe:[19890054]
lr-x------ 1 walter walter 64 2011-04-30 21:16 19 -> pipe:[19890055]
lrwx------ 1 walter walter 64 2011-04-30 21:12 2 -> /home/walter/.xsession-errors
l-wx------ 1 walter walter 64 2011-04-30 21:16 20 -> pipe:[19890055]
lrwx------ 1 walter walter 64 2011-04-30 21:16 21 -> socket:[19890059]
lrwx------ 1 walter walter 64 2011-04-30 21:12 22 -> socket:[19338003]
lr-x------ 1 walter walter 64 2011-04-30 21:12 23 -> anon_inode:inotify
lrwx------ 1 walter walter 64 2011-04-30 21:12 3 -> socket:[18679123]
lrwx------ 1 walter walter 64 2011-04-30 21:12 4 -> anon_inode:[eventpoll]
lrwx------ 1 walter walter 64 2011-04-30 21:12 42 -> socket:[18679124]
lrwx------ 1 walter walter 64 2011-04-30 21:12 5 -> socket:[18679236]
lrwx------ 1 walter walter 64 2011-04-30 21:12 6 -> socket:[18679237]
lr-x------ 1 walter walter 64 2011-04-30 21:12 7 -> pipe:[18679238]
l-wx------ 1 walter walter 64 2011-04-30 21:12 8 -> pipe:[18679238]
lr-x------ 1 walter walter 64 2011-04-30 21:12 9 -> pipe:[18679239]
What is of our interest if the Flash process, displayed in the previous lines.
Now, you can copy the file to a safe place, because, if you close Firefox, those files are released and lost.
cp /proc/20040/fd/16 ~/Desktop/A.Movie.mpeg
Now if you want to put everything in a script:
root@talento:~# cat saveflash.sh
#!/bin/bash
PID=`ps -ef | grep libflashplayer.so | grep -v grep | awk '{print $2}'`
FD=`lsof -p $PID | grep Flash | awk '{print $4}' | sed 's/u$//'`
cp /proc/$PID/fd/$FD "$1"
And remember, you can "invite me a coffee" :)
13 comments:
Or you can simply use an extension like DownloadHelper where you just click and the video is saved.
Or you can use an Add-On like "Download Helper" which works fine in FF4.
Thanks for sharing that option.
That works. Thanks for your contribution. It is by people like you why people like me can still be free to use the better software.
Good Blog :)
Thanks :)
Thank's It Work's.
Thanks for the blog. I've been wondering how to do this. I think the change in FireFox came about with 3's switch to SQLlite.
I really like what you are saying, and am glad I found your website. Please keep it up.
You can read to about linux secrets in my blog
if you don't have "lsof" installed (or you want to avoid some warnings from the lsof running as non root user), you can also make something like
for i in /proc/$PID/fd/*; do
file $i|grep /tmp/Flash
if [ "$?" == "1" ]; then
# copy the file
fi
done
Thanks Matias!!!
nice blog of linux sir.
i am inviting u for visiting my blog
about linux system administration.
thank u..
thanks 4 sharing.
Post a Comment