BAO1
parcourt une
arborescence de fils RSS. Il
génère en sortie un document
structuré
XML et
il filtre le contenu textuel des balises <TITLE>
et
<DESCRIPTION>.
Le programme est
divisé en 3 parties :
- parcours des sous répertoires.
- automatisation du filtrage.
1. Définition des paramètres d'entrées et de sorties:
-parcours des sous répertoires:
- automatisation du filtrage.
Le
programme en entier
DOC
#-----------------------------------------------------------
my $rep="$ARGV[0]";
# on s'assure que le nom du répertoire ne se termine pas par
un "/"
$rep=~ s/[\/]$//;
# %rub_fich tableaudonnantlequivalenceentrelenomdefichieretlarubrique
%rub_fich=(
"3208"=>"ALAUNE.xml",
"3232"=>"OPINIONS.xml",
"3210"=>"INTERNATIONAL.xml",
"829254"=>"LESELECTIONSAMERICAINES.xml",
"3214"=>"EUROPE.xml",
"3224"=>"SOCIETE.xml",
"3234"=>"ECONOMIE.xml",
"3236"=>"MEDIAS.xml",
"3238"=>"RENDEZVOUS.xml",
"3242"=>"SPORTS.xml",
"3244"=>"ENVIRONNEMENTSCIENCES.xml",
"3246"=>"CULTURE.xml",
"651865"=>"TECHNOLOGIE.xml",
"3476"=>"CINEMA.xml",
"3546"=>"VOYAGES.xml",
"3260"=>"LIVRES.xml",
"3404"=>"EXAMENS.xml",
"823353"=>"POLITIQUE.xml",
"987718"=>"MUNICIPALESETCANTONNALES.xml",
"876502"=>"PODCASTTELEZAPPING.xml",
"970371"=>"PODCASTRADIOZAPPING.xml" );
# on intègre le contenu de la variable contenant le filtrage
foreach my $k (keys (%rub_fich)){
&entete_xml($rub_fich{k});
}
#----------------------------------------
&parcoursarborescencefichiers($rep);
#recurse!
#----------------------------------------
foreach my $k (keys (%rub_fich)){
&pied_xml($rub_fich{k});
}
#----------------------------------------
# on formate la sortie : fichier XML avec entete et
exit;
#----------------------------------------------exit;
#----------------------------------------------
sub parcoursarborescencefichiers {
my $path = shift(@_);
opendir(DIR, $path) or die "can't open
$path: $!\n";
my @files = readdir(DIR);
closedir(DIR);
foreach my $file (@files) {
next if
$file =~ /^\.\.?$/;
$file =
$path."/".$file;
if (-d
$file) {
&parcoursarborescencefichiers($file);
#recurse!
}
if (-f
$file) {
# 1)
s'assurer que le fichier se termine par .xml
# 2)
c'est vrai. Repérer la rubrique et le nom de fichier de
sortie
# 3) parcourir le fichier
$file, extraire le texte et écrire dans la bonne sortie
if ($file=~/\.xml$/) {
foreach my $k (keys (%rub_fich)){
if($file=~/$k/){
$cle=$k;
print "cle = $cle\n";
}
}
print "fichier = $rub_fich{$cle}\n";
open(FILEOUT,">>$rub_fich{$cle}");
open(FILEINPUT,$file);
while ($ligne =
<FILEINPUT>){
if
($ligne=~/<description>([^<]*)<\/description>/)
{
$a=$1;
print FILEOUT $a,"\n";
}
}
close(FILEINPUT);
close(FILEOUT);
}
}
}
}
#-------------------------
&entete_xml {
my $output1= shift(@_);
if (!open (FILEOUT,">$output1"))
{ die "Pb a
l'ouverture du fichier $output1"}; print
FILEOUT
"<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
print FILEOUT
"<PARCOURS>\n";
print FILEOUT "<NOM>Votre
nom</NOM>\n";
close(FILEOUT);
}
#-------------------------
&pied_xml {
my $output1= shift(@_);
if (!open
(FILEOUT,">>$output1")) { die "Pb a l'ouverture du
fichier $output1"};
print FILEOUT
"</PARCOURS>\n";
close(FILEOUT);
}