[gcompris/gcomprixogoo] First release of an in progress tool that converts wiktionary xml dumps in an xml file.



commit a7becaa29ff6b7657fee733a3e9bb0441ce15ca4
Author: Bruno Coudoin <bruno coudoin free fr>
Date:   Fri Sep 17 22:34:05 2010 +0200

    First release of an in progress tool that converts wiktionary xml dumps
    in an xml file.

 tools/wiktio2xml/README        |    6 +
 tools/wiktio2xml/fr_words.txt  | 1809 ++++++++++++++++++++++++++++++++++++++++
 tools/wiktio2xml/wiktio2xml.py |  267 ++++++
 3 files changed, 2082 insertions(+), 0 deletions(-)
---
diff --git a/tools/wiktio2xml/README b/tools/wiktio2xml/README
new file mode 100644
index 0000000..158de3c
--- /dev/null
+++ b/tools/wiktio2xml/README
@@ -0,0 +1,6 @@
+wiktion2xml is a tool that creates an xml file out of witionary.
+Not all wikitionary is extracted but only the list of words found in a
+text file, one word per line.
+
+It takes 2 file as input, first the wiktionary xml dump, then
+the word file.
diff --git a/tools/wiktio2xml/fr_words.txt b/tools/wiktio2xml/fr_words.txt
new file mode 100644
index 0000000..3768232
--- /dev/null
+++ b/tools/wiktio2xml/fr_words.txt
@@ -0,0 +1,1809 @@
+angle
+armoire
+banc
+bureau
+cabinet
+carreau
+chaise
+classe
+clé
+coin
+couloir
+dossier
+eau
+école
+écriture
+entrée
+escalier
+étagère
+étude
+extérieur
+fenêtre
+intérieur
+lavabo
+lecture
+lit
+marche
+matelas
+maternelle
+meuble
+mousse
+mur
+peluche
+placard
+plafond
+porte
+portemanteau
+poubelle
+radiateur
+rampe
+récréation
+rentrée
+rideau
+robinet
+salle
+savon
+serrure
+serviette
+siège
+sieste
+silence
+sol
+sommeil
+sonnette
+sortie
+table
+tableau
+tabouret
+tapis
+tiroir
+toilette
+vitre
+w.-c.
+aller
+amener
+apporter
+appuyer
+asseoir
+attendre
+bâiller
+bosser
+coucher
+dormir
+éclairer
+écrire
+emmener
+emporter
+endormir
+ennuyer
+entrer
+étudier
+fermer
+frapper
+installer
+lever
+lire
+ouvrir
+presser
+réchauffer
+rentrer
+reposer
+rester
+réveiller
+sonner
+sortir
+tricher
+venir
+absent
+assis
+bas
+couché
+haut
+présent
+à_côté
+à_droite
+à_gauche
+au_milieu
+au-delà
+au-dessous
+au-dessus
+debout
+dedans
+dehors
+en_bas
+en_face
+en_haut
+loin
+près
+tard
+tôt
+à
+après
+au
+avant
+contre
+dans
+de
+derrière
+devant
+du
+sous
+sur
+crayon
+stylo
+feutre
+taille-crayon
+pointe
+mine
+gomme
+dessin
+coloriage
+rayure
+peinture
+pinceau
+couleur
+craie
+papier
+feuille
+cahier
+carnet
+carton
+ciseaux
+découpage
+pliage
+pli
+colle
+affaire
+boîte
+casier
+caisse
+trousse
+cartable
+jouet
+jeu
+pion
+dé
+domino
+puzzle
+cube
+perle
+chose
+carré
+rond
+pâte_à_modeler
+tampon
+livre
+histoire
+bibliothèque
+image
+album
+titre
+bande_dessinée
+conte
+dictionnaire
+magazine
+catalogue
+page
+ligne
+mot
+enveloppe
+étiquette
+affiche
+alphabet
+appareil
+caméscope
+cassette
+cédé
+cédérom
+chaîne
+chanson
+chiffre
+contraire
+différence
+doigt
+écran
+écriture
+film
+fois
+idée
+instrument
+intrus
+lettre
+liste
+magnétoscope
+main
+micro
+modèle
+musique
+nom
+nombre
+orchestre
+ordinateur
+photo
+point
+poster
+pouce
+prénom
+question
+radio
+sens
+tambour
+télécommande
+téléphone
+télévision
+trait
+trompette
+voix
+xylophone
+zéro
+chanter
+chercher
+choisir
+chuchoter
+coller
+colorier
+commencer
+comparer
+compter
+construire
+continuer
+copier
+couper
+déchirer
+décoller
+décorer
+découper
+demander
+démolir
+dépêcher
+dessiner
+dire
+discuter
+écouter
+écrire
+effacer
+entendre
+entourer
+envoyer
+faire
+finir
+fouiller
+goûter
+imiter
+laisser
+lire
+mettre
+montrer
+parler
+peindre
+plier
+poser
+prendre
+préparer
+ranger
+réciter
+recommencer
+regarder
+remettre
+répéter
+répondre
+sentir
+souligner
+tailler
+taire
+tenir
+terminer
+toucher
+travailler
+trier
+ami
+attention
+camarade
+colère
+copain
+coquin
+dame
+directeur
+directrice
+droit
+effort
+élève
+enfant
+fatigue
+faute
+fille
+garçon
+gardien
+madame
+maître
+maîtresse
+mensonge
+ordre
+personne
+retard
+sourire
+travail
+aider
+défendre
+désobéir
+distribuer
+échanger
+excuser
+expliquer
+fâcher
+gronder
+obéir
+obliger
+partager
+prêter
+priver
+promettre
+punir
+quitter
+raconter
+refuser
+séparer
+blond
+brun
+calme
+curieux
+différent
+doux
+énervé
+gentil
+grand
+handicapé
+inséparable
+jaloux
+moyen
+muet
+noir
+nouveau
+petit
+poli
+propre
+roux
+sage
+sale
+sérieux
+sourd
+tranquille
+arrosoir
+assiette
+balle
+bateau
+boîte
+bouchon
+bouteille
+bulles
+canard
+casserole
+cuillère
+cuvette
+douche
+entonnoir
+gouttes
+litre
+moulin
+pluie
+poisson
+pont
+pot
+roue
+plastique
+saladier
+seau
+tablier
+tasse
+trous
+verre
+agiter
+amuser
+arroser
+attraper
+avancer
+baigner
+barboter
+boucher
+bouger
+déborder
+doucher
+éclabousser
+essuyer
+envoyer
+flotter
+gonfler
+inonder
+jouer
+laver
+mélanger
+mouiller
+nager
+patauger
+pleuvoir
+plonger
+pousser
+pouvoir
+presser
+recevoir
+remplir
+renverser
+sécher
+serrer
+souffler
+tirer
+tourner
+tremper
+verser
+vider
+vouloir
+amusant
+chaud
+froid
+humide
+intéressant
+mouillé
+sec
+transparent
+à_moitié
+autant
+beaucoup
+encore
+moins
+peu
+plus
+trop
+à_lâ??endroit
+à_lâ??envers
+anorak
+arc
+bagage
+baguette
+barbe
+bonnet
+botte
+bouton
+bretelle
+cagoule
+casque
+casquette
+ceinture
+chapeau
+chaussette
+chausson
+chaussure
+chemise
+cigarette
+col
+collant
+couronne
+cravate
+culotte
+écharpe
+épée
+fée
+flèche
+fusil
+gant
+habit
+jean
+jupe
+lacet
+laine
+linge
+lunette
+magicien
+magie
+maillot
+manche
+manteau
+mouchoir
+moufle
+nÅ?ud
+paire
+pantalon
+pied
+poche
+prince
+pull-over
+pyjama
+reine
+robe
+roi
+ruban
+semelle
+soldat
+sorcière
+tache
+taille
+talon
+tissu
+tricot
+uniforme
+valise
+veste
+vêtement
+changer
+chausser
+couvrir
+déguiser
+déshabiller
+enlever
+habiller
+lacer
+porter
+ressembler
+clair
+court
+étroit
+foncé
+joli
+large
+long
+multicolore
+nu
+usé
+bien
+mal
+mieux
+presque
+aiguille
+ampoule
+avion
+bois
+bout
+bricolage
+bruit
+cabane
+carton
+clou
+colle
+crochet
+élastique
+ficelle
+fil
+marionnette
+marteau
+métal
+mètre
+morceau
+moteur
+objet
+outil
+peinture
+pinceau
+planche
+plâtre
+scie
+tournevis
+vis
+voiture
+arracher
+attacher
+casser
+coudre
+détruire
+écorcher
+enfiler
+enfoncer
+fabriquer
+mesurer
+percer
+pincer
+réparer
+réussir
+servir
+taper
+trouer
+adroit
+difficile
+dur
+facile
+lisse
+maladroit
+pointu
+rugueux
+tordu
+accident
+aéroport
+auto
+camion
+engin
+feu
+frein
+fusée
+garage
+gare
+grue
+hélicoptère
+moto
+panne
+parking
+pilote
+pneu
+quai
+train
+virage
+vitesse
+voyage
+wagon
+zigzag
+arrêter
+atterrir
+bouder
+charger
+conduire
+démarrer
+disparaître
+donner
+écraser
+envoler
+garder
+garer
+manquer
+partir
+poser
+reculer
+rouler
+tendre
+transporter
+voler
+abîmé
+ancien
+blanc
+bleu
+cassé
+cinq
+dernier
+deux
+deuxième
+dix
+gris
+gros
+huit
+jaune
+même
+neuf
+pareil
+premier
+quatre
+rouge
+sept
+seul
+six
+solide
+trois
+troisième
+un
+vert
+au-dessus
+autour
+vite
+à_côté_de
+au_milieu_de
+au-dessous_de
+au-dessus_de
+autour_de
+avec
+en_bas_de
+en_haut_de
+loin_de
+près_de
+sur
+vers
+acrobate
+arrêt
+arrière
+barre
+barreau
+bord
+bras
+cerceau
+chaise
+cheville
+chute
+cÅ?ur
+corde
+corps
+côté
+cou
+coude
+cuisse
+danger
+doigt
+dos
+échasse
+échelle
+épaule
+équipe
+escabeau
+fesse
+filet
+fond
+genou
+gymnastique
+hanche
+jambe
+jeu
+main
+milieu
+montagne
+mur_dâ??escalade
+muscle
+numéro
+ongle
+parcours
+pas
+passerelle
+pente
+peur
+pied
+plongeoir
+poignet
+poing
+poutre
+équilibre
+prise
+crocodiles
+roulade
+saut
+serpent
+sport
+suivant
+tête
+toboggan
+tour
+trampoline
+tunnel
+ventre
+accrocher
+appuyer
+arriver
+baisser
+balancer
+bondir
+bousculer
+cogner
+courir
+danser
+dépasser
+descendre
+écarter
+escalader
+gagner
+gêner
+glisser
+grimper
+pattes
+mettre_debout
+monter
+pencher
+percher
+perdre
+ramper
+rater
+remplacer
+respirer
+retourner
+revenir
+sauter
+soulever
+suivre
+tomber
+transpirer
+traverser
+dangereux
+épais
+fort
+gauche
+groupé
+immobile
+rond
+serré
+souple
+au_delà
+ensemble
+ici
+jamais
+là
+souvent
+toujours
+bagarre
+balançoire
+ballon
+bande
+bicyclette
+bille
+cadenas
+cage_à_écureuil
+cerf-volant
+château
+coup
+cour
+course
+échasse
+flaque
+paix
+pardon
+partie
+pédale
+pelle
+pompe
+préau
+raquette
+rayon
+récréation
+sable
+sifflet
+signe
+tas
+tricycle
+tuyau
+vélo,
+[filet
+bagarrer
+battre
+cacher
+cracher
+creuser
+crier
+dégonfler
+disputer
+empêcher
+galoper
+hurler
+jongler
+lancer
+pédaler
+plaindre
+pleurer
+poursuivre
+protéger
+saigner
+salir
+siffler
+surveiller
+traîner
+trouver
+caché
+fou
+méchant
+gâteau
+crêpe
+allumette
+anniversaire
+appétit
+beurre
+coquille
+crêpe
+croûte
+dessert
+envie
+faim
+fève
+four
+galette
+gâteau
+goût
+invitation
+langue
+lèvre
+liquide
+louche
+mie
+moitié
+moule
+odeur
+Å?uf
+part
+pâte
+pâtisserie
+recette
+rouleau
+sel
+soif
+tarte
+tranche
+yaourt
+aimer
+allumer
+avaler
+battre
+brûler
+chauffer
+cuire
+étaler
+éteindre
+falloir
+inviter
+jeter
+lécher
+oublier
+régaler
+remercier
+remuer
+souhaiter
+sucer
+barbouillé
+demi
+égal
+entier
+gourmand
+mauvais
+meilleur
+mince
+glaçon
+jus
+kiwi
+lame
+mûre
+noyau
+paille
+pamplemousse
+râpe
+croquer
+éplucher
+râper
+bassine
+cocotte
+épluchure
+légume
+rondelle
+soupe
+consommé
+potage
+bouillir
+mixer
+cru
+cuit
+vide
+cantine
+arête
+femme
+frite
+gobelet
+jambon
+os
+poulet
+purée
+radis
+restaurant
+sole
+déjeuner
+animal
+bébé
+bouche
+cage
+câlin
+caresse
+cochon_dâ??Inde
+foin
+graine
+hamster
+lapin
+maison
+nez
+Å?il
+oreille
+patte
+toit
+yeux
+accoucher
+agacer
+appeler
+câliner
+caresser
+changer
+déranger
+échapper
+élever
+enfermer
+enterrer
+gratter
+grignoter
+installer
+lâcher
+mordre
+mourir
+naître
+nourrir
+occuper
+promener
+ronger
+sauver
+soigner
+téter
+vivre
+voir
+abandonné
+enceinte
+maigre
+mort
+né
+vivant
+ferme
+légume
+abeille
+agneau
+aile
+âne
+arbre
+bain
+barque
+bassin
+bébé
+bec
+bête
+bÅ?uf
+botte_de_foin
+boue
+bouquet
+bourgeon
+branche
+caillou
+campagne
+car
+champ
+chariot
+chat
+cheminée
+cheval
+chèvre
+chien
+cochon
+colline
+coq
+coquelicot
+crapaud
+cygne
+départ
+dindon
+escargot
+étang
+ferme
+fermier
+feuille
+flamme
+fleur
+fontaine
+fumée
+grain
+graine
+grenouille
+griffe
+guêpe
+herbe
+hérisson
+insecte
+jardin
+mare
+marguerite
+miel
+morceau_de_pain
+mouche
+mouton
+oie
+oiseau
+pierre
+pigeon
+plante
+plume
+poney
+poule
+poussin
+prairie
+rat
+rivière
+route
+tortue
+tracteur
+tulipe
+vache
+vétérinaire
+accompagner
+baigner
+courir_après
+couver
+donner_à_manger
+faire_boire
+fumer
+griffer
+habiter
+piquer
+ramasser
+traire
+bizarre
+énorme
+immense
+malade
+nain
+utile
+zoo
+aigle
+animal
+aquarium
+bête
+cerf
+chouette
+cigogne
+crocodile
+dauphin
+éléphant
+girafe
+hibou
+hippopotame
+kangourou
+lion
+loup
+ours
+panda
+panthère
+perroquet
+phoque
+renard
+requin
+rhinocéros
+singe
+tigre
+zèbre
+zoo
+carnaval
+épingle
+bâton
+bêtise
+bonhomme
+botte
+canne
+cauchemar
+cri
+danse
+déguisement
+dinosaure
+drapeau
+en_argent
+en_or
+en_rang
+fête
+figure
+géant
+gens
+grand-mère
+grand-père
+joie
+joue
+journal
+maquillage
+masque
+monsieur
+moustache
+ogre
+princesse
+rue
+trottoir
+déguiser
+défiler
+éclater
+essayer
+marcher
+moquer
+plaire
+rencontrer
+ressembler
+retourner
+rêver
+rire
+taper
+danser
+sauter
+chanter
+content
+drôle
+effrayé
+heureux
+joyeux
+prêt
+riche
+terrible
+fête
+école
+Noël
+boule
+cadeau
+canne_à_pêche
+chance
+cube
+guirlande
+humeur
+papillon
+spectacle
+surprise
+trou
+visage
+faire_peur
+lever
+maquiller
+électrique
+heure
+calendrier
+âge
+an
+année
+après-midi
+calendrier
+début
+dimanche
+été
+étoile
+fin
+mamans
+heure
+hiver
+horloge
+jeudi
+jour
+journée
+lumière
+lundi
+lune
+mardi
+matin
+mercredi
+midi
+minuit
+minute
+mois
+moment
+montre
+nuit
+ombre
+pendule
+retour
+réveil
+saison
+samedi
+semaine
+soir
+soleil
+temps
+univers
+vacance
+vendredi
+avancer
+briller
+dîner
+grandir
+mettre
+retarder
+aîné
+jeune
+lent
+patient
+rapide
+sombre
+vieux
+aujourdâ??hui
+bientôt
+dâ??abord
+demain
+hier
+maintenant
+puis
+tout_de_suite
+avance
+retard
+météo
+air
+arc-en-ciel
+brouillard
+ciel
+éclair
+flocon
+goutte
+hirondelle
+luge
+neige
+nuage
+orage
+ouragan
+parapluie
+parasol
+ski
+tempête
+thermomètre
+tonnerre
+traîneau
+vent
+abriter
+faire_beau
+geler
+mouiller
+neiger
+tromper
+pleuvoir
+venter
+déçu
+triste
+chaud
+froid
+pluvieux
+nuageux
+humide
+gelé
+instable
+changeant
+cuisine
+assiette
+balai
+biscuit
+boisson
+bol
+bonbon
+céréale
+confiture
+coquetier
+couteau
+couvercle
+couvert
+cuillère
+cuisine
+cuisinière
+désordre
+dînette
+éponge
+évier
+four
+fourchette
+lait
+lave-linge
+lessive
+machine
+nappe
+pain
+pile
+plat
+plateau
+poêle
+réfrigérateur
+repas
+tartine
+torchon
+vaisselle
+accrocher
+balayer
+boire
+frotter
+manger
+nettoyer
+servir
+cuisiner
+bon
+creux
+délicieux
+chambre
+argent
+aspirateur
+bague
+barrette
+bijou
+bracelet
+brosse
+cadre
+canapé
+chambre
+cheveu
+chiffon
+cil
+coffre
+coffret
+collier
+couette
+coussin
+couverture
+dent
+dentifrice
+drap
+fauteuil
+fer_à_repasser
+frange
+glace
+lampe
+lit
+ménage
+or
+oreiller
+parfum
+peigne
+pouf
+poupée
+poussette
+poussière
+shampoing
+sourcil
+trésor
+tube
+vase
+allonger
+coiffer
+hésiter
+laver
+maquiller
+passer
+préférer
+repasser
+sécher
+secouer
+téléphoner
+beau
+belle
+confortable
+coquet
+douillet
+famille
+adulte
+album
+amour
+baiser
+bavoir
+biberon
+bisou
+caprice
+cimetière
+cousin
+cousine
+crèche
+fils
+frère
+grand-parent
+homme
+jumeau
+maman
+mari
+mariage
+mère
+papa
+parent
+père
+petit-enfant
+petit-fils
+petite-fille
+rasoir
+sÅ?ur
+agiter
+appeler
+baver
+bercer
+blottir
+consoler
+déménager
+détester
+embrasser
+marier
+offrir
+penser
+rappeler
+raser
+ronfler
+serrer
+tricoter
+accident
+maladie
+ambulance
+bosse
+champignon
+dentiste
+docteur
+fièvre
+front
+gorge
+infirmier
+infirmière
+jambe
+larme
+médecin
+menton
+mine
+ordonnance
+pansement
+peau
+piqûre
+poison
+sang
+santé
+squelette
+trousse
+blesser
+détester
+devoir
+éternuer
+gratter
+guérir
+moucher
+oublier
+protéger
+recoudre
+souffrir
+tâter
+tousser
+trembler
+guéri
+pâle
+jardin
+araignée
+brouette
+chenille
+coccinelle
+fourmi
+herbe
+jonquille
+lézard
+pâquerette
+rangée
+râteau
+rosé
+souris
+taupe
+terrain
+terre
+terrier
+tige
+ver
+cueillir
+jardiner
+faner
+ouvrir
+planter
+mûr
+profond
+assez
+portière
+sac
+voyager
+billet
+caisse
+farce
+grimace
+grotte
+pays
+regard
+ticket
+doucher
+tuer
+cruel
+forêt
+bûche
+buisson
+camp
+chasseur
+châtaigne
+chemin
+chêne
+corbeau
+écorce
+écureuil
+forêt
+gourde
+lac
+loupe
+lutin
+marron
+mûre
+moustique
+muguet
+nid
+paysage
+pin
+rocher
+sapin
+sommet
+tente
+camper
+chasser
+éloigner
+entendre
+envoler
+griller
+grimper
+guetter
+imaginer
+jeter
+lancer
+manger
+marcher
+montrer
+mouiller
+patauger
+percher
+perdre
+photographier
+pique-niquer
+pleuvoir
+poser
+poursuivre
+ramasser
+regarder
+rencontrer
+reposer
+respirer
+revoir
+rêver
+sentir
+siffler
+transpirer
+traverser
+trouver
+vivre
+quartier
+adresse
+appartement
+ascenseur
+balcon
+boucherie
+boulanger
+boulangerie
+boutique
+bus
+caniveau
+caravane
+carrefour
+cave
+charcuterie
+cinéma
+cirque
+clin
+cloche
+clocher
+clown
+coiffeur
+colis-route
+courrier
+croix
+église
+embouteillage
+endroit
+enveloppe
+essence
+facteur
+fleuriste
+foire
+hôpital
+hôtel
+immeuble
+incendie
+laisse
+magasin
+manège
+médicament
+moineau
+monde
+monument
+ouvrier
+palais
+panneau
+paquet
+parc
+passage
+pharmacie
+pharmacien
+piscine
+place
+police
+policier
+pompier
+poste
+promenade
+quartier
+square
+timbre
+travail
+usine
+village
+ville
+voisin
+volet
+barrer
+clignoter
+croiser
+garer
+photographier
+reconnaître
+retrouver
+revoir
+saluer
+savoir
+toucher
+trouver
+visiter
+important
+impossible
+prudent
+chez
+marché
+abricot
+ail
+aliment
+ananas
+banane
+bifteck
+café
+carotte
+cerise
+chocolat
+chou
+citron
+citrouille
+clémentine
+concombre
+coquillage
+corbeille
+crabe
+crevette
+endive
+farine
+fraise
+framboise
+fromage
+fruit
+gâteau
+haricot
+huile
+légume
+marchand
+melon
+monnaie
+navet
+noisette
+noix
+nourriture
+oignon
+orange
+panier
+pâtes
+pêche
+persil
+petit_pois
+poire
+poireau
+pomme
+pomme_de_terre
+prix
+prune
+queue
+raisin
+riz
+salade
+sucre
+thé
+tomate
+viande
+vin
+acheter
+ajouter
+coûter
+payer
+peser
+rendre
+vendre
+cher
+léger
+lourd
+plein
+mer
+baleine
+bouée
+île
+jumelles
+marin
+mer
+mouette
+navire
+pêcheur
+plage
+poisson
+port
+sardine
+serviette
+vague
+voile
+se_noyer
+ramer
+nager
diff --git a/tools/wiktio2xml/wiktio2xml.py b/tools/wiktio2xml/wiktio2xml.py
new file mode 100755
index 0000000..0474231
--- /dev/null
+++ b/tools/wiktio2xml/wiktio2xml.py
@@ -0,0 +1,267 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+from xml.sax import parse
+from xml.sax.handler import ContentHandler
+import sys
+import re
+
+class WikiHandler(ContentHandler):
+
+    def __init__ (self, searchWords, locale):
+
+        self.searchWords= searchWords;
+        self.locale = locale
+
+        self.isPageElement = False
+
+        self.isTitleElement = False
+        self.titleContent = u""
+
+        self.isTextElement = False
+        self.textContent = u""
+
+        self.lilevel = []
+
+    def startElement(self, name, attrs):
+
+        if name == 'page':
+            self.isPageElement = True
+        elif name == 'title':
+            self.isTitleElement = True
+            self.titleContent = ""
+        elif name == 'text':
+            self.isTextElement = True
+            self.textContent = ""
+
+    def endElement(self, name):
+
+        if name == 'page':
+            self.isPageElement= False
+            if self.titleContent in self.searchWords:
+                print "<h1>" + self.titleContent + "</h1>"
+                self.parseText()
+
+            self.titleContent = ""
+            self.textContent = ""
+
+        elif name == 'title':
+            self.isTitleElement= False
+        elif name == 'text':
+            self.isTextElement = False
+
+    def characters (self, ch):
+        if self.isTitleElement:
+            self.titleContent += ch
+        elif self.isTextElement:
+            self.textContent += ch
+
+
+    # Manages bullets and numbered lists
+    # mediawiki specification:
+    # Bulleted: *
+    # Numbered: #
+    # Indent with no marking: :
+    # Definition list: ;
+    # Notes:
+    # These may be combined at the start of the line to create
+    # nested lists, e.g. *** to give a bulleted list three levels
+    # deep, or **# to have a numbered list within two-levels of
+    # bulleted list nesting.
+    #
+    # html specification:
+    # Bulleted: <ul> [<li> </li>]+ </ul>
+    # Numbered: <ol> [<li> </li>]+ </ol>
+    # Notes:
+    # These may be nested.
+    #
+    # We keep the level of indentation to close in the stack:
+    # self.lilevel
+    #
+    def indents2xml(self, text):
+        result = re.search("[*#:;]+[ ]*", text)
+        if not result:
+            close = ""
+            while self.lilevel:
+                close += self.lilevel.pop()
+            text = close + text
+            return text
+
+        indent = result.group(0).rstrip()
+        text = text[result.end():]
+
+        result = ""
+        # Close indents if needed
+        while len(self.lilevel) > len(indent):
+            result += self.lilevel.pop()
+
+        # Open new indents
+        # Remove the current level from it
+        indent = indent[len(self.lilevel):]
+        for char in list(indent):
+            if char in "*:;":
+                result += "<ul>"
+                self.lilevel.append("</ul>")
+            elif char == "#":
+                result += "<ol>"
+                self.lilevel.append("</ol>")
+
+        return result + "<li>" + text + "</li>"
+
+    # Replace standard Wiki tags to XML
+    def wiki2xml(self, text):
+
+        text = re.sub(r"{{[-\)]}}", "", text)
+        text = re.sub(r"\[\[\w+:\w+\]\]", "", text)
+        text = re.sub(r"{{\(\|(.*)}}", r"\1", text)
+        if text == "":
+            return ""
+
+        text = self.indents2xml(text)
+
+        text = re.sub(r"{{par ext[^}]+}}", "(Par extension)", text)
+        text = re.sub(r"{{litt[^}]+}}", "(Littéraire)", text)
+        text = re.sub(r"{{figuré[^}]+}}", "(Figuré)", text)
+        text = re.sub(r"{{dés|fr[^}]+}}", "(Désuet)", text)
+        text = re.sub(r"{{vx[^}]+}}", "(Vieilli)", text)
+        text = re.sub(r"{{w\|([^}]+)", "<i>\1</i>", text)
+        text = re.sub(r"{{source\|([^}]+)", "- (\1)", text)
+
+        # Remove all recognized wiki tags
+        text = re.sub(r"{{[^}]+}}", "", text)
+
+        # italic
+        while text.find("'''") != -1:
+            text = text.replace("'''", "<b>", 1)
+            text = text.replace("'''", "</b>", 1)
+
+        # bold
+        while text.find("''") != -1:
+            text = text.replace("''", "<i>", 1)
+            text = text.replace("''", "</i>", 1)
+
+        # Get rid of hyperlinks
+        while text.find("[[") != -1:
+            start = text.find("[[")
+            stop = text.find("]]")
+            pipe = text.find("|", start, stop)
+            if pipe == -1:
+                text = text.replace("[[", "", 1)
+                text = text.replace("]]", "", 1)
+            else:
+                text = text[:start] + text[pipe+1:]
+                text = text.replace("]]", "", 1)
+
+        return text
+
+    # Wikipedia text content is interpreted and transformed in XML
+    def parseText(self):
+        inDefinition = False
+        inAnagram = False
+        inSynonym = False
+        inAntonym = False
+        inPron = False
+
+        for l in self.textContent.splitlines():
+
+            # Are we still in the correct language section
+            # We assume the correct language is ahead
+            lang = re.match(r"== {{=([a-z]+)=}} ==", l)
+            if lang and lang.group(1) != None and lang.group(1) != self.locale:
+                return
+
+            if inDefinition:
+                if l != "":
+                    print self.wiki2xml(l)
+                else:
+                    inDefinition = False
+                    print self.wiki2xml("</definition>")
+
+            if inAnagram:
+                if l != "":
+                    print self.wiki2xml(l)
+                else:
+                    inAnagram = False
+                    print self.wiki2xml("</anagram>")
+
+            if inSynonym:
+                if l != "":
+                    print self.wiki2xml(l)
+                else:
+                    inSynonym = False
+                    print self.wiki2xml("</synonym>")
+
+            if inAntonym:
+                if l != "":
+                    print self.wiki2xml(l)
+                else:
+                    inAntonym = False
+                    print self.wiki2xml("</antonym>")
+
+            if inPron:
+                if l != "" and l.find(".ogg") != -1:
+                    # Search the .ogg file
+                    file = l.split("=")
+                    if len(file) >= 2:
+                        file = file[1]
+                        print "voices/fr/words/" + file.replace("}}", "")
+                else:
+                    inPron = False
+                    print self.wiki2xml("</prononciation>")
+
+            if l.startswith("'''" + self.titleContent + "'''"):
+                inDefinition = True
+                print("<definition name='" + self.titleContent + "'>")
+            elif l == "{{-anagr-}}":
+                inAnagram = True
+                print "<h2>Anagram</h2>"
+                print("<anagram>")
+            elif l == "{{-syn-}}":
+                inSynonym= True
+                print "<h2>Synonym</h2>"
+                print("<synonym>")
+            elif l == "{{-ant-}}":
+                inAntonym = True
+                print "<h2>Antonym</h2>"
+                print("<antonym>")
+            elif l == "{{-pron-}}":
+                inPron = True
+                print "<h2>Prononciation</h2>"
+                print("<prononciation>")
+
+
+def printHtmlHeader():
+    print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>'
+    print '<html xmlns="http://www.w3.org/1999/xhtml"; lang="fr" dir="ltr">'
+    print '<head>'
+    print '<title>accueil - Wiktionnaire</title>'
+    print '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'
+
+def printHtmlFooter():
+    print '</head>'
+    print '</html>'
+
+def usage():
+    print "wiki2xml.py <wiki file> <word list file>"
+
+# Set UTF-8 stdout in case of the user piping our output
+reload(sys)
+sys.setdefaultencoding('utf-8')
+
+if len(sys.argv) != 3:
+    usage()
+    sys.exit()
+
+wikiFile = sys.argv[1]
+wordsFile = sys.argv[2]
+
+# Import the list of words
+f = open(wordsFile, "r")
+words = []
+words = [w.rstrip() for w in f.readlines()]
+f.close()
+
+printHtmlHeader()
+parse(wikiFile, WikiHandler(words, 'fr'))
+printHtmlFooter()
+



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]