Découverte automatique des fils RSS

| Aucun Commentaire | Aucun Trackback

J'ai été confronté à un problème intéressant ce matin. Le problème était le suivant :

Une liste de sites dont nous souhaitions avoir les fils RSS.

Au niveau des solutions, il n'y avait pas trop de choix possibles :

  1. faire le travail manuellement ;
  2. développer une solution plus automatisée.

Mon cœur penche évidemment pour la solution automatisée. J'avais développé un petit outil permettant de récupérer les fils RSS d'un site. Cet outil était vraiment très simple puisque s'appuyait sur la fonction find_feeds() du module XML::Feed. Voici la version en one-liner :

perl -MXML::Feed -MData::Dump -e 'dd(XML::Feed->find_feeds(shift))' http://lesoir.be

J'ai donc modifié mon script de manière à gérer une liste de liens, et fournir en retour une liste des fils RSS. J'ai également ajouté une petite gestion de statistiques de manière à savoir le nombre de sites traités et quels sont ceux n'offrant pas de fils RSS (ou plus exactement, les sites dont XML::Feed n'a pas pu récupérer les fils RSS). Voici le script final :

#!/usr/bin/env perl

use strict;
use warnings;

use YAML;
use Getopt::Long;
use XML::Feed;

my $config = {};

GetOptions( $config, "input=s", "output=s" );

die _usage() unless _valid($config);

my $sites = YAML::LoadFile( $config->{input} );
my @feeds;
my @with_feeds;
my @no_feeds;

foreach my $site ( @{$sites} ) {
    my @site_feeds = XML::Feed->find_feeds($site);
    if ( scalar(@site_feeds) > 0 ) {
        push @feeds,      @site_feeds;
        push @with_feeds, $site;
    }
    else {
        push @no_feeds, $site;
    }
}

YAML::DumpFile( $config->{output}, \@feeds );
print "# sites avec feeds : ", scalar(@with_feeds), $/;
print "# sites sans feed : ",  scalar(@no_feeds),   $/;
YAML::DumpFile( './sites_without_feed.yml', \@no_feeds );

sub _usage {
    return "Usage: $0 --input file.yml --output file-output.yml\n";
}

sub _valid {
    my $config = shift;

    if ( exists $config->{input} and exists $config->{output} ) {
        return 1;
    }
    else {
        return 0;
    }
}

Aucun Trackback

URL de Trackback : http://blog.bjornoya.be/mt-tb.cgi/30

Laisser un commentaire

À propos de cette note

Cette page contient une unique note de manu publiée le 5 mai 2010 22h27.

Migration de bases de données Winisis - Première étape est la note précédente de ce blog.

Suis-je connecté ou pas ? est la note suivante de ce blog.

Retrouvez le contenu récent sur l'index principal ou allez dans les archives pour retrouver tout le contenu.

Pages

Powered by Movable Type 4.261