#/usr/bin/perl
<<DOC; 
Nom : VU Tai et Courrier Alain
Année: 2009

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 
my $DUMPFULL1="";
my %tableaupourdoublon=();
#Fichier en sortie
my $output1="SORTIE-bao2_treetagger_societe.xml";
if (!open (FILEOUT,">$output1")) { die "Pb a l'ouverture du fichier $output1"};
#----------------------------------------
&parcoursarborescencefichiers($rep);	#recurse!
#----------------------------------------
print FILEOUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n<PARCOURS>\n<NOM>VU Tai et COURRIER Alain</NOM>\n<ETIQUETAGE>\n$DUMPFULL1";
print FILEOUT "</ETIQUETAGE>\n</PARCOURS>\n";
close(FILEOUT);
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)
	    # il ne faut traiter que les fichiers XML et en plus il ne faut traiter par ex que les fichiers a la une : 0,2-3208,1-0,0.xml
	    if ($file=~/0,2-3224,1-0,0.xml/) {
		open(FILEINPUT, "$file");
		$i=1;
		while ($ligne = <FILEINPUT>) {
		# Traitement des lignes ne contenant pas "Retrouvez l'ensemble..., au moment de la connextion...
		if (($ligne) && ($ligne!~/<description>Retrouvez l'ensemble des d/i) && ($ligne!~/<description>toute l'actualit.*au moment de la connexion/i) && ($ligne!~/<description>Lisez.*de l'article pour plus d'information./i)) {
			
			# Traitement des zones textuelles contenues à l'intérieur des balises description.
			if ($ligne =~/<description>([^<]+)<\/description>/){
			    
				my$recup=$1;
				# Il faut résoudre les problèmes de codages
			    if ($recup=~/^(.*)&lt;img width/) {$recup=$1};
			    $recup=~s/&#38;#39;/'/g;
			    $recup=~s/&#38;#34;/"/g;
			    $recup=~s/&#232;/è/g;
			    $recup=~s/&#233;/é/g;
			    $recup=~s/&#234;/ê/g;
			    $recup=~s/&amp;eacute;/é/g;
			    $recup=~s/&amp;egrave;/è/g;
			    $recup=~s/&amp;ecirc;/ê/g;
			    $recup=~s/&amp;agrave;/à/g;
			    $recup=~s/&amp;acirc;/â/g;
			    $recup=~s/&amp;uuml;/ü/g;
				
				# Il faut résoudre les problèmes de doublons
			    if (exists($tableaupourdoublon{$recup})) { 
				$tableaupourdoublon{$recup}++; 
			    } 
			    else { # on entre dans cette boucle si il n'existe pas encore
				print "file : <$file> etiquetage n°$i\n";
				#Etiquetage
				open (FILE, ">tmpsociete.txt");
				print FILE $recup;
				close (FILE);
				open (name, ">tmpsocietefinal.xml");
				#entête de tmpsocietefinal.xml, le nom de chaque document traité sera ainsi indiqué sur la sortie.
				print name "<document>\n<name>$file</name>\n";
				system ("perl ./treetagger-win32/cmd/tokenise-fr.pl tmpsociete.txt|./treetagger-win32/bin/tree-tagger.exe -token -lemma -no-unknown ./treetagger-win32/lib/french.par > texeetiquete_societe.txt");
				system ("perl ./treetagger-win32/cmd/treetagger2xml.pl texeetiquete_societe.txt");
				system ("cat texeetiquete_societe.txt.xml >> tmpsocietefinal.xml");
				#ouvrir tmpsocietefinal.xml, le lire et concaténer chacun des lignes dans $DUMPFULL1
				open(FILEXML,"tmpsocietefinal.xml");
				while (my $tt=<FILEXML>) {
				    $DUMPFULL1.="$tt"; # on concatène le contenu de chaque ligne du fichier 
				    # temporaire étiqueté obtenu dans chaque boucle
				}
				$i++; # on incrémente le compteur
				$tableaupourdoublon{$recup}++;
			    }
			}
		    }
		}
		
		close (FILEINPUT);
	    }
	}
    }
}
#----------------------------------------------
