#!/usr/bin/perl

<<DOC; 
Votre Nom : Condori, Jackeline
AVRIL 2014
 usage : BAO1_ xmlrss.pl repertoire-a-parcourir
 Le programme prend en entrée le nom du répertoire contenant les fichiers à traiter
 Le programme construit en sortie deux fichiers structurés par rubrique : le premier un fichier TXT contenant le contenu textuel 
 (titre et description) de chaque item, le deuxième un fichier XML contenant (parmi d'autres informations) sur chaque ligne le nom du 
 fichier et le résultat du filtrage.
Le programme produit aussi une sortie globale, avec des items groupés par rubrique
DOC

die "Usage: $0 DossierEnEntree\n
Le programme prend en argument un dossier en entrée .\n\n" if (@ARGV < 1) || (! -e $ARGV[0]);

use XML::RSS;
use Unicode::String qw(utf8);
use utf8;

#--------REPERTOIRE EN ENTREE------------>
# le nom du répertoire est passé en argument au programme : on le récupère
my $rep="$ARGV[0]";
# on s'assure que le nom du répertoire ne se termine pas par un "/"
$rep=~ s/[\/]$//;

#---------------COMPTEURS--------------->
my $nbrfilesIN=0;
my $nbritemsIN=0;
my $nbritemsOUT=0;

#-------TABLES ASSOCIATIFS-------------->
# pour vérifier la non-duplication des informations
my %dicoTitre=();
my %dicoDescription=();

#-----------CREATION DES DOSSIERS DE SORTIE---------->

#DOSSIER GLOBAL
$res="../BAO1/";
if (! -e $res)
	{
		mkdir($res) or die ("Problème avec la création du répertoire de $rep");
	}

#DOSSIER XML_RSS
$res="../BAO1/1_Sorties_XML_RSS/";
if (! -e $res)
	{
		mkdir($res) or die ("Problème avec la création du répertoire de $rep");
	}
					
else # si le dossier existe déjà -> vider le contenu
{
	#CONFIRMATION EXECUTION
	print "Are you sure you want to execute this programme ? It will delete all files in $res ! Tapez y ou n : ";
	my $answer=<STDIN>;

	if ($answer=~/n/)
	{
		exit;
	}
	#SUPPRESSION 
	print ("Supprimer les fichiers existants >>");
	opendir(DIR, $res) or die "Erreur d'ouverture de repertoire: $!\n";
	my @tobedeleted = readdir(DIR);
	foreach my $scrubbed (@tobedeleted) # pour chaque fichier dans le dossier
	{
		unlink $res.$scrubbed; # supprimer
	}
		closedir(DIR);
		print ("Done\n");	
}

#-----------SORTIE GLOBALE TXT-------------> 
#On concatène au fur et à  mesure les sorties TXT
open(FILEglobTXT,">:encoding(UTF-8)", $res."1_SortieGlobale.txt");

#-----------PARCOURS RECURSIF-------------->
#On lance le percours récursif de l'arbre des fils
&parcoursarborescencefichiers($rep);	#recurse!

#FERMETURE DE LA SORTIE GLOBALE TXT 
close FILEglobTXT;

#-----------CREATION DE LA SORTIE GLOBALE XML------->
open(FILEglobXML, ">:encoding(UTF-8)", $res."1_SortieGlobale.xml");
print FILEglobXML "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
print FILEglobXML "<PARCOURS>\n";
print FILEglobXML "<NOM>CONDORI</NOM>\n";
print FILEglobXML "<FILTRAGE>";

#---FERMETURE DES SORTIES XML PAR RUBRIQUES-------------------->
#---ECRITURE DU CONTENU DE LA SORTIE GLOBALE XML--------------->
opendir(DIR, $res) or die "Erreur d'ouverture de repertoire: $!\n";
my @sorties = readdir(DIR);
closedir(DIR);

foreach my $sortie (@sorties)
{
	if ($sortie=~/(.+?)\.xml$/ && $1 != "1_SortieGlobale")
	{
		my $rub=$1;
		open(FILE,">>:encoding(UTF-8)", $res.$sortie);
		print FILE "</".$rub.">\n";;
		print FILE "</PARCOURS>\n";
		close FILE;
		
		#SORTIE GLOBALE ECRITURE DE CONTENU
		print FILEglobXML "<$rub>\n";
		print FILEOUT "<items>";
		print FILEglobXML ${"DumpXML".$rub}; #écrire le dumpglobal de chaque rubrique
		print FILEOUT "</items>";
		print FILEglobXML "</$rub>";
	}
} 

#-------------- SORTIE GLOBALE FERMETURE------------>
print FILEglobXML "</FILTRAGE>\n";
print FILEglobXML "</PARCOURS>\n";
close(FILEglobXML);

#--------------COMPTEURS---------------------------->
print "nbr files IN = $nbrfilesIN\n";
print "nbr items IN = $nbritemsIN\n";
print "nbr items OUT = $nbritemsOUT\n";

exit;

#---------------PARCOURS DE L'ARBORESCENCE----------->
sub parcoursarborescencefichiers 
{
    my $path = shift(@_); # chemin vers le dossier en entrée
    opendir(DIR, $path) or die "Probleme d'ouverture du dossier : $!\n";
	my @files = readdir(DIR);
    closedir(DIR);
	
	#TRAITEMENT DES FICHIERS UN PAR UN 
    foreach my $file (@files) 
	{
		next if $file =~ /^\.\.?$/; #si . ou ..
		$file = $path."/".$file;
		
		if (-d $file) #si c'est un dossier
		{
			&parcoursarborescencefichiers($file);	#recurse!
		}
		
		if (-f $file) #si c'est un fichier/ traitement
		{
			if ($file=~/^[^(fil)]+?\.xml$/) #uniquement pour les fichiers XML
			{
				$nbrfilesIN++;
				print $file,"\n";
				
				
				#------------VERIFICATION -------------->
				#On vérifie que le fichier n'est pas vide
				open(FILE,$file);
				#Initialiser une variable pour recuperer le contenu du fichier
				my $texte="";
				#Lire ligne par ligne le fichier
				while (my $ligne=<FILE>)
				{
					$ligne =~s/\n//g;
					$texte .= $ligne;
			    }
				close(FILE);
				$texte=~s/> *</></g;
				if (!($texte eq "")) #si ce n'est pas vide
				{
					#--------------EXTRACTION DES INFORMATIONS--------------->
					#On extrait la rubrique, la date et le nom
					#On crée un nouvel objet XML::RSS pour le fichier xml trouvé
					my $rss = new XML::RSS;
					$rss->parsefile("$file");
					# avec XML::RSS l'encodage par défaut est en UTF-8
					# on récupère le titre de la rubrique et on ne conserve que la partie significative
					my $canal = $rss->{'channel'};
					my $rubrique=$canal->{'title'};
					$rubrique =~ s/Le Monde.fr : //;
					$rubrique =~ s/ - LeMonde.fr//;
					$rubrique=nettoyerRubriques($rubrique);
					print "Rubrique : $rubrique\n";
					my $date=$canal->{'pubDate'};
					my $name=$file; #nom du fichier
					$name=~s/.*?(20.*)/$1/; #uniquement les fichiers XML contenant les mises à jour
					
					
					
					#---------------ECRITURE DES FICHIERS DE SORTIE----------->
					# 1)OUVERTURE DES BALISES AU DEBUT ET POUR CHAQUE FICHIER 
					my $cheminXML=$res.$rubrique.".xml";
					if (! -e $cheminXML) #si la première fois qu'on rencontre cette rubrique
					{
						if (!open (FILEOUT,">:encoding(UTF-8)",$cheminXML)) #création du fichier
						{ 
							die "Probleme a la creation du fichier $cheminXML : $!";
						}
						#Ouverture des balises XML du début du fichier
						print FILEOUT "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
						print FILEOUT "<PARCOURS>\n";
						print FILEOUT "<NOM>CONDORI</NOM>\n";
						print FILEOUT "<$rubrique>\n";
						print FILEOUT "<file>";
						print FILEOUT "<name>$name</name>";
						print FILEOUT "<date>$date</date>";
						print FILEOUT "<items>";
						close(FILEOUT);
						
						${DumpXML."$rubrique"}="";
					}
					else #fichier existe déjà
					{
						if (!open (FILEOUT,">>:encoding(UTF-8)",$cheminXML)) 
						{ 
							die "Probleme a l'ouverture du fichier $cheminXML : $!";
						}
						print FILEOUT "<file>";
						print FILEOUT "<name>$file</name>";
						print FILEOUT "<date>$date</date>";
						print FILEOUT "<items>";
						close(FILEOUT);
					}
					
					# 2)EXTRACTION DES TITRES ET DES DESCRIPTIONS
					
					foreach my $item (@{$rss->{'items'}}) 
					{
						my $titre=$item->{'title'};
						my $description=$item->{'description'};
						$nbritemsIN++;
						
						$description=&nettoyerTexte($description);
						$titre=&nettoyerTexte($titre);
						
						if (!(($titre eq "")or($description eq "")))
						{
						
							if (!(((exists $dicoTitre{$rubrique.$titre})) && ((exists $dicoDescription{$rubrique.$description}))))
							{
								$dicoTitre{$rubrique.$titre}="1";
								$dicoDescription{$rubrique.$description}="1";
								$nbritemsOUT++; #compteur
								
								
								#----------FICHIERS DE SORTIE------------->
								
								#SORTIES XML 
								if (!open (FILEOUT,">>:encoding(UTF-8)",$cheminXML)) 
								{ 
									die "Problème a la creation du fichier $cheminXML";
								}
			
								#NOUVEL ITEM
								print FILEOUT "<item>\n";
								print FILEOUT "<titre>".$titre."</titre>\n<description>".$description."</description>\n";
								print FILEOUT "</item>\n";
								close(FILEOUT);
								
								#DUMPGLOBAL
								${DumpXML."$rubrique"}.="<item>\n<titre>".$titre."</titre>\n<description>".$description."</description>\n</item>\n";


								#SORTIES TXT
								my $cheminTXT=$res.$rubrique.".txt";

								if (! -e $cheminTXT)
								{
									if (!open (FILEOUT,">:encoding(UTF-8)",$cheminTXT)) 
									{ 
										die "Problème a l'ouverture du fichier $cheminTXT";
									}
								
									print FILEOUT "$titre".".$description.";
									close(FILEOUT);
									
									#DUMPGLOBAL 
									print FILEglobTXT "$titre."." $description.";
								}
								else
								{
									if (!open (FILEOUT,">>:encoding(UTF-8)",$cheminTXT)) 
									{ 
										die "Problème a l'ouverture du fichier $cheminTXT";
									}
								
									print FILEOUT "$titre."." $description.";
									close(FILEOUT);

									
									#DUMPGLOBAL
									print FILEglobTXT "$titre."." $description.";
								
								}
							}
						}
						
					}
						#FERMETURE DE LA BALISE FILE POUR CHAQUE FICHIER XML
						if (!open (FILEOUT,">>:encoding(UTF-8)",$cheminXML)) 
						{ 
							die "Problème a la creation du fichier $cheminXML";
						}
				
						
						print FILEOUT "</file>";
						close(FILEOUT);
						
					
				}	
			}
		}
	}
}
#----- NETTOYAGE DU TEXTE--------->
sub nettoyerTexte
{
	my $texte=shift;
	
	$texte =~ s/&lt;/</g;
    $texte =~ s/&gt;/>/g;
    $texte =~ s/<a href[^>]+>//g;
    $texte =~ s/<img[^>]+>//g;
    $texte =~ s/<[^>]+>//g;
    $texte =~ s/<\/a>//g;
    $texte =~ s/&#38;#39;/'/g;
    $texte =~ s/&#39;/\'/g;
    $texte =~ s/&#38;#34;/"/g;
    $texte =~ s/&#34;/"/g;
    $texte =~ s/<[^>]+>//g;
    $texte =~ s/&#233;/é/g;
    $texte =~ s/&#234;/ê/g;
    $texte =~ s/&amp;eacute;/é/g;
    $texte =~ s/&amp;egrave;/è/g;
    $texte =~ s/&amp;icirc;/\î/g;
    $texte =~ s/&amp;ocirc;/\ô/g;
    $texte =~ s/&amp;ccedil;/\ç/g;
    $texte =~ s/&amp;agrave;/\à/g;
    $texte =~ s/<p>//g;
    $texte =~ s/<\/p>//g;
    $texte =~ s/&nbsp;/ /g;
    $texte =~ s/>  >>//g;
    $texte =~ s/  >  >>//g;
    $texte =~ s/&#38;/and/g;
    $texte =~ s/&#91;/(/g;
    $texte =~ s/&#93;/)/g;
    $texte =~ s/&#38;/&/g;
    $texte =~ s/<.*$//g;
	$texte =~ s/&amp;|&#38;/&/g;
	$texte =~ s/&amp;|&#38;/&/g;
	$texte =~ s/&apos;|&#39;/'/g;
	$texte =~ s/&nbsp;|&#160;/? /g;
	$texte =~ s/&shy;|&#173;/­/g;
	$texte =~ s/&quot;|&#34;/"/g;
	$texte =~ s/&laquo;|&#171;/"/g;
	$texte =~ s/&raquo;|&#187;/"/g;
	$texte =~ s/&lsaquo;|&#8249;/"/g;
	$texte =~ s/&rsaquo;|&#8250;/"/g;
	$texte =~ s/&ldquo;|&#8220;/"/g;
	$texte =~ s/&rdquo;|&#8221;/"/g;
	$texte =~ s/&bdquo;|&#8222;/"/g;
	$texte =~ s/&lsquo;|&#8216;/'/g;
	$texte =~ s/&bdquo;|&#8222;/"/g;
	$texte =~ s/&rsquo;|&#8217;/'/g;
	$texte =~ s/&sbquo;|&#8218;/'/g;
	$texte =~ s/&hellip;|&#8230;/.../g;
	$texte =~ s/!|&#33;/!/g;
	$texte =~ s/&iexcl;|&#161;/¡/g;
	$texte =~ s/\?|&#63;/\?/g;
	$texte =~ s/\(|&#40;/\(/g;
	$texte =~ s/\)|&#41;/\)/g;
	$texte =~ s/\[|&#91;/\[/g;
	$texte =~ s/]|&#93;/]/g;
	$texte =~ s/{|&#123;/{/g;
    $texte =~ s/}|&#125;/}/g;
	$texte =~ s/&uml;|&#168;/¨/g;
	$texte =~ s/&acute;|&#180;/´/g;
	$texte =~ s/\^|&#94;/\^/g;
	$texte =~ s/&circ;|&#710;/ˆ/g;
	$texte =~ s/~|&#126;/~/g;
	$texte =~ s/#|&#35;/#/g;
	$texte =~ s/\*|&#42;/\*/g;
	$texte =~ s/,|&#44;/,/g;
	$texte =~ s/\.|&#46;/\./g;
	$texte =~ s/:|&#58;/:/g;
	$texte =~ s/;|&#59;/;/g;
	$texte =~ s/&middot;|&#183;/·/g;
	$texte =~ s/&bull;|&#8226;/•/g;
	$texte =~ s/&macr;|&#175;/¯/g;
	$texte =~ s/-|&#45;/-/g;
	$texte =~ s/&ndash;|&#8211;/–/g;
	$texte =~ s/&mdash;|&#8212;/—/g;
	$texte =~ s/_|&#95;/_/g;
	$texte =~ s/\||&#124;/\|/g;
	$texte =~ s/&brvbar;|&#166;/¦/g;
	$texte =~ s/&dagger;|&#8224;/†/g;
	$texte =~ s/&Dagger;|&#8225;/‡/g;
	$texte =~ s/&Dagger;|&#8225;/‡/g;
	$texte =~ s/&sect;|&#167;/§/g;
	$texte =~ s/&para;|&#182;/¶/g;
	$texte =~ s/&copy;|&#169;/©/g;
	$texte =~ s/&reg;|&#174;/®/g;
	$texte =~ s/&trade;|&#8482;/™/g;
	$texte =~ s/@|&#64;/@/g;
	$texte =~ s/\/|&#47;/\//g;
	$texte =~ s/\\|&#92;/\\/g;
	$texte =~ s/&larr;|&#8592;//g;
	$texte =~ s/&uarr;|&#8593;//g;
	$texte =~ s/&rarr;|&#8594;//g;
	$texte =~ s/&darr;|&#8595;//g;
	$texte =~ s/&harr;|&#8596;//g;
	$texte =~ s/&aacute;|&#225;/á/g;
	$texte =~ s/&Aacute;|&#193;/Á/g;
	$texte =~ s/&acirc;|&#226;/â/g;
	$texte =~ s/&Acirc;|&#194;/Â/g;
	$texte =~ s/&agrave;|&#224;/à/g;
	$texte =~ s/&Agrave;|&#192;/À/g;
	$texte =~ s/&aring;|&#229;/å/g;
	$texte =~ s/&Aring;|&#197;/Å/g;
	$texte =~ s/&atilde;|&#227;/ã/g;
	$texte =~ s/&Atilde;|&#195;/Ã/g;
	$texte =~ s/&auml;|&#228;/ä/g;
	$texte =~ s/&Auml;|&#196;/Ä/g;
	$texte =~ s/&aelig;|&#230;/æ/g;
	$texte =~ s/&AElig;|&#198;/Æ/g;
	$texte =~ s/&ccedil;|&#231;/ç/g;
	$texte =~ s/&Ccedil;|&#199;/Ç/g;
	$texte =~ s/&eacute;|&#233;/é/g;
	$texte =~ s/&Eacute;|&#201;/É/g;
	$texte =~ s/&ecirc;|&#234;/ê/g;
	$texte =~ s/&Ecirc;|&#202;/Ê/g;
	$texte =~ s/&egrave;|&#232;/è/g;
	$texte =~ s/&Egrave;|&#200;/È/g;
	$texte =~ s/&euml;|&#235;/ë/g;
	$texte =~ s/&Euml;|&#203;/Ë/g;
	$texte =~ s/&iacute;|&#237;/í/g;
	$texte =~ s/&Iacute;|&#205;/Í/g;
	$texte =~ s/&icirc;|&#238;/î/g;
	$texte =~ s/&Icirc;|&#206;/Î/g;
	$texte =~ s/&igrave;|&#236;/ì/g;
	$texte =~ s/&Igrave;|&#204;/Ì/g;
	$texte =~ s/&iuml;|&#239;/ï/g;
	$texte =~ s/&Iuml;|&#207;/Ï/g;
	$texte =~ s/&ntilde;|&#241;/ñ/g;
	$texte =~ s/&Ntilde;|&#209;/Ñ/g;
	$texte =~ s/&oacute;|&#243;/ó/g;
	$texte =~ s/&Oacute;|&#211;/Ó/g;
	$texte =~ s/&ocirc;|&#244;/ô/g;
	$texte =~ s/&Ocirc;|&#212;/Ô/g;
	$texte =~ s/&ograve;|&#242;/ò/g;
	$texte =~ s/&Ograve;|&#210;/Ò/g;
	$texte =~ s/&oslash;|&#248;/ø/g;
	$texte =~ s/&Oslash;|&#216;/Ø/g;
	$texte =~ s/&otilde;|&#245;/õ/g;
	$texte =~ s/&Otilde;|&#213;/Õ/g;
	$texte =~ s/&ouml;|&#246;/ö/g;
	$texte =~ s/&Ouml;|&#214;/Ö/g;
	$texte =~ s/&oelig;|&#156;/œ/g;
	$texte =~ s/&OElig;|&#140;/Œ/g;
	$texte =~ s/&scaron;|&#353;/š/g;
	$texte =~ s/&Scaron;|&#352;/Š/g;
	$texte =~ s/&szlig;|&#223;/ß/g;
	$texte =~ s/&eth;|&#240;/ð/g;
	$texte =~ s/&ETH;|&#208;/Ð/g;
	$texte =~ s/&thorn;|&#254;/þ/g;
	$texte =~ s/&THORN;|&#222;/Þ/g;
	$texte =~ s/&uacute;|&#250;/ú/g;
	$texte =~ s/&Uacute;|&#218;/Ú/g;
	$texte =~ s/&ucirc;|&#251;/û/g;
	$texte =~ s/&Ucirc;|&#219;/Û/g;
	$texte =~ s/&ugrave;|&#249;/ù/g;
	$texte =~ s/&Ugrave;|&#217;/Ù/g;
	$texte =~ s/&uuml;|&#252;/ü/g;
	$texte =~ s/&Uuml;|&#220;/Ü/g;
	$texte =~ s/&yacute;|&#253;/ý/g;
	$texte =~ s/&Yacute;|&#221;/Ý/g;
	$texte =~ s/&yuml;|&#255;/ÿ/g;
	$texte =~ s/&Yuml;|&#376;/Ÿ/g;
	$texte =~ s/&curren;|&#164;/¤/g;
	$texte =~ s/&euro;|&#128;/€/g;
	$texte =~ s/\$|&#36;/\$/g;
	$texte =~ s/&cent;|&#162;/¢/g;
	$texte =~ s/&pound;|&#163;/£/g;
	$texte =~ s/&yen;|&#165;/¥/g;
	$texte =~ s/&fnof;|&#402;/ƒ/g;
	$texte =~ s/&alpha;|&#945;/α/g;
	$texte =~ s/&Alpha;|&#913;/Α/g;
	$texte =~ s/&beta;|&#946;/ß/g;
	$texte =~ s/&Beta;|&#914;/Β/g;
	$texte =~ s/&gamma;|&#947;/γ/g;
	$texte =~ s/&Gamma;|&#915;/G/g;
	$texte =~ s/&delta;|&#948;/δ/g;
	$texte =~ s/&Delta;|&#916;/Δ/g;
	$texte =~ s/&epsilon;|&#949;/ε/g;
	$texte =~ s/&Epsilon;|&#917;/Ε/g;
	$texte =~ s/&zeta;|&#950;/ζ/g;
	$texte =~ s/&Zeta;|&#918;/Ζ/g;
	$texte =~ s/&eta;|&#951;/η/g;
	$texte =~ s/&Eta;|&#919;/Η/g;
	$texte =~ s/&theta;|&#952;/θ/g;
	$texte =~ s/&Theta;|&#920;/T/g;
	$texte =~ s/&iota;|&#953;/ι/g;
	$texte =~ s/&Iota;|&#921;/Ι/g;
	$texte =~ s/&kappa;|&#954;/κ/g;
	$texte =~ s/&Kappa;|&#922;/Κ/g;
	$texte =~ s/&lambda;|&#955;/λ/g;
	$texte =~ s/&Lambda;|&#923;/Λ/g;
	$texte =~ s/&mu;|&#956;/µ/g;
	$texte =~ s/&Mu;|&#924;/Μ/g;
	$texte =~ s/&nu;|&#957;/ν/g;
	$texte =~ s/&Nu;|&#925;/Ν/g;
	$texte =~ s/&xi;|&#958;/ξ/g;
	$texte =~ s/&Xi;|&#926;/Ξ/g;
	$texte =~ s/&omicron;|&#959;/ο/g;
	$texte =~ s/&Omicron;|&#927;/Ο/g;
	$texte =~ s/&pi;|&#960;/π/g;
	$texte =~ s/&Pi;|&#928;/Π/g;
	$texte =~ s/&rho;|&#961;/ρ/g;
	$texte =~ s/&Rho;|&#929;/Ρ/g;
	$texte =~ s/&sigma;|&#963;/σ/g;
	$texte =~ s/&sigmaf;|&#962;/ς/g;
	$texte =~ s/&Sigma;|&#931;/Σ/g;
	$texte =~ s/&tau;|&#964;/τ/g;
	$texte =~ s/&Tau;|&#932;/Τ/g;
	$texte =~ s/&upsilon;|&#965;/υ/g;
	$texte =~ s/&Upsilon;|&#933;/Υ/g;
	$texte =~ s/&phi;|&#966;/φ/g;
	$texte =~ s/&Phi;|&#934;/F/g;
	$texte =~ s/&chi;|&#967;/χ/g;
	$texte =~ s/&Chi;|&#935;/Χ/g;
	$texte =~ s/&psi;|&#968;/ψ/g;
	$texte =~ s/&Psi;|&#936;/Ψ/g;
	$texte =~ s/&omega;|&#969;/ω/g;
	$texte =~ s/&Omega;|&#937;/O/g;
    $texte =~ s/&thetasym;|&#977;/ϑ/g;
    $texte =~ s/&upsih;|&#978;/ϒ/g;
    $texte =~ s/&piv;|&#982;/ϖ/g;
	$texte =~ s/&deg;|&#176;/°/g;
	$texte =~ s/&micro;|&#181;/µ/g;
	$texte =~ s/&lt;|&#60;/</g;
	$texte =~ s/&gt;|&#62;/>/g;
	$texte =~ s/&le;|&#8804;/=/g;
	$texte =~ s/&ge;|&#8805;/=/g;
	$texte =~ s/=|&#61;/=/g;
	$texte =~ s/&asymp;|&#8776;/˜/g;
	$texte =~ s/&ne;|&#8800;/?/g;
	$texte =~ s/&equiv;|&#8801;/=/g;
	$texte =~ s/&plusmn;|&#177;/±/g;
	$texte =~ s/&minus;|&#8722;/-/g;
	$texte =~ s/\+|&#43;/\+/g;
	$texte =~ s/&times;|&#215;/×/g;
	$texte =~ s/&divide;|&#247;/÷/g;
    $texte =~ s/%|&#37;/%/g;
	$texte =~ s/&permil;|&#8240;/‰/g;
	$texte =~ s/&frac14;|&#188;/¼/g;
	$texte =~ s/&frac12;|&#188;/½/g;
	$texte =~ s/&frac34;|&#188;/¾/g;
	$texte =~ s/&sup1;|&#185;/¹/g;
	$texte =~ s/&sup2;|&#178;/²/g;
	$texte =~ s/&sup3;|&#179;/³/g;
	$texte =~ s/&ordm;|&#186;/º/g;
	$texte =~ s/&ordf;|&#170;/ª/g;
	$texte =~ s/&fnof;|&#402;/ƒ/g;
	$texte =~ s/&prime;|&#8242;/'/g;
	$texte =~ s/&Prime;|&#8243;/"/g;
	$texte =~ s/&part;|&#8706;/∂/g;
	$texte =~ s/&prod;|&#8719;/∏/g;
	$texte =~ s/&sum;|&#8721;/∑/g;
	$texte =~ s/&radic;|&#8730;/v/g;
	$texte =~ s/&infin;|&#8734;/8/g;
	$texte =~ s/&not;|&#172;/¬/g;
	$texte =~ s/&cap;|&#8745;/n/g;
	$texte =~ s/&int;|&#8747;/∫/g;
	$texte =~ s/&/et/g;
	$texte =~ s/<.+?>//g;
    return $texte;
}


#----- NETTOYAGE DES RUBRIQUES--------->

sub nettoyerRubriques
{
	my $rubrique=shift;
	$rubrique=~s/Le Monde.fr - //g;
	$rubrique=~s/ - LeMonde.fr//g;
	$rubrique=~s/Le ?Monde.fr ?://gi;
		
	$rubrique=~s/É/e/gi;
	$rubrique=~s/é/e/gi;
	$rubrique=~s/è/e/gi;
	$rubrique=~s/ê/a/gi;
	$rubrique=~s/ë/e/gi;
	$rubrique=~s/ï/i/gi;
	$rubrique=~s/î/i/gi;
	$rubrique=~s/à/a/gi;
	$rubrique=~s/ô/o/gi;
	$rubrique=~s/,/_/gi;
	$rubrique=~s/ //g;
	
	
	$rubrique=uc($rubrique);
	
	return $rubrique;
}
