Sauvegarde des vidéos Flash
Signature : | Mis en ligne le : 14/04/2009
Catégorie(s) :
  • GNU/Linux Magazine
  • | Domaine :
    3 commentaire(s) creative commons
    Sommaire de l'article :

    Retrouvez cet article dans : Linux Magazine 106

    Vous surfez sur un site de vidéos en ligne, et voilà que vous en voyez une tellement bien que vous voulez absolument la conserver. Il existe de nombreux sites qui vous proposent de sauvegarder les vidéos au format FLV, à partir de l’URL originale sur YouTube.

    Mais je suis paresseux, et je n’ai pas envie de me fatiguer à copier/coller des URL juste pour garder une vidéo. Je préfère que ce soit automatique, quitte à faire le tri par la suite.

    La meilleure manière de capturer un flux qu’on reçoit par le web, c’est tout simplement de demander au proxy de le faire. Il se trouve que j’ai justement écrit un proxy web en Perl. :-)

    La technique est simple.

    Pour tout fichier dont le type MIME correspond au format à sauvegarder :

    trouver l’identifiant du fichier (souvent stocké sous la forme id=id dans l’URL de la requête)

    construire un nom de fichier (en incluant le nom du site et la date, pour que tout soit un peu plus simple à retrouver)

    Le résultat est assez court :

    #!/usr/bin/env perl

    use strict;

    use warnings;

    use HTTP::Proxy;

    use HTTP::Proxy::BodyFilter::save;

    use Digest::MD5 qw( md5_hex );

    use POSIX qw( strftime );

    my $proxy = HTTP::Proxy->new(@ARGV);

    # un filtre pour sauver les fichiers FLV

    my $flv_filter = HTTP::Proxy::BodyFilter::save->new(

    filename => sub {

    my ($message) = @_;

    my $uri = $message->request->uri;

    # trouve l’id dans l’URL ou sinon calcule un hash MD5

    my ($id) = $uri->query =~ /id=([^&;]+)/i;

    $id = md5_hex($uri) unless $id;

    # construit le nom de fichier en ajoutant le nom du site

    my ($host) = $uri->host =~ /([^.]+\.[^.]+)$/;

    my $file = strftime "flv/%Y-%m-%d/${host}_$id.flv", localtime;

    # ignore le fichier si on l’a déjà

    return if -e $file && -s $file == $message->content_length;

    # renvoie le nom du fichier à sauver

    return $file;

    }

    );

    # ajoute le filtre sur tous les types MIME qu’on veut sauver

    for my $mime (qw( video/flv video/x-flv )) {

    $proxy->push_filter(

    mime => $mime,

    response => $flv_filter,

    );

    }

    # démarre le proxy

    $proxy->start;

    Attention, lors du développement de ce script, j’ai découvert un certain nombre de bugs dans HTTP::Proxy::BodyFilter::save. Il vous faudra donc au moins la version 0.21, qui devrait être sur CPAN quand vous lirez ces lignes.

    Références

     

    HTTP::Proxy, un module pour prendre le contrôle du web. http://search.cpan.org/dist/HTTP-Proxy/

    Flash Video, quelques explications sur le format. http://en.wikipedia.org/wiki/FLV

    WWW::YouTube::VideoURI, de Gavin Brown. Un module pour trouver l’URI d’une vidéo Flash sur http://www.youtube.com/, et par exemple la télécharger directement. http://search.cpan.org/dist/WWW-YouTube-VideoURI/

    À vous !

    Envoyez vos perles à perles@mongueurs.net. Elles seront peut-être publiées dans un prochain numéro de GNU/Linux Magazine.

    Retrouvez cet article dans : Linux Magazine 106

    Donnez votre avis - 3 commentaire(s)
  • kranius dit :

    cp /tmp/Flash* ~/thename

  • vincentpsp2 dit :

    arf, désolé mauvaise manip de ma par(clavier qui déconne)

    donc je disait: et quand la vidéo est finie d’étre chargé récupéré la vidéo et mettait la sous un dossier autre que le dossier temps(comme dans la dossier vidéo), et paf la vidéo n’est pas effacé

  • vincentpsp2 dit :

    sinon un truc encore plus simple qu’un logiciel, c’est tous simplement quand on chage une vidéo sur youtube ou autre, c’est d’aller voir dans le dossier temps dans la racine de la partition, et quand la

  • Vous souhaitez commenter cet article ?
    Brèves Flux RSS
    Édito : GNU/Linux Magazine 149
    Édito : GNU/Linux Magazine HS N°60
    Édito : Misc 61
    Édito : Linux Pratique 71
    Édito : Linux Essentiel N°25
    Communication RSS Com. RSS Presse
    Lancement de la plateforme de vente en ligne de PDF des Éditions Diamond ! Un...
    Misc N°61 – Communiqué de presse
    GNU/Linux Magazine N°149 – Communiqué de presse
    GNU/Linux Magazine HS N°60 – Communiqué de presse
    Linux Pratique N°71 – Communiqué de presse
    prochainement moteur de recherches des articles
     
    :
    :
    Jours heures minutes secondes
    En kiosque Flux RSS

    Le tout nouveau GNU/Linux Magazine est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Misc est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Linux Pratique est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau GNU/Linux Magazine HS est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Linux Essentiel est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Misc HS est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...