#/usr/bin/perl
#<<DOC; 
#Votre Nom : Laetitia&Juliette
#AVRIL 2016
# usage : perl parcours-extraction-etiquetage_profondeur.pl repertoire-a-parcourir rubrique
# Le programme prend en entrée le nom du répertoire contenant les fichiers
# à traiter
 
#---------------------VARIABLES COMMUNES-----------------------------
my %dico; 
my $rep="$ARGV[0]";
my $rubrique ="$ARGV[1]";
$rep=~s/[\/]$//; #l'arborescence sans /
#my $output1="rss_$rubrique.xml";
my $output2="profondeur_$rubrique.txt";
#my $output3="profondeur_tag_$rubrique.txt";
#-------- CREATION DU SECOND FICHIER SORTIE  DEUX (2) -------------------------
if (!open (FILEOUT2, ">:encoding(utf-8)", $output2)) { die "PB à l'ouverture du fichier $output2"};#création et début d'écriture dans le fichier rubrique.txt
close (FILEOUT2);
##### AJOUT SF
#if (!open (FILEOUT3, ">:encoding(utf-8)", $output3)) { die "PB à l'ouverture du fichier $output2"};#création et début d'écriture dans le fichier rubrique.txt
#close (FILEOUT3);

#--------- TRAITEMENT DES FICHIERS TXT AVEC LA DEUXIÈME FONCTION DE PARCOURS ET D'ÉTIQUETAGE ------------------------
&parcoursarborescencefichiers2($rep); # écriture dans profondeur_$rubrique.txt

#------------ SORTIE DU SCRIPT --------------------------------------

exit; #sortie du script

#------------------------DECLARATION DES FONCTIONS -----------------------------------------

#------------------- DECLARATION DE LA DEUXIEME FONCTION -------------------------------------------------

sub parcoursarborescencefichiers2 {
    #print @_; 
    my $path = shift(@_);
    opendir(DIR, $path) or die "L'ouverture de $path: $! a échoué \n";
    my @files = readdir(DIR);
    closedir(DIR);
    foreach my $file (@files) {
	next if $file =~ /^\.\.?$/;
	$file = $path."/".$file;
	#si la variable $file correspond à un repertoire
	if (-d $file) {
	    print "<NOUVEAU REPERTOIRE> ==> ",$file,"\n";#indiquer que l'on passe à l'analyse d'un nouveau répertoire
	    &parcoursarborescencefichiers2($file); #réeffectuer le parcours de l'arborescence à partir de la variable $file
	    print "<FIN REPERTOIRE> ==> ",$file,"\n"; #indiquer que l'on a finit avec le repertoire
	}
	#si la variable $file, si le chemin, correspond à un fichier
	if (-f $file) {
	    if ($file=~/$rubrique.+\.txt$/){
		print "<NOUVEAU FICHIER PROFOND> ==> ",$file,"\n";
		$codage = "utf-8";
		open (FIC, "<:encoding($codage)", $file);
		##### open (OUT, ">>:encoding($codage)","profondeur2_$rubrique.txt"); #ouverture et écriture dans profondeur2_$rubrique.txt
		open (OUT, ">>:encoding($codage)","profondeur_$rubrique.txt");
		##### AJOUT SF
		#open (OUT2, ">>:encoding($codage)","profondeur_tag_$rubrique.txt");
		#####----
		my $texte=""; #création d'un scalaire vide
		while (my $ligne = <FIC>){
		    ##### if ($ligne=~m/<filename="PROF"/g){
		    if ($ligne=~m/<filname="PROF/g){
			$ligne=<FIC>;
			until(($ligne=~/<article-nb=/) or (eof(FIC))){
			    if ($ligne!~/^ *$/){
				##### print FILEOUT $ligne;
					if ($ligne!~/\||\[|\]|position:relative|allow|height:|overflow:|white-space|text-align|vertical-align|width|px|#|null|"",|""|x:|y:|\=|\/|\{|\}|\+|Classer|Email|\'|\\|Le Monde|[0-9][0-9][0-9][0-9][0-9]|\n\n|\t\t|\r\n|Journaliste|Lire le diaporama|Lire aussi|Image|Accédez|Mettre en pause|Rejouer|Suivre|\-\-\>|Compte rendu|AFP|Aller sur la page de ce journaliste|Photo|[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9][0-9][0-9]|k\n|parentNode|waypoint|\);|startAngle|endAngle|Tick|"name":|[0-9]\n|,\n|;\n| le\n|Précedent|Suivant|>|<|›|portfolio|Source :|Partager|Lire|Retrouvez|Reportage\n|[A-Z][A-Z]|\)\n|: ?|Analyse|Par|Propos|Entretien/){
				#penser à retirer le • Mis à jour le manuellement
				$texte.=$ligne;
				}
			    }
			    $ligne=<FIC>;
			}		
		    }
		}
		close FIC; #fermeture du fichier
		#####my $article = $1;
		my $article=$texte;
		#s'il n'existe pas de clé titre dans le dico
		if (!(exists $dico{$article})) {
		    $dico{$article} = 1; #instancier la valeur de titre à 1
		    print OUT "$article\n";
#		    my $articletag= &etiquetage2($article);
		    #print OUT2 "<item>\n$articletag\n</item>\n";
		}
		close OUT;
		#close OUT2;
		
		print "<",$i++,"> ==> ", $file,"\n";
	    }
	}
    }
}
#---------------------------------------------------------------------
sub etiquetage2 {
    ##### my $a= @_;
    my $a = shift @_;
    open(TMP,">:encoding(utf-8)","article.txt");
    print TMP "$a\n\n"; 
    close TMP;
    print "Etiquetage...\n";
    ##### system("perl tokenise-utf8.pl article.txt | ./treetagger -token -lemma -no-unknown french-utf8.par >> article_tag.txt");
    system("perl tokenise-utf8.pl article.txt | ./tree-tagger -token -lemma -no-unknown french.par > article_tag.txt");
    system("perl treetagger2xml-utf8.pl article_tag.txt utf8");
    open(TMP2, "<:encoding(utf-8)","article_tag.txt.xml");
    my $a_tag="";
    my $ligne = <TMP2>;
    while (my $ligne = <TMP2>){
	#####chomp $ligne;
	$a_tag .= $ligne;	
    
    close TMP2;
    return $a_tag;
}
}
