Salut !
Ça fait un bail que j'ai pas posté, mais là j'ai écrit un script qui pourrait aider certaines personnes.
Il y a longtemps, les vidéos Flash apparaissaient dans le dossier /tmp. Toutefois les dernières versions de Flash ont mit fin a ce comportement et les vidéos sont maintenant innaccessibles.
On peut toujours rester avec les vieilles versions de Flash, mais de plus en plus d'applications coupent la compatibilité, ce qui devient très contraignant.
Bref, je vous fait profiter de ce script (en éspérant aussi que des contributions pourront le rendre meilleur).
C'est du Ruby, ça copiera toutes vos vidéos flash courrament ouvertes vers /tmp, et ça s'utilise simplement:
- Fournissez en option le PID du plugin Flash (option -p ou --pid).
- Option -x: Vous pouvez aussi demander un prefixe pour les fichiers générés (les noms seront prefix#.flv, ou # est un numéro de 0 à n - 1 vidéos). Par défaut le prefixe est "Flash".
- Option -o ou --output: Et vous pouvez aussi spécifier le dossier ou les vidéos tomberont (par défaut /tmp).
#!/usr/bin/ruby
#
# Option Parsing
#
require 'optparse'
options = {}
(OptionParser.new do | option |
option.banner = "Usage: GetFlashVideo.rb [options]"
options[:pid] = 0
options[:output] = "/tmp"
options[:prefix] = "Flash"
option.on("-p", "--pid PID", "Specify the PID of the Flash plugin") do | pid |
options[:pid] = pid
end
option.on("-o", "--output OUTPUT", "Output the generated files in the directory") do | dir |
options[:output] = dir
end
option.on("-x", "--prefix PREFIX", "Prefixes the name of the generated files") do | prefix |
options[:prefix] = prefix
end
end).parse ARGV
flashPid = options[:pid]
if options[:pid] == 0
output = IO.popen 'ps aux | grep -P "(operapluginwrapper|flash)" | grep -P "^[0-9]+\s+[0-9]+" -o | grep -P "[0-9]+$" -o'
stringlist = output.readlines
# There must be 3 processus matching the expression: this script, the grep itself, and the actual Flash plugin.
raise (Exception.new "Unable to deduce the Flash Plugin PID") if stringlist.count < 3
flashPid = stringlist[0].chop
puts "Assuming Flash Plugin PID to be #{flashPid}"
end
#
# Actual Stuff Happening
#
command = "lsof | grep #{flashPid} | grep /tmp/Flash | grep -P \"[0-9]+u\" -o"
puts "Executing command '#{command}'"
output = IO.popen command
stringlist = output.readlines
doneFiles = Array.new
iterator = 0
stringlist.each do | fd |
fdFile = fd[0..-3]
unless doneFiles.include? fdFile
doneFiles << fdFile
puts "Creating file #{options[:output]}/#{options[:prefix]}#{iterator}.flv (from fd #{fdFile})"
system "cat /proc/#{flashPid}/fd/#{fdFile} > #{options[:output]}/#{options[:prefix]}#{iterator}.flv"
iterator += 1
end
end
Voilà, j'espère que des gens en feront usage 🙂 !