#/usr/bin/perl
#-----------------------------------------------------------
my $rep="$ARGV[0]";
# on s'assure que le nom du répertoire ne se termine pas par un "/" si ça se termine par / on remplace par rien
$rep=~ s/[\/]$//;
# on initialise une variable contenant le flux de sortie
my $DUMPFULL1="";
my %tableaudestextes=(); # pour mémoriser ce qu'on a déjà imprimé, pour éviter les doublons
#----------------------------------------
my $output1="SORTIEtreetagger.xml";
if (!open (FILEOUT,">$output1")) { die "Pb a l'ouverture du fichier $output1"};
#----------------------------------------
&parcoursarborescencefichiers($rep); # on appelle le sous programme
#----------------------------------------
print FILEOUT "\n\n";
print FILEOUT "$DUMPFULL1";
print FILEOUT "";
close(FILEOUT);
exit;
#----------------------------------------------
sub parcoursarborescencefichiers { # on entre dans le sous programme
my $path = shift(@_); # on met dans la variable $path le contenu de la variable mise en argument
opendir(DIR, $path) or die "can't open $path: $!\n"; # opendir : ouvre un rep - si on arrive pas : le pgm s'arrete et on envoie un message d'erreur
my @files = readdir(DIR); # on lit le contenu du répertoire et on renvoie une liste qu'on stocke dans @files
closedir(DIR);
foreach my $file (@files) { # pour chaque ressource dans @files,on crèe $files
next if $file =~ /^\.\.?$/; # on passe au suivant si on trouve . ou .. car on risque une boicle infinie
$file = $path."/".$file; # on réécrit tout le chemin du fichier - le point permet la concaténation
if (-d $file) { # on entre dans cette boucle si il y a dans $file un répertoire (-d vérifie que l'argument est un répertoire)
&parcoursarborescencefichiers($file); #recurse!
}
if (-f $file) { # on entre dans cette boucle si il y a dans $file un fichier (-f vérifie que l'argument est un fichier)
if ($file=~/0,2-3208,1-0,0.xml/){ # parcourt toute l'arborescence pour ne garder que les fichiers .xml
open(FILEIN,$file); # on ouvre le fichier qu'on va lire
$i=1; # compteur
printf "$file\n"; # on voit si ça travaille
while ($ligne = ){ # tant qu'il y a qqch à lire, on rentre dans la boucle
if (($ligne!~/Retrouvez *l.*ensemble *des/) && ($ligne!~/Lisez *l.*int.*gralit.* *de *l.*article *pour *plus *d.*information./) && ($ligne!~/Toute *l.*actualit.* *au *moment *de *la *connexion/)) {
if ($ligne=~/([^<]+)<\/description>/) { # si on trouve ce motif, on entre dans la boucle
my $propre=$1;# on prend le motif et on le met dans $propre
if ($propre=~/^(.+)<img width='1' height='1'.*$/) {$propre=$1}; #permet de supprimer les balises images contenues dans description
$propre=~s/'/\'/g;# nettoie
$propre=~s/"/\"/g;# nettoie
$propre=~s/é/é/g;# nettoie
$propre=~s/ê/ê/g;# nettoie
$propre=~s/é/é/g;# nettoie
$propre=~s/è/è/g;# nettoie
$propre=~s/î/\î/g;# nettoie
$propre=~s/ô/\ô/g;# nettoie
$propre=~s/ç/\ç/g;# nettoie
$propre=~s/à/\à/g;# nettoie
$propre=~s/&/&/g;# nettoie
$propre=~s/</\tmp.txt");#on ouvre un fichier temporaire
print FILE $propre;#on met le contenu de $propre dans tmp.txt
close FILE;# on ferme le fichier temporaire
print "ETIQUETAGE \n"; #on commence l'étiquetage
system ("perl \"./TreeTagger/cmd/tokenise-fr.pl\" tmp.txt > resultat-tokenize.txt");#on lance tokenise
system ("tree-tagger.exe french.par -lemma -token -no-unknown resultat-tokenize.txt > resultat-etiquetage.txt");#on lance treetagger sur le résultat de tokenise
system ("perl \"./TreeTagger/cmd/treetagger2xml.pl\" resultat-etiquetage.txt");# on convertit au format xml ce qui était au format txt
print "FIN ETIQUETAGE \n";# on a fini l'étiquetage
open(FILE, "resultat-etiquetage.txt.xml");# on ouvre le résultat de l'étiquetage qui est au format xml
my $tmp=; #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=) {# on lit toutes les lignes de resultat-etiquetage.txt.xml
$resultat.=$lignetmp;#on concatène chaque ligne dans $resultat
}
close(FILE);#on ferme le fichier
# fichier treetagger2.xml sera ds un fichier -> $resultat a concatener dans DUMPFULL
$DUMPFULL1.=$resultat; # on concatène le contenu de $propre obtenu dans chaque boucle
$i++; # on incrémente le compteur
$tableaudestextes{$propre}++; # on incrémente pour dire qu'on a déjà rencontré ce texte pour qu'après si on le retrouve on ne réimprime pas la même séquence
}
} # fin de if
} # fin de if
} # fin de while
close(FILEIN); # on ferme le fichier en lecture
}
}
}
}
#----------------------------------------------