Wiktionnaire:Dictionnaire de l'Académie française/scripts

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.

Scipts utilisés pour récupérer et convertir la DAF.

Récupération[modifier le wikicode]

#!/usr/bin/perl

# Recuperer le dictionnaire de l'Academie francaise (8e edition, 1932-1935)
# (c) Yann Forget
# Licence GPL

$url1="http://colet.uchicago.edu/cgi-bin/getobject_?p.";
$url2="./projects/artflb/databases/artfl/dicos/acad1932/IMAGE/";

$i=0;
while ($i<22) {
        print $i;

        $j=0;
        while ($j<68) {

                $url="$url1$i:$j$url2";
                `wget $url -O daf$i.$j.html`;

                $j++;
        }
        $i++;
        print $url;
}

Remarque : <yannf> c'est normal, faut tout virer après 21.46

Suppression des entêtes et pieds de page[modifier le wikicode]

#!/usr/bin/perl

# Suppression des entetes et des pieds de page
# (c) Yann Forget
# Licence GPL

$j = 0;
$target = "resultat";

while ($j<22) {
        $t = "$target$j.html";
        print $t,"\n";

        $i = 0;
        open (TARGET, ">$t") or die "Impossible to open $t : $!\n";
        while ($i<68) {
                $file = "daf$j.$i.html";

                # Longueur du fichier
                $long = `wc -l < $file`;

                $l=1;
                open (FILE, "<$file") or die "Impossible to open $file : $!\n";
                while (<FILE>) {
                        print TARGET $_ if (($l > 59) and ($l < ($long-6)));
                        $l++;
                        }
                close(FILE);
                print TARGET "<br>\n";
                $i++;

                }
        close(TARGET);
        $j++;
}

Obtention de la liste des mots du dico[modifier le wikicode]

#!/usr/bin/perl

# Obtenir la liste des mots
# en supposant que tout le dico est contenu dans un seul fichier 'dico.html'
# s'utilise comme ca : cat dico.html | ce_script.pl | sort | uniq > liste_mots.txt

while ( $ligne = <>) {
  $ligne =~ tr /A-Z/a-z/ ; # tout le monde en minuscule
  # html c'est pas toujours cool
  $ligne =~ s/&eacute;/é/g ; 
  $ligne =~ s/&egrave;/è/g ;
  $ligne =~ s/&ecirc;/ê/g ;
  $ligne =~ s/&agrave;/à/g ;
  $ligne =~ s/&acirc;/â/g ;
  $ligne =~ s/&icirc;/î/g ;
  $ligne =~ s/&iuml;/ï/g;
  $ligne =~ s/&ocirc;/ô/g ;
  $ligne =~ s/&ucirc;/û/g ;
  $ligne =~ s/&ugrave;/ù/g;
  $ligne =~ s/&ccedil;/ç/g;

  if ( $ligne =~ 'font size=\"\+1\"\>([a-z|é|è|ê|à|â|î|ï|ô|û|ù|ç|\-| ]+)' ) {
    # nouveau mot
    $mot = $1 ;
    print "$mot\n" ;
  }
}

Conversion en code Wiki (vieux)[modifier le wikicode]

Vieille version, prendre Conversion (2) plutôt

#!/usr/bin/perl
#
# Permet de transformer le code html des pages du dictionanire de l'académie
# vers une syntaxe wiki pour être intégré dans le wiktionnaire...

#Un fichier .wiki est créé par Article trouvé dans le fichier html.
#
# ouverture du fichier html
open(fichierAca, "<$ARGV[0]") or die "Erreur de lecture $argv[0], Erreur: $!";

#récupération d'un tableau de lignes
@lignes=(<fichierAca>);

#Parcours du tableau de lignes
$i=0;
for(@lignes)
	{
	if (/biblio/)
		{
		if ($i!=0)
			{
			#On enlève tous les sauts de ligne
			$chaine=~s/\n/ /g;
			#print "traitement:$chaine\n";
			
			#traitement des données
			#on vire les balises br
			$chaine=~s/<br>//ig;
			$chaine=~s/'/’/g;
			$chaine=~s/oe/œ/ig;

			#on remplace les caractères accentués
			$chaine=~s/è/è/ig;
			$chaine=~s/é/é/ig;
			$chaine=~s/à/à/ig;
			$chaine=~s/ê/ê/ig;
			$chaine=~s/ô/ô/ig;
			$chaine=~s/û/û/ig;
			$chaine=~s/â/â/ig;
			$chaine=~s/ù/ù/ig;
			$chaine=~s/î/î/ig;
			$chaine=~s/ç/ç/ig;
			$chaine=~s/ï/ï/ig;
			
			#recherche du nom de l'article
			$chaine=~/<font size=\"\+1\">(.*)\.<\/font size=\"\+1\">/ig;
			$nom=lc($1);			

			#recherche de la catégorie
			$chaine=~/<cat>(.*)<\/cat>/ig;
			$cat=$1;
									
			$test=substr($cat,0,2);
			#test du type de mots
			if ($test eq "n.")
				{
				$test=substr($cat,3,5);
				#test du genre
                                $genre="{{f}}" if ($test eq "f.");
				$genre="{{m}}" if ($test eq "m.");

				$cat="{{-nom-}}";
				$catego="[[Catégorie:Noms communs français]]";
				}
			if($test eq "ad")
				{
				$cat="{{-adj-}}";
				if ($nom =~ /, /) {
					$genre="{{m}} ({{f}} : )";
					} else {
					$genre="{{mf}}";
					}
				$catego="[[Catégorie:Adjectifs français]]";
				}
			if ($test eq "v.")
				{
				$test=substr($cat,2,5);
				#test du genre
				$genre="{{t}}" if ($test eq " tr.");
				$genre="{{i}}" if ($test eq "ntr.");

				$cat="{{-verb-}}";
				$catego="[[Catégorie:Verbes français]]";
				}
			if ($test eq "lo")
				{
				$genre="";
				$cat="{{-locu-}}";
				}

				
			$fr="{{=fr=}}\n\n{{-etym-}}\n\n{{-pron-}}\n";
			$chaine=~s/<biblio.*.<\/cat>/$fr.$cat.$nom/;
			$chaine=~s/^/$fr\n$cat\n\n'''$nom''' $genre\n#/;
		
			#Suppression
			$chaine=~s/<cat>.*.<\/cat>//i;
			$chaine=~s/<font size=\"\+1\">.*.\.<\/font size=\"\+1\">//ig;
			
			#Recherche du domaine
			$chaine=~/<dom>(.*)<\/dom>/ig;
			$dom=$1;
			
			$chaine=~s/<dom>.*.<\/dom>/\{\{term\|.$dom\}\}/i;
			
			#Une autre définition
			$chaine=~s/<p><dd>\n/#/ig;
			$chaine=~s/<dd>\n/#/ig;
			$chaine=~s/<dd>/#/ig;
			
			#Remplacment des italiques
			$chaine=~s/<i>([a-z])/\n#: ''\u\1/ig;
			$chaine=~s/<\/i>/''/ig;

			#Traitement des redirections
			$chaine=~/<a(.*)>(.*)<\/a>/i;
			$redir=$2;
			$chaine=~s/<a(.*)>(.*)<\/a>/\[\[$redir\]\]/ig;
			
			#Terme figuré
			$chaine=~s/fig\./\{\{fig\}\}/g;
			
			$chaine=~s/<\/p>/\n/ig;
			$chaine=~s/<p>/\n/ig;															 
			#nettoyage
			$chaine=~s/<col n=\"[0-9]\">/\n/g;
			$chaine=~s/page [0-9]:[0-9]+//g;
			$chaine=~s/''\./''/g;
			$chaine=~s/.t. de //ig;
			$chaine=~s/.t. d'//ig;
			$chaine=~s/#\./#/g;

			#on retire xpage...
			$chaine=~s/<xpage n=\"[0-9]:[0-9]+\">//i;
			$chaine=~s/\('''*'''\) +\(\{\{*\}\}\)/\2\1/;
			$chaine=~s/#\n/# /g;
			$chaine=~s/ +/ /g;

                        $chaine=~s/$/\n{{-trad-}}\n\n/;
			$chaine=~s/$/\n$catego\n\n/;
			
			$mod_daf="{{DAF1932}}";
			$chaine=~s/$/$mod_daf\n/;

                        $nom=~s/, .*//;

			$nom=~s/ /_/g;
			$nom=~s/[<>\/]//g;

			$file = "$nom.wiki";
			print $file,"\n";
			open(ECRIRE,">$file") or die "Erreur de creation du fichier : $!\n" ;
			print ECRIRE "$chaine";
			print "Fichier $nom.wiki créé avec succès\n";
			close(ECRIRE);	
			$chaine="";
			$i=0;
			}
		}
	else
		{
		$chaine=$chaine.$_;
		$i++;
		}
	}

close(fichierAca);

Conversion (2)[modifier le wikicode]

#!/usr/bin/perl
#
# Permet de transformer le code html des pages du dictionanire de l'académie
# vers une syntaxe wiki pour être intégré dans le wiktionnaire...

#Un fichier .wiki est créé par Article trouvé dans le fichier html.
#
# ouverture du fichier html
open(DAF, "<$ARGV[0]") or die "Erreur de lecture $argv[0], Erreur: $!";

#récupération d'un tableau de lignes
@lignes=(<DAF>);

open(CORRECT, ">corrections.txt") or die "Can't open corrections.txt : $!\n";
open(REDIRECT, ">redirect.txt") or die "Can't open redirect.txt : $!\n";
#Parcours du tableau de lignes
$i=0;
for(@lignes)
	{
	if (/biblio/)
		{
		if ($i!=0)
			{
			#On enlève tous les sauts de ligne
			$chaine=~s/\n/ /g;
			
			#traitement des données
			#on vire les balises br
			$chaine=~s/<br>//ig;
			$chaine=~s/'/’/g;

			#on remplace les caractères accentués
			$chaine=~s/è/è/ig;
			$chaine=~s/é/é/ig;
			$chaine=~s/à/à/ig;
			$chaine=~s/ê/ê/ig;
			$chaine=~s/ô/ô/ig;
			$chaine=~s/û/û/ig;
			$chaine=~s/â/â/ig;
			$chaine=~s/ù/ù/ig;
			$chaine=~s/î/î/ig;
			$chaine=~s/ç/ç/ig;
			$chaine=~s/ï/ï/ig;
			$chaine=~s/æ/æ/ig;
			$chaine=~s/œ/œ/ig;

			#recherche du nom de l'article
			$chaine=~/<font size=\"\+1\">(.*)\.<\/font size=\"\+1\">/ig;
			$nom=lc($1);

			#recherche de la catégorie
			$chaine=~/<cat>(.*)<\/cat>/ig;
			$cat=$1;
	
			$test=substr($cat,0,2);
			#test du type de mots
			if ($test eq "n.")
				{
				$test=substr($cat,3,5);
				#test du genre
				$genre="{{f}}" if ($test eq "f.");
				$genre="{{m}}" if ($test eq "m.");

				$cat="{{-nom-}}";
				$catego="[[Catégorie:Noms communs français]]";
				}
			if($test eq "ad")
				{
				$cat="{{-adj-}}";
				if ($nom =~ /, /) {
					$genre="{{m}} ({{f}} : )";
					} else {
					$genre="{{mf}}";
					}
				$catego="[[Catégorie:Adjectifs français]]";
				}
			if ($test eq "v.")
				{
				$test=substr($cat,2,5);
				#test du genre
				$genre="{{t}}" if ($test eq " tr.");
				$genre="{{i}}" if ($test eq "ntr.");

				$cat="{{-verb-}}";
				$catego="[[Catégorie:Verbes français]]";
				}
			if ($test eq "lo")
				{
				$genre="";
				$cat="{{-locu-}}";
				}

			$article = "{{=fr=}}\n\n{{-etym-}}\n\n{{-pron-}}\n\n* {{API}} :\n\n";
			
			$nom =~ s/, .*//;
			$redirect="";
			if ($nom=~ s/ ou (.*)//) {
				$redirect=" ou '''$1'''";
				print REDIRECT $1,"\n";
				}
			#print "$nom $redirect\n";
			$article .= "$cat\n\n'''$nom'''$redirect $genre\n#";
			
			#Recherche du domaine
			$dom = "";
			$dom = " {{term|$1}}" if $chaine =~ /<dom>(.*)<\/dom>/ig;
			$dom =~ s/t. de //ig;
			$dom =~ s/t. d’//ig;
			$article .= $dom;

			#Une autre définition
			$def = $chaine;
			$def = "$1" if $def =~ /<\/dom>(.*)/ig;
			$def = "$1" if $def =~ /<\/cat>(.*)/ig;
			$def =~ s/<dd>/\n# /ig;
			#Remplacment des italiques
			$def =~ s/<i>(.*?)<\/i>/\n#: ''$1''/ig;
			$def =~ s/<p>//ig;
			$def =~ s/<\/p>//ig;
			$def =~ s/<sved>(.*)<\/sved>/'''\u\L$1'''/ig;
			$def =~ s/<cat>(.*)<\/cat>/''$1''/ig;
			$article .= $def;
			$article =~ s/#\./#/g;
			$article =~ s/# \n//g;

			#Traitement des redirections
			$chaine =~ /<a(.*)>(.*)<\/a>/i;
			$redir="[[".lc($2)."]]";
			print "$nom $redir\n" if $2;
			$article =~ s/<a(.*?)>(.*?)<\/a>/$redir/i;
			
			#Terme figuré
			$article .= " {{fig}}" if $chaine =~ /fig\./ig;
			$chaine =~ s/fig\.//ig;
			
			$article .= "\n" if $chaine =~ /<\/p>/ig;
			$chaine =~ s/<\/p>//ig;
			$article .= "\n" if $chaine =~ /<p>/ig;
			$chaine =~ s/<p>//ig;
 
			#nettoyage
			$article =~ s/<col n=\"[0-9]\">/\n/ig;
			$article =~ s/page [0-9]:[0-9]+//ig;
			#$chaine =~ s/''\./''/g;

			#$article =~ s/\('''*'''\) +\(\{\{*\}\}\)/\2\1/;

			$article =~ s/ +/ /g;

			$article .= "{{-trad-}}\n\n";
			$article .= "$catego\n\n";
			$article .= "{{-voir-}}\n\n";
			$article .= "* $redir\n\n";

			$article .= "{{DAF1932}}\n\n";
                        $article .= "{{à vérifier}}\n";

			$nom =~ s/ /_/g;
			$nom =~ s/<([^>]*)>//ig;
			print CORRECT "$nom\n" if $1;
			# Peut-être pas indispensable, mais bon...
			$article =~ s/<[^>]*>//ig ;

                        $rep = "articles/".lc(substr($nom,0,1));
                        mkdir $rep if (!-d $rep);
			$file = "$rep/$nom.wiki";
			#print $file,"\n";

			open(ECRIRE,">$file") or die "Erreur de création du fichier : $!\n";
			print ECRIRE "$article";
			#print "Fichier $nom.wiki créé avec succès\n";
			close(ECRIRE);	
			$chaine="";
			$i=0;
			}
		}
	else
		{
		$chaine=$chaine.$_;
		$i++;
		}
	}
close(CORRECT);
close(REDIRECT);
close(DAF);