
#!/usr/bin/perl
use XML::RSS;
#use Unicode::String qw(utf8);


##################################################
my $file="$ARGV[0]"; #flux d'entree
my $rubrique = "$ARGV[1]";

open (OUT2, ">:encoding(utf-8)", "sortie_xml.xml");
print OUT2 "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
print OUT2 "<FILE>\n";
close (OUT2);
####################################################
$file=~ s/[\/]$//;
&parcoursfichier($file);
print OUT2 "</FILE>\n";
close OUT2;
sub parcoursfichier{
    my $path = shift(@_);#on enleve le premier argument qu'on lit, parce que c'est un dossier mais pas fichier qu'on veut
    opendir(DIR, $path) or die "pb d'ouvrire $path: $!\n";# le message d'erreur va enregistrer automatiquemt dans $!
    my @contenuRep = readdir(DIR); #renvoie la liste du contenu dna sle répertoire
    closedir(DIR);
    foreach my $fichier (@contenuRep) {
        next if $fichier =~ /^\.\.?$/; #on ne traite pas les fichiers commencent par .,..
        $fichier = $path."/".$fichier; # reconstruir le chemin relatif ex. 2016/01 
        #si $file est un dossier, on refaire le souprogramme et va tester le contenu de $file
        if (-d $fichier) {
            #print "<NOUVEAU REPERTOIRE> ==> ",$fichier,"\n";
            &parcoursfichier($fichier);    #recurse!
            #print "<FIN REPERTOIRE> ==> ",$fichier,"\n";
        }
        if (-f $fichier) {
        	if ($fichier=~/$rubrique.*.xml$/){
        	#print $fichier, "\n";
            #open (IN, $fichier);
        	open (OUT1, ">>:encoding(utf-8)", "sortie_txt.txt");
            open (OUT2, ">>:encoding(utf-8)", "sortie_xml.xml");
            print OUT2 "<file>\n";
            print OUT2 "<titre>$fichier</titre>\n";
#-----------------------------------------------------------
            my $ficher="$fichier";
            my $rss=new XML::RSS;
            
#-----------------------------------------------------------
            $rss->parsefile($fichier);
            my $nombredechampdescription=0;
            foreach my $item (@{$rss->{'items'}}) {
                $nombredechampdescription++;
                my $title=$item->{'title'};
                my $description=$item->{'description'};
                $titre=&nettoyage($title);
                $description=&nettoyage($description);
                print OUT1 "Titre : $titre \n";
                print OUT1 "Description : $description \n";
                my ($titretag,$descriptiontag) = &etiquetage($titre,$description);
                print OUT2 "<item><title>$titretag</title><description>$descriptiontag</description></item>\n";
             
            }
        }
            print OUT2 "</file>\n";
            close (OUT1);
            close (OUT2);
            close (IN);
    	}
    }
}
#####################
sub etiquetage {
	#my $t = shift(@_);
	#my $d = shift(@_);
	my ($titre,$description) = @_;
	my $tmptag="texteaetiqueter.txt"; #créer un nouveau fichier
	open (TMP, ">:encoding(utf-8)", $tmptag); #ouvrir le fichier
	print TMP $titre,"\n"; 
	close TMP;
	system ("perl tokenise-utf8.pl $tmptag | ./tree-tagger -token -lemma -no-unknown french-oral-utf-8.par > tree_tag.txt");
	system ("perl treetagger2xml-utf8.pl tree_tag.txt utf-8");#resultat est contenu dans titre_tag.txt.xml
	open (TMP2, "<:encoding(utf-8)", "tree_tag.txt.xml");
	my $titreetiquetage="";
	my $ligne = <TMP2>; # on lit la premiere ligne pourque while ne la traitement pas 
	while (my $ligne=<TMP2>) {
		$titreetiquetage.=$ligne;
	}
	close TMP2;
	open(TMP,">:encoding(utf-8)", "$tmptag");
	print TMP $description, "\n";
	close TMP;
	system("perl tokenise-utf8.pl $tmptag | ./tree-tagger -token -lemma -no-unknown french-oral-utf-8.par > tree_tag.txt");
	system("perl treetagger2xml-utf8.pl tree_tag.txt utf-8");#resultat est contenu dans titre_tag.txt.xml
	open(TMP2, "<:encoding(utf-8)", "tree_tag.txt.xml");
	my $desetiquetage="";
	my $ligne = <TMP2>; # on lit la premiere ligne pourque while ne la traitement pas 
	while (my $ligne=<TMP2>) {
		$desetiquetage.=$ligne;
	}
	close(TMP2);
	unlink $tmptag;
	return($titreetiquetage,$desetiquetage);
	}
#####################################################################################
sub nettoyage {
    my $description=shift;
    $description =~ s/&lt;/</g;
    $description =~ s/&gt;/>/g;
    $description =~ s/<a href[^>]+>//g;
    $description =~ s/<img[^>]+>//g;
    $description =~ s/<\/a>//g;
    $description=~ s/&#38;#39;/'/g;
    $description =~ s/&#38;#34;/"/g;
    $description =~ s/<[^>]+>//g;
    $description =~s/&#39;/\'/g;
    return $description
}