#/usr/bin/perl
<<DOC; 
Votre Nom : 
JANVIER 2005
 usage : perl parcours-arborescence-fichiers repertoire-a-parcourir
 Le programme prend en entrée le nom du répertoire contenant les fichiers
 à traiter
 Le programme construit en sortie un fichier structuré contenant sur chaque
 ligne le nom du fichier et le résultat du filtrage :
<FICHIER><NOM>du fichier</NOM></FICHIER><CONTENU>du filtrage</CONTENU></FICHIER>
DOC
#-----------------------------------------------------------
use XML::RSS;
my $rep="$ARGV[0]";
# on s'assure que le nom du répertoire ne se termine pas par un "/"
$rep=~ s/[\/]$//;
# on initialise une variable contenant le flux de sortie 
my $DUMPFULL1="";
my $DUMPFULL_cordial="";
my %previous_line=();
#----------------------------------------
my $output1="SORTIE.xml";
if (!open (FILEOUT,">$output1")) { die "Pb a l'ouverture du fichier $output1\n"};
#----Fichier pour cordial
my $output2="SORTIE_cordial.txt";
open (FILEOUTCORD,">$output2") or die "Pb a l'ouverture du fichier $output2\n";
#----------------------------------------
&parcoursarborescencefichiers($rep);	#recurse!
#----------------------------------------
print FILEOUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
print FILEOUT "<PARCOURS>\n";
print FILEOUT "<NOM>Poltavchenko et Ostapenko</NOM>\n";
print FILEOUT "<FILTRAGE>".$DUMPFULL1."</FILTRAGE>\n";
print FILEOUT "</PARCOURS>\n";
close(FILEOUT);
print FILEOUTCORD $DUMPFULL_cordial;
exit;
#----------------------------------------------
sub parcoursarborescencefichiers {
my $path = shift(@_);
opendir(DIR, $path) or die "KO 1 : can't open $path: $!\n";
my @files = readdir(DIR);
closedir(DIR);
my $num_article=0;
my $TEXTEDUFIL="";
foreach my $file (@files) {
	next if $file =~ /^\.\.?$/;
	$file = $path."/".$file;
	if (-d $file) {
		&parcoursarborescencefichiers($file);	#recurse!
	}
	if (-f $file) {
		if ($file !~/0,2-3208,1-0,0\.xml/) {next;}
		print "$file\n";
#       TRAITEMENT à réaliser sur chaque fichier
#       Insérer ici votre code (le filtreur)
		my $rss=new XML::RSS;
		$rss->parsefile($file);
		#open (FIC, $file) or die "KO 2 : can't open $file: $!\n";;
#-----------------------------------------------------------
		$TEXTEDUFIL.="<FILE=\"$file\">\n";
#-----------------------------------------------------------
		my $nombredechampdescription=0;
		foreach my $item (@{$rss->{'items'}}) {
			$nombredechampdescription++;
			$TEXTEDUFIL.="<article=\"$nombredechampdescription\">\n";
			my $description=$item->{'description'};
			if ($description =~ /^Retrouvez .+$/) {next;}
			if ($description =~ /^Toute l'actualité au moment de la connexion$/) {next;}
			$description =~s/&#38;#39;/'/g;
			$description =~s/&#39;/\'/g;
			$description =~s/&#34;/\"/g;
			$description =~s/&#38;#34;/\"/g;
			$description =~s/&#233;/é/g;
			$description =~s/&#234;/ê/g;
			$description =~s/&amp;eacute;/é/g;
			$description =~s/&amp;egrave;/è/g;
			$description =~s/&amp;icirc;/\î/g;
			$description =~s/&amp;ocirc;/\ô/g;
			$description =~s/&amp;ccedil;/\ç/g;
			$description =~s/&amp;agrave;/\à/g;
			$description =~s/&#38;/&/g;
			$description =~s/<.*$//g;
			if($previous_line{$description}){next;}
			$previous_line{$description}=1;
			$num_article++;
			print $i++,"\n";
			$TEXTEDUFIL.="§ ".$description."\n";
			$DUMPFULL1 = $DUMPFULL1 . "<article num=\"$num_article\">".$description. "</article>"."\n";
			$DUMPFULL_cordial = $DUMPFULL_cordial . $description."\n";
#----------------------------------------------------------
			print $TEXTEDUFIL;
		}
	}
}
}
#----------------------------------------------
