#/usr/bin/perl
<<DOC; 
Votre Nom : FOUTOUN CHAAR
JANVIER 2009
 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
#-----------------------------------------------------------
# la création de tableau
# un groupe de valeur indéxe par des chaînes de caractères
%rubrique = ( 
"3208" => "A la une.xml",
"3236" => "Médias.xml",
"3242" => "Sports.xml", 
"651865" => "Technologies.xml", 
"3260" => "Livres.xml",
"3244" => "Sciences.xml",
"3546" => "Voyages.xml", 
"3476" => "Cinéma.xml",  
"3210" => "International.xml", 
"3214" => "Europe.xml",
"3224" => "Société.xml", 
"3232" => "Opinions.xml",
"3246" => "Culture.xml" ) ;

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 $output1="SORTIE.txt";
open (FILEOUTPUT);
if (open (FILEOUTPUT,">$output1")) {
#----------------------------------------
# on lance le parcours d'arborescence.
my $i=1;
&parcoursarborescencefichiers($rep);	#recurse!
#----------------------------------------
print FILEOUTPUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
print FILEOUTPUT "<PARCOURS>\n";
print FILEOUTPUT "<NOM>CHAAR FOUTOUN</NOM>\n";
print FILEOUTPUT "<FILTRAGE>".$DUMPFULL1."</FILTRAGE>\n";
print FILEOUTPUT "</PARCOURS>\n";
}
else { die "Pb a l'ouverture du fichier $output1"};
close(FILEOUTPUT);
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) 
	{
#    TRAITEMENT à réaliser sur chaque fichier
#   Insérer ici votre code (le filtreur)
    open(FILEINPUT,"$ARGV[0]");
	
    if (($file=~/0,2-3208,1-0,0\.xml/) || ($file=~/0,2-3236,1-0,0\.xml/) || ($file=~/0,2-3242,1-0,0\.xml/) || ($file=~/0,2-65185,1-0,0\.xml/) || ($file=~/0,2-3260,1-0,0\.xml/) || ($file=~/0,2-3244,1-0,0\.xml/) || ($file=~/0,2-3546,1-0,0\.xml/) || ($file=~/0,2-3476,1-0,0\.xml/) || ($file=~/0,2-3210,1-0,0\.xml/) || ($file=~/0,2-3214,1-0,0\.xml/) || ($file=~/0,2-3224,1-0,0\.xml/) || ($file=~/0,2-3232,1-0,0\.xml/) || ($file=~/0,2-3246,1-0,0\.xml/))
        {
        open(FILEINPUT, "$file");
        
        $i=1;
        print $file, "\n";
        while ($ligne = <FILEINPUT>)
            {
	        if ($ligne=~/<description>([^<]+)<\/description>/) 
	            {
		            my $recup=$1; #la variable $1 est remplacée par recup
                 	$recup=~s/&#38;#39;/\'/g;
	                $recup=~s/&#38;#34;/\"/g;
                    $recup=~s/&#233;/é/g;
	                $recup=~s/Ã©/é/g;
					$recup=~s/&#234;/ê/g;
					$recup=~s/&amp;eacute;/é/g;
					$recup=~s/&amp;egrave;/è/g;
					$recup=~s/&amp;euml;/ë/g;
					$recup=~s/&amp;ecirc;/ê/g;
					$recup=~s/&amp;agrave;/à/g;
					$recup=~s/&amp;acirc;/â/g;
					$recup=~s/&amp;ocirc;/ô/g;
					$recup=~s/&amp;ccedil;/ç/g;
					$recup=~s/&amp;iuml;/ï/g;
					$recup=~s/&amp;icirc;/î/g;
					$recup=~s/&amp;ugrave;/ù/g;
					$recup=~s/&amp;uuml;/ü/g;
					$recup=~s/Retrouvez l'ensemble des dépêches sur http:\/\/www\.lemonde\.fr/ /g;
					$recup=~s/Toute l'actualité au moment de la connexion/ /g;
					$recup=~s/Toute l'actualitÃ© au moment de la connexion/ /g;
					$recup=~s/Lisez l'intégralité de l'article pour plus d'information./ /g;
					$recup=~s/Lisez l'intégralité de l'article pour plus d'information. / /g;
					$recup=~s/&lt;((\w)*(\W*))*&gt;/ /g;  # enlève toutes les balises
					if (exists($tableaudestextes{$recup})) { 
				     $tableaudestextes{$recup}++;
					 } 
				else { 
				open (FILE, ">rubriques.txt");
				print FILE $recup;
				close FILE;
                 #
				open(FILE, "SORTIE-rubriques.xml");
				my $rubriques=<FILE>;
				my $resultat="";
				while(my $lignetmp=<FILE>) {
				  $resultat.=$lignetmp;
				}
				close(FILE);
				
				$DUMPFULL1.="$resultat\n"; 
				$i++; # on incrémente le compteur
				$tableaudestextes{$recup}++; 
				}
	} 
	} 
	} 
	close(FILEIN); 
	} 
	}
    }
				system ("perl ./cmd/tokenise-fr.pl rubriques.txt  > resultat-etiquetage-rubriques-foutoun-tokenize.txt");
				system ("perl treetagger2xml.pl resultat-etiquetage-rubriques-foutoun.txt > resultat-etiquetage-rubriques-foutoun.txt.xml");
				system ("perl ./cmd/tokenise-fr.pl rubriques.txt | ./bin/tree-tagger.exe ./lib/french.par -lemma -token -sgml > resultat-etiquetage-rubriques-foutoun.txt");
#}
					#$DUMPFULLtxt1.="$recup \n"; # insère un saut de ligne sur le fichier texte
					#$DUMPFULLtxt1=~s/  ( )?\n  ( )?\n//g; # supprime les sauts de ligne répétés
					#$DUMPFULL1.="<extract num=\"$i\">$recup</extract> \n"; #met le résultat entre des balises extract
					#$DUMPFULL1=~s/ \n \n//g; # supprime les sauts de ligne répétés
					#$DUMPFULL1=~s/<extract num=\"$i\"> ( )?<\/extract>//g;
					#$DUMPFULL1=~s/extract><extract/extract>\n<extract/g;
					#$i++;
               # }
            #}
		#print FILEOUT $DUMPFULLtxt1;
        #close(FILEINPUT);
        #close(FILEOUT);
        #print $i++,"\n";
	   # }
   # }
#}
#}
#----------------------------------------------
