#/usr/bin/perl
<<DOC; 
Votre Nom : 
JANVIER 2005
 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
#-----------------------------------------------------------
use XML::RSS;
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 $DUMPFULL_cordial="";
my $DUMPFULL_treetagger="";
my %previous_line=();
#----------------------------------------
my $output1="SORTIE.xml";
if (!open (FILEOUT,">$output1")) { die "Pb a l'ouverture du fichier $output1\n"};
#----Fichier pour cordial
my $output2="SORTIE_cordial.txt";
open (FILEOUTCORD,">$output2") or die "Pb a l'ouverture du fichier $output2\n";
# my $output3="sortieTREEtagger.xml";
# open (FILEOUTREE,"> $output3") or die "Pb a l'ouverture du fichier $output3\n";
#----------------------------------------
&parcoursarborescencefichiers($rep);	#recurse!
#----------------------------------------
print FILEOUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
print FILEOUT "<PARCOURS>\n";
print FILEOUT "<NOM>Poltavchenko et Ostapenko</NOM>\n";
print FILEOUT "<FILTRAGE>".$DUMPFULL1."</FILTRAGE>\n";
print FILEOUT "</PARCOURS>\n";
close FILEOUT;
print FILEOUTCORD $DUMPFULL_cordial;

close FILEOUTCORD;

#------------------------------------------------------
print "ETIQUETAGE \n"; #on commence l'étiquetage
system ("perl \"./treetagger-win32/cmd/tokenise-fr.pl\" SORTIE_cordial.txt > resultat-tokenize.txt");#on lance tokenise
system ("treetagger-win32\\bin\\tree-tagger.exe treetagger-win32\\langues-treetagger\\french.par -lemma -token -no-unknown resultat-tokenize.txt > resultat-etiquet.txt");#on lance treetagger sur le résultat de tokenise
system ("perl \"./treetagger-win32/cmd/treetagger2xml-modifie.pl\" resultat-etiquet.txt");# on convertit au format xml ce qui était au format txt
print "FIN ETIQUETAGE \n";# on a fini l'étiquetage
# open(FILE, "resultat-etiquet.txt.xml");# on ouvre le résultat de l'étiquetage qui est au format xml
# my $tmp=<FILE>; #on met la première ligne car on ne veut pas avoir plusieurs fois l'en-tête
# my $resultat="";# on initialise la variable résultat
# while(my $lignetmp=<FILE>) {# on lit toutes les lignes de resultat-etiquet.txt.xml
	# $resultat.=$lignetmp;#on concatène chaque ligne dans $resultat
# }
# close FILE;#on ferme le fichier
# fichier resultat-etiquet.txt.xml sera ds un fichier -> $resultat  a concatener dans DUMPFULL_treetagger
# $DUMPFULL_treetagger = $DUMPFULL_treetagger.$resultat."\n";
# print FILEOUTREE $DUMPFULL_treetagger;
# close FILEOUTREE;
exit;
#----------------------------------------------
sub parcoursarborescencefichiers {
my $path = shift(@_);
opendir(DIR, $path) or die "KO 1 : can't open $path: $!\n";
my @files = readdir(DIR);
closedir(DIR);
my $num_article=0;
my $TEXTEDUFIL="";
foreach my $file (@files) {
	next if $file =~ /^\.\.?$/;
	$file = $path."/".$file;
	if (-d $file) {
		&parcoursarborescencefichiers($file);	#recurse!
	}
	if (-f $file) {
		if ($file !~/0,2-3208,1-0,0\.xml/) {next;}
		print "$file\n";
#       TRAITEMENT à réaliser sur chaque fichier
#       Insérer ici votre code (le filtreur)
		my $rss=new XML::RSS;
		$rss->parsefile($file);
		#open (FIC, $file) or die "KO 2 : can't open $file: $!\n";;
#-----------------------------------------------------------
		$TEXTEDUFIL.="<FILE=\"$file\">\n";
#-----------------------------------------------------------
		my $nombredechampdescription=0;
		foreach my $item (@{$rss->{'items'}}) {
			$nombredechampdescription++;
			$TEXTEDUFIL.="<article=\"$nombredechampdescription\">\n";
			my $description=$item->{'description'};
			if ($description =~ /^Retrouvez .+$/) {next;}
			if ($description =~ /^Toute l'actualité au moment de la connexion$/) {next;}
			$description =~s/&#38;#39;/'/g;
			$description =~s/&#39;/\'/g;
			$description =~s/&#34;/\"/g;
			$description =~s/&#38;#34;/\"/g;
			$description =~s/&#233;/é/g;
			$description =~s/&#234;/ê/g;
			$description =~s/&amp;eacute;/é/g;
			$description =~s/&amp;egrave;/è/g;
			$description =~s/&amp;icirc;/\î/g;
			$description =~s/&amp;ocirc;/\ô/g;
			$description =~s/&amp;ccedil;/\ç/g;
			$description =~s/&amp;agrave;/\à/g;
			$description =~s/&#38;/&/g;
			$description =~s/<.*$//g;
			if($previous_line{$description}){next;}
			$previous_line{$description}=1;
			$num_article++;
			#print $i++,"\n";
			$TEXTEDUFIL.="§ ".$description."\n";
			$DUMPFULL1 = $DUMPFULL1 . "<article num=\"$num_article\">".$description. "</article>"."\n";
			$DUMPFULL_cordial = $DUMPFULL_cordial.$description."\n";
#----------------------------------------------------------
			#print $TEXTEDUFIL;
		}
	}
}
}
#----------------------------------------------
