#/usr/bin/perl

<<DOC; 
Votre Nom : Ivan Smilauer
AVRIL 2007
 usage : perl filtreRSS.pl repertoire-a-parcourir
DOC


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 qui va contenir le flux de sortie 
my $DUMPFULL=""; #ceci va contenir tout le flux qui sort de la procedure recursive
#----------------------------------------
my $output="SORTIEfiltreRSS.xml";
if (!open (FILEOUT,">$output")) { die "Pb a l'ouverture du fichier $output1"};
#----------------------------------------
&parcoursarborescencefichiers($rep);	#appel du sousprogramme recursif!
#----------------------------------------
print FILEOUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
print FILEOUT "<FILTRAGE>\n".$DUMPFULL."</FILTRAGE>";
close (FILEOUT);


exit;
#----------------------------------------------
sub parcoursarborescencefichiers   #le sous-programme
{
    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;     #le point c'est la concatenation
		
		if (-d $file) 
			{
				&parcoursarborescencefichiers($file);	#recurse! répéter la procédure car c'est un dossier -d
			}
		if (-f $file && $file=~/\.xml$/)    #OK, c'est un file -f et c'est un fichier XML
						#alors ici je mets les traitments sur les fichiers
			{
				open(FILEINPUT,$file);

					while ($ligne =<FILEINPUT>)

						{
						#nettoyer le texte, assure une bonne affichage des caracteres
						$ligne=~s/&#38;#39;/\'/g;
						$ligne=~s/&#38;#34;/\"/g;
						$ligne=~s/&/and/g;    #le & commercial
						$ligne=~s/&#233;/é/g;
						$ligne=~s/&#234;/è/g;
						$ligne=~s/&#234;/ê/g;
						$ligne=~s/&#38;nbsp//g;
						#nettoyer le texte
						
						#insérer uniquement le contenu des balises title et description
						#ajouter des fins de ligne ici garanti l'extraction des éléments
						#dans <item> car celci sont unix, tandis que les autres windows
						if ($ligne=~/<title>([^<]+)<\/title>\n/ || $ligne=~/<description>([^<]+)<\/description>\n/) 

							{
							
								$DUMPFULL.=$ligne;

							}

						}

				close(FILEINPUT);
			}
	}

}
#----------------------------------------------
