Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

#1 Le 10/07/2012, à 17:00

Snake046

[script/ruby] Script récupérant les vidéos flash

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 smile !

Dernière modification par Snake046 (Le 12/10/2012, à 12:22)


Aucun message n'est caché dans cette signature.

Hors ligne

#2 Le 12/10/2012, à 12:30

Snake046

Re : [script/ruby] Script récupérant les vidéos flash

Updated !

Je l'ai arrangé un peu en utilisant des regexp: il n'est plus obligatoire de spécifier le PID de Flash normalement (auto-détection avec Opera et tout les navigateurs qui lancent le plugin avec une commande contenant "Flash").

Et j'ai remplacé le cut par une autre regexp (le script ne fonctionnait pas dans certains cas, au moins avec ça c'est sur de toujours trouver ce qu'il cherche).


Aucun message n'est caché dans cette signature.

Hors ligne

Haut de page ↑