#/usr/bin/perl
<<DOC; 
Votre Nom : SHEN , Makouskaya
JANVIER 2008
 usage : perl parcours-arborescence-fichiers 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 contenant le flux de sortie 

# Creation d'un tableau dans lequel on lui associe la Clé à chaque nom du rubrique. 
%equivalencefichierrubrique=("3208"=>"./SORTIE-treetagger/1_A_la_une.xml",
							"3214"=>"./SORTIE-treetagger/2_Europe.xml",
							"3210"=>"./SORTIE-treetagger/3_International.xml",
							"3232"=>"./SORTIE-treetagger/4_Opinions.xml",
							"3238"=>"./SORTIE-treetagger/5_Rendez_vous.xml",
							"3234"=>"./SORTIE-treetagger/6_Economie.xml",
							"3242"=>"./SORTIE-treetagger/7_Sports.xml",
							"3246"=>"./SORTIE-treetagger/8_Culture.xml",
							"3224"=>"./SORTIE-treetagger/12_Societe.xml",
							"3236"=>"./SORTIE-treetagger/13_Medias.xml",
							"3260"=>"./SORTIE-treetagger/14_Livres.xml",
							"3244"=>"./SORTIE-treetagger/15_Environnement_Sciences.xml",
							"3404"=>"./SORTIE-treetagger/9_Examens_2008.xml",
							"3476"=>"./SORTIE-treetagger/10_Cinema.xml",
							"3546"=>"./SORTIE-treetagger/11_Voyages.xml",
							"651865"=>"./SORTIE-treetagger/16_Technologies.xml",
							"823353"=>"./SORTIE-treetagger/17_Politique.xml",
							"987718"=>"./SORTIE-treetagger/18_Municipales_Cantonales.xml",
							"876502"=>"./SORTIE-treetagger/19_Podcast_Telezapping.xml",
							"970371"=>"./SORTIE-treetagger/20_Podcast_Radiozapping.xml");
#-----------------------------------------------------
# une boucle  genere une entete de XML pour chaque fichier de resultat
foreach $cle (keys (%equivalencefichierrubrique)) {
	open(FILEOUTPUT,">$equivalencefichierrubrique{$cle}");
	print FILEOUTPUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
	print FILEOUTPUT "<PARCOURS>\n";
	print FILEOUTPUT "<NOM>SHEN et Makouskaya</NOM>\n";
	close(FILEOUTPUT);
}
#fin de boucle
#----------------------------------------
&parcoursarborescencefichiers($rep);	#procédure_recurse! 
#---------------------------------------
foreach $cle (keys (%equivalencefichierrubrique)) {
	open(FILEOUTPUT,">>$equivalencefichierrubrique{$cle}");
	print FILEOUTPUT "</PARCOURS>\n";
	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, on appelle la  procédure 
        }
	    if (-f $file) 
		{
        #s'assurer que le fichier a une extension ".xml"
	    # si c'est vrai :
			if ($file=~/\.xml$/)
			{
				open(FILE,$file);
				foreach $cle (keys (%equivalencefichierrubrique)) 
				{
					if ($file=~/$cle/) 
					{
					   open(FILEOUTPUT,">>$equivalencefichierrubrique{$cle}");
					}
				}
				print $equivalencefichierrubrique{$cle},"\n";
				print FILEOUTPUT "<FICHIER>\n";
				print FILEOUTPUT "<NOM>$file</NOM>\n";
				print FILEOUTPUT "<CONTENU>\n";
				
				# Etape1 : ouvrir en ecriture un fichier tempo dans lequel on met le texte a etiqueter
				open(TMP,">toto_tree_tagger.txt");
				$chaineaimprimer="";
				while ($ligne = <FILE>) {
					$cpt++; # ou $cpt=$cpt+1;
					if (($ligne=~/<title>(.*)<\/title>/) || ($ligne=~/<description>(.*)<\/description>/)) {	
						$chaineaimprimer=$1;
					
						$chaineaimprimer=~s/&#38;#39;/\'/g;
						$chaineaimprimer=~s/&#38;#34;/\"/g;
						$chaineaimprimer=~s/&#38;/&/g;
						$chaineaimprimer=~s/&#233;/é/g;
						$chaineaimprimer=~s/&#234;/ê/g;
						$chaineaimprimer=~s/&#91;/[/g;
						$chaineaimprimer=~s/&#93;/]/g;
						$chaineaimprimer=~s/Retrouvez l\'ensemble des dépêches sur http:\/\/www\.lemonde\.fr\.?//g;
						print TMP "$chaineaimprimer\n" ;         
					}
				}
				close(TMP);
				# Etape 2 : etiqueter le fichier toto_tree_tagger.txt avec treetagger
				system("perl ./treetagger-win32/cmd/tokenise-fr.pl toto_tree_tagger.txt | ./treetagger-win32/bin/tree-tagger.exe ./treetagger-win32/lib/french.par -lemma -token -sgml > ./SORTIE-treetagger/resultat-etiquetage.txt");
				#etape 3 : normaliser au format xml la sortie de treetagger
				system("perl ./treetagger-win32/cmd/treetagger2xml.pl ./SORTIE-treetagger/resultat-etiquetage.txt");
				# a l'issue de l'étape 3 le resultat est dans un fichier resultat-etiquetage.txt.xml
				#etape 4 : intégrer resultat-etiquetage.txt.xml dans FILEOUTPUT
				open(TTTT,"./SORTIE-treetagger/resultat-etiquetage.txt.xml");
				while  (my $line = <TTTT>) 
				{
					if ($line!~/xml version/) 
					{
						print FILEOUTPUT $line;
					}
				}
				close(TTTT);
				print FILEOUTPUT "</CONTENU>\n";
				print FILEOUTPUT "</FICHIER>\n";
				#Surtout fermer le "file" ici !!!!!!!!!!!!! FILEOUTPUT "</PARCOURS>\n";
				close FILEOUTPUT;
			}
		}
	}
}

