#/usr/bin/perl

#-----------------------------------------------------------
#le nom du repertoire est passé en argument au programme : on le récupère
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 
%tableaudesrubriques=("0,2-3208,1-0,0.xml","ALAUNE.xml","0,2-3232,1-0,0.xml","OPINION.xml","0,2-3210,1-0,0.xml","INTERNATIONAL.xml","0,2-829254,1-0,0.xml","LES ELECTIONS AMERICAINES","0,2-3214,1-0,0.xml","EUROPE.xml","0,2-3224,1-0,0.xml","SOCIETE.xml","0,2-3234,1-0,0.xml","ECONOMIE.xml","0,2-3236,1-0,0.xml","MEDIA.xml","0,2-3238,1-0,0.xml","RENDEZ-VOUS.xml","0,2-3242,1-0,0.xml","SPORT.xml","0,2-3244,1-0,0.xml","ENVIRONEMENT,SCIENCES.xml","0,2-3246,1-0,0.xml","CULTURE.xml","0,2-651865,1-0,0.xml","TECHNOLOGIES.xml","0,2-3476,1-0,0.xml","CINEMA.xml","0,2-3546,1-0,0.xml","VOYAGE.xml","0,2-3260,1-0,0.xml","LIVRES.xml","0,2-3404,1-0,0.xml","EXAMENS.xml","0,57-0,64-823353,0.xml","POLITIQUE.xml","0,57-0,64-987718,0.xml","MUNICIPALES & CANTONALES.xml","0,57-0,64-876502,0.xml","PODCAST TELEZAPPING.xml","0,57-0,64-970371,0.xml","PODCAST RADIOZAPPING.xml");
#----------------------------------------
foreach my $rubrique (keys %tableaudesrubriques) {
    open(FILE,">$tableaudesrubriques{$rubrique}");
    print FILE "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
    print FILE "<PARCOURSETIQUETAGE>\n";
	close(FILE);
}
&parcoursarborescencefichiers($rep);	#recurse!


foreach my $rubrique (keys %tableaudesrubriques) {
    open(FILE,">>$tableaudesrubriques{$rubrique}");
    print FILE "\n</PARCOURSETIQUETAGE>\n";
	close(FILE);
}


#----------------------------------------
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!
		}
	#ouverture des fichiers pour etiquetage
		if (-f $file) {
		 if ($file=~/\.xml$/) {
		# nettoyage ne traiter que les fichiers .xml
				$file=~/([^\/]+.xml)$/;
				my $cle=$1;
				$fileout=$tableaudesrubriques{$cle};
				print $fileout,"\n";
				open(OUTPUT,">>$fileout");
				open(FILEINPUT,"$file");
				print OUTPUT "<fichier>\n";
				print OUTPUT "<nom>$file</nom>\n";	
				#extraction des contenues des balises titre et description et ecriture dans 1 fichier temporaire
				open(TMP, ">etiquetage.txt");
				while ($ligne =<FILEINPUT>){
					if ($ligne=~/<titre>([^>]+)<\/titre>/) {
					   my$text2tag=$1;
					    $text2tag=~s/&#38;#34;/\"/g;
					    $text2tag=~s/&#234;/ê/g;
					    $text2tag=~s/$#232/è/g;
					    $text2tag=~s/&#233;/é/g;
					    $text2tag=~s/&#38;#39;/\'/g;
						$text2tag=~s/&#38/\'/g;
						$text2tag=~s/&#34;/\'/g;
					    $text2tag=~s/&/et/g;
					    $text2tag=~s/Retrouver l\'ensemble des d&233;p&234;ches sur http:\/\/www.lemonde.fr//g;
					    print TMP "$text2tag\n";
					}
					if ($ligne=~/<description>([^>]+)<\/description>/) {
					    my $text2tag=$1;
					    $text2tag=~s/&#38;#34;/\"/g;
					    $text2tag=~s/&#234;/ê/g;
					    $text2tag=~s/$#232/è/g;
					    $text2tag=~s/&#233;/é/g;
					    $text2tag=~s/&#38;#39;/\'/g;
						$text2tag=~s/&#34;/\'/g;
					    $text2tag=~s/&/et/g;
					    $text2tag=~s/&/et/g;
					    $text2tag=~s/Retrouver l\'ensemble des d&233;p&234;ches sur http:\/\/www.lemonde.fr//g;
					    print TMP "$text2tag\n";
					}
					
					
				}
				close(TMP);
				# etiquetage d' etiquetage.txt et produire en sortie une version XML de l'étiquetage
				system("perl ./treetagger-win32/cmd/tokenise-fr.pl etiquetage.txt | ./treetagger-win32/bin/tree-tagger.exe ./treetagger-win32/lib/french.par -lemma -token -no-unknown  > tagged.txt");
		
				# ecriture en sortie : relire la version XML de l'étiquetage et la mettre dans la sortie globale OUTPUT
				system("perl ./treetagger-win32/cmd/treetagger2xml.pl tagged.txt");
				# le resultat est dans tagged.txt.xml
				# open de tagged.txt.xml et on le lit et on ecrit dans la sortie generale
				open(FILEETIQ,"tagged.txt.xml");
				while ($line=<FILEETIQ>){
				    if ($line!~/xml version/) {
					        print OUTPUT $line;
					}
				}
				close(FILEETIQ);
		        print OUTPUT "</fichier>\n";
				# on ferme tout
				close(FILEINPUT);
				close(OUTPUT);
			
			}
		}
    
	}
}

	
#----------------------------------------------
