#!/usr/bin/perl
#--------------------------------------------
# Ce programme s'utilise comme ceci : perl prog_1.pl filrss.xml
# il prend en argument un fichier RSS et il en extrait les contenus des balises titre et
# description pour chaque item.
# il créé en sortie 2 fichiers : 1 txt brut et 1 au format XML
#--------------------------------------------

use utf8;

my $fichier = $ARGV[0];

my $texte = "";

#Crétion des fichiers de sortie pour chaque rubrique
open my $in, "<:encoding(utf-8)", $fichier;
open my $txt, ">:encoding(utf-8)", "sortie.txt";
open my $xml, ">:encoding(utf-8)", "sortie-xml.xml";

while (my $ligne = <$in>)
{
	chomp $ligne; #permet de supprimer les fins de ligne
	#peut-être qu'il faudra supprimer les \r
	$texte = $texte . $ligne . " ";
	#print $texte;
	#my $reponse = <STDIN>;
}

close $in;

print $xml "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
print $xml "<Racine>\n";

my $nb = 1;

#Extraction des données textuels du titre et description
while ($texte =~ /<item>.*?<title>([^<]*)<\/title>.*?<description>([^<]*)<\/description>.*?<\/item>/g)
{
	my $titre = $1;
	my $description = $2;
	my ($titre_clean, $description_clean) = &nettoyage($titre, $description);#& précède le nom d'une fonction qui va être défini après 
	print $txt "$titre_clean\n";									 #my ($titre_clean, $description_clean) est une liste
	print $txt "$description_clean\n\n";
	print $xml "<article numero='$nb'>\n";
	print $xml "<titre>$titre_clean</titre>\n";
	print $xml "<description>$description_clean</description>\n";
	print $xml "</article>\n\n";
	$nb++;
}

print $xml "</Racine>\n";

close $txt;
close $xml;

sub nettoyage{
	my $var = $_[0];#le nom de la liste est underscore (->@_ à la base)
	my $var1 = $_[1];
	
	#autre manière de faire:
	#my $var1=shift(@_);
    #my $var2=shift(@_);
	
	$var = $var . "."; #$var .= ".";\xE9
	$var =~ s/&#38;#39;/'/g;
	$var =~ s/\\xE9/é/g;
	$var1 =~ s/&#38;#39;/'/g;
	$var1 =~ s/\\xE9/é/g;
	$var =~ s/&#38;#34;/"/g;
	$var1 =~ s/&#38;#34;/"/g;
	$var =~ s/\\xE0/à/g;
	$var1 =~ s/\\xE0/à/g;
	$var =~ s/\\xE8/è/g;
	$var1 =~ s/\\xE8/è/g;		
	$var =~ s/\\xEE/î/g;
	$var1 =~ s/\\xEE/î/g;
	

	return $var, $var1;
}