#/usr/bin/perl

#arguments : chemin rss vers le répertoire 2021


use utf8;
use strict;



my $chemin_rss = shift @ARGV;



open my $output_txt, ">:encoding(UTF-8)", "output_txt.txt";
open my $output_xml, ">:encoding(UTF-8)", "output_xml.xml";


my $header = "<?xml version =\"1.0\" encoding =\"utf-8\"?>\n<corpus>\n";
print $output_xml $header;

my %liste_titres;

&parcoursarborescencefichiers($chemin_rss);


&etiquetageUP;

&etiquetageTT;



print $output_xml "</corpus>\n";
close $output_txt;
close $output_xml;
exit;



# ------- Fonctions :

sub parcoursarborescencefichiers {
    my $path = shift(@_);
    opendir(DIR, $path);
    my @files = readdir(DIR);
    closedir(DIR);
    foreach my $file (@files) {
		next if $file =~ /^\.\.?$/;
		$file = $path."/".$file;
		if (-d $file) {
			&parcoursarborescencefichiers($file);
		}
		if (-f $file) {
			if ($file =~ /0,2-3244,1-0,0\.xml$/) {
				print "$file\n";
				open my $input, "<:encoding(UTF-8)",$file;
				undef $/;
				my $ligne=<$input> ;
				close($input);
				while ($ligne=~/<item><title>(.+?)<\/title>.+?<description>(.+?)<\/description>/gs) {
					my ($titre, $description) = &nettoyage($1, $2);
					
					if( not exists $liste_titres{$titre} ) {
					   	$liste_titres{$titre} = '';
						print $output_txt "$titre \n";
						print $output_txt "$description \n";
						my ($titreSEG, $descriptionSEG)=&segmentationTD($titre, $description);
						print $output_xml "<item><titre>\n$titreSEG\n</titre><description>\n$descriptionSEG\n</description></item>\n";
					}
					
				}
			}
		}
    }
}


sub nettoyage {
	my $TIT = shift @_;
	my $DES = shift @_;
	$TIT =~ s/<!\[CDATA\[//;
	$TIT =~ s/\]\]>//;
	$DES =~ s/<!\[CDATA\[//;
	$DES =~ s/\]\]>//;
	return ($TIT, $DES);
}



sub etiquetageUP {
	system("../../BAO2/distrib-udpipe-1.2.0-bin/udpipe-1.2.0-bin/bin-win64/udpipe.exe --tokenize --tag --parse --tokenizer=presegmented ../../BAO2/distrib-udpipe-1.2.0-bin/modeles/french-sequoia-ud-2.5-191206.udpipe output_txt.txt > resultats/BAO2_perl.udpipe");
	system("rm output_txt.txt")
}
		

sub etiquetageTT {
	system("../../BAO2/tt/tree-tagger.exe -lemma -token -no-unknown -sgml ../../BAO2/tt/french-utf8.par output_xml.xml> resultats/BAO2_perl ");
	system("perl ../../BAO2/tt/treetagger2xml-utf8.pl resultats/BAO2_perl UTF8");
	system("rm output_xml.xml")
	#system("rm resultats/BAO2_perl")
}






sub segmentationTD {
	my ($arg1,$arg2)=@_;
	# 1. ecriture des données textuelles dans un fichier TOTO
	# 2. puis tokenizer TOTO
	# 3. puis recupérer les données 
	#-----------------------------------------------
	open my $tmp, ">:encoding(UTF-8)","toto.txt";
	print $tmp $arg1;
	close $tmp;
	system("perl ../../BAO2/tt/tokenise-utf8.pl toto.txt > toto2.txt");
	undef $/;
	open my $tmp2, "<:encoding(UTF-8)","toto2.txt";
	my $titresegmente=<$tmp2>;
	close $tmp2;
	#-----------------------------------------------
	open $tmp, ">:encoding(UTF-8)","toto.txt";
	print $tmp $arg2;
	close $tmp;
	system("perl ../../BAO2/tt/tokenise-utf8.pl toto.txt > toto2.txt");
	open  $tmp2, "<:encoding(UTF-8)","toto2.txt";
	my $descriptionsegmente=<$tmp2>;
	close $tmp2;
	$/="\n";
	#-----------------------------------------------
	system("rm toto.txt");
	system("rm toto2.txt");
	return $titresegmente,$descriptionsegmente;
}