#/usr/bin/perl
<<DOC; 
Votre Nom : KUZNIK Ludivine
JANVIER 2008
 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
#-----------------------------------------------------------
##### xml.coverpage.org/xml-ISOents.txt

%rubrique = ( 
"3208" => "Alaune.txt", 
"3210" => "International.txt", 
"3214" => "Europe.txt",
"3224" => "Societe.txt", 
"3232" => "Opinions.txt",
"3234" => "Economie.txt", 
"3236" => "Médias.txt", 
"3238" => "Rendez-vous.txt", 
"3242" => "Sports.txt", 
"3244" => "Sciences.txt", 
"3246" => "Culture.txt", 
"3260" => "Livres.txt", 
"3404" => "Examens2008.txt", 
"3476" => "Cinema.txt", 
"3546" => "Voyages.txt", 
"651865" => "Technologies.txt" );

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="";
#----------------------------------------



#----------------------------------------
&parcoursarborescencefichiers($rep);	#recurse!

$path= "resultats/BaO2TT/";
opendir(DIR, $path) or die "can't open $path: $!\n";
my @newfiles = readdir(DIR);
closedir(DIR);
foreach my $fileresult (@newfiles) 	
	{ 
	if ( $fileresult =~ /\.txt$/ ) 
	  {
	  open (FILE, $fileresult);
	  system (" perl ./programmes/treetagger2xml.pl $path/$fileresult ");
		}
}

#----------------------------------------------

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
			if ( $file =~ /\.xml$/ ) 
			{
				foreach $k (keys(%rubrique)) 
				{ 
					if ( $file =~ /$k/ ) 
					{ 
						$cle=$k;
												
					 open (TEMPO, ">toto.txt");

					 ##################  FILTREUR #########
				    	open (FILEINPUT, $file);
						$compteurdescription=0;
						
						$DUMPFULL1 = "";
						while ($ligne = <FILEINPUT>) 
						{
	
						if ($ligne=~/<description>(.*)<\/description>/)
							{
							my $texte=$1;
							if ($compteurdescription != 0) 
								{
								$texte = &nettoyage ($texte);
								$DUMPFULL1= $DUMPFULL1.$texte."\n";
								}
							$compteurdescription++;	
							}
						
						}
						close (FILEINPUT);
						print $DUMPFULL1;
						print TEMPO $DUMPFULL1; 	
                        close (TEMPO);						
						
						$doss = "resultats/BaO2TT/" ;
						mkdir ($doss);
						$tmp = $doss.$rubrique{$cle};
						
						system ("pwd");
						system (" perl ./programmes/tokenise-fr.pl toto.txt | \"./programmes/bin/tree-tagger.exe\" ./programmes/lib/french.par -lemma -token -sgml -no-unknown >> $tmp ");	
					}
				
				
					
				}
				
								
###################
	    print $i++,"\n";
			}
		}
	}

 }

 
 
sub nettoyage {
my $tmp= shift (@_);
$tmp=~ s/&#38;#39;/'/g;
$tmp=~ s/&#38;#34;/"/g;
$tmp=~ s/&#233;/é/g;
$tmp=~ s/&#234;/ê/g;
$tmp=~ s/&#91;/[/g;
$tmp=~ s/&#93;/]/g;
$tmp=~ s/&#38;/and/g;
$tmp=~ s/Retrouvez l'ensemble des dépêches sur http:\/\/www\.lemonde\.fr//g;
$tmp=~ s/Lisez l'intégralité de l'article pour plus d'information\.//g;
return $tmp;
}
