#/usr/bin/perl
#-----------------------------------------------------------
use utf8;
use strict;
binmode(STDOUT, ":encoding(UTF-8)");
#-----------------------------------------------------------
# Ce programme s'utilise ainsi :
# perl parcours-arborescence.pl 2021 3208
# Il prend en arguments 2 éléments : (1) le nom de l'arborescence 2021
# contenant les fils RSS de l'année 2021, (2) le nom de la rubrique à traiter
# ici 3208 pour A la une
#-----------------------------------------------------------
if ($#ARGV != 1) {print "Il manque un argument à votre programme....\n";exit;}
my $rep="$ARGV[0]";
my $RUBRIQUE="$ARGV[1]";
# on s'assure que le nom du répertoire ne se termine pas par un "/"
$rep=~ s/[\/]$//;
open my $output, ">:encoding(UTF-8)","pre-corpus-titre-description.txt";
open my $output2, ">:encoding(UTF-8)","pre-corpus-titre-description.xml";
#----------------------------------------
&parcoursarborescencefichiers($rep);	#recurse!
#----------------------------------------
close $output;
close $output2;

#----------------------------------------

#1.Annoter avec udpipe le fichier txt

&etiquettageUP;

#2.Annoter avec TreeTagger le fichier xml

&etiquettageTT;


#----------------------------------------------
exit;
#----------------------------------------------
sub etiquettageUP {

    system("./bazar/udpipe-1.2.0-bin/bin-win64/udpipe.exe --tokenize --tag --parse --tokenizer=presegmented  ./bazar/udpipe-1.2.0-bin/modeles/french-sequoia-ud-2.5-191206.udpipe pre-corpus-titre-description.txt > corpus-titre-description.udpipe")

}


sub etiquettageTT {

  system("./bazar/tree-tagger-linux-3.2.4/bin/tree-tagger -lemma -token -no-unknown -sgml ./bazar/tree-tagger-linux-3.2.4/french-utf8.par pre-corpus-titre-description.xml > corpus-titre-description");
  system("perl ./bazar/tree-tagger-linux-3.2.4/treetagger2xml-utf8.pl corpus-titre-description UTF8")

}



#----------------------------------------------
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) {
			print "On entre dans le REPERTOIRE : $file \n";
			&parcoursarborescencefichiers($file);	#recurse!
			print "On sort du REPERTOIRE :  $file \n";
		}
		if (-f $file) {
			if ($file =~ /$RUBRIQUE.+\.xml$/) {
				print "Traitement du fichier $file \n";
				open my $input, "<:encoding(UTF-8)",$file;
				$/=undef; # par défaut cette variable contient \n
				my $ligne=<$input> ;
				close($input);
				while ($ligne=~/<item><title>(.+?)<\/title>.+?<description>(.+?)<\/description>/gs) {
					my $titre=&nettoyage($1);
					my $description=&nettoyage($2);
					print $output "$titre \n";
					print $output "$description \n";

          #segmentation de titre et description par tokenize de TreeTagger

          my ($titre_tok,$description_tok)=&segmentation($titre,$description);

					print $output2 "$titre_tok\n$description_tok\n";
				}
			}
		}
    }
}
#----------------------------------------------

sub segmentation {
	my @tok = ();
	$/=undef; # par défaut cette variable contient \n
	open my $tmp2,">:encoding(UTF-8)","toto2.txt";
	close $tmp2;
	foreach my $var (@_) {
		#ecriture des données textuelles dans un fichier TOTO
		#Tokeniser TOTO
		#Recuperer TOTO en données textuelles
		open my $tmp,">:encoding(UTF-8)","toto.txt";
			print $tmp "$var";
		close $tmp;
		system("./bazar/tokenise-utf8.pl toto.txt toto2.txt > toto2.txt");
		open my $tmp2,"<:encoding(UTF-8)","toto2.txt";
		my $var_tok=<$tmp2>;
		close $tmp2;
		push @tok, $var_tok;
	}
	return @tok;
}
sub nettoyage {
	my $texte=shift @_;
	$texte=~s/(^<!\[CDATA\[)|(\]\]>$)//g;
	$texte.=".";
	$texte=~s/\.+$/\./;
	return $texte;
}
#----------------------------------------------
