From fbb0fa3bf9a8af1a062e57dd464f6a4b35878cc4 Mon Sep 17 00:00:00 2001 From: konsfra Date: Mon, 7 Feb 2022 17:31:57 +0100 Subject: [PATCH] deal with french version of wikipedia --- setup.py | 8 +- .../abiologically-43781266.html | 0 .../admiral-50357597.html | 0 .../aldersblandet-38616917.html | 0 .../alexin-50152026.html | 0 .../by-50399022.html | 0 .../correspondent-61052028.html | 0 .../for-50363295.html | 0 .../grapple-50080840.html | 0 .../heis-49469949.html | 0 .../house-50356446.html | 0 .../konkurs-48269433.html | 0 .../maldivisk-49859434.html | 0 .../pantergaupe-46717478.html | 0 .../patronise-49023308.html | 0 .../seg-50359832.html | 0 .../song-60388804.html | 0 .../test-50342756.html | 0 .../video-50291344.html | 0 ...265\316\273\316\257\316\261-47719496.html" | 0 .../html_test_files_fr/anarchie-20220207.html | 605 ++++++++++++ .../roquefort-20220207.html | 474 ++++++++++ tests/html_test_files_fr/song-20220207.html | 543 +++++++++++ .../\303\251chelle-20220207.html" | 879 ++++++++++++++++++ tests/{testOutput.json => testOutput_en.json} | 0 tests/testOutput_fr.json | 328 +++++++ tests/{test_core.py => test_core_en.py} | 7 +- tests/test_core_fr.py | 92 ++ wiktionaryparser/__init__.py | 8 +- wiktionaryparser/core.py | 44 +- wiktionaryparser/languages.py | 81 ++ 31 files changed, 3034 insertions(+), 35 deletions(-) rename tests/{html_test_files => html_test_files_en}/abiologically-43781266.html (100%) rename tests/{html_test_files => html_test_files_en}/admiral-50357597.html (100%) rename tests/{html_test_files => html_test_files_en}/aldersblandet-38616917.html (100%) rename tests/{html_test_files => html_test_files_en}/alexin-50152026.html (100%) rename tests/{html_test_files => html_test_files_en}/by-50399022.html (100%) rename tests/{html_test_files => html_test_files_en}/correspondent-61052028.html (100%) rename tests/{html_test_files => html_test_files_en}/for-50363295.html (100%) rename tests/{html_test_files => html_test_files_en}/grapple-50080840.html (100%) rename tests/{html_test_files => html_test_files_en}/heis-49469949.html (100%) rename tests/{html_test_files => html_test_files_en}/house-50356446.html (100%) rename tests/{html_test_files => html_test_files_en}/konkurs-48269433.html (100%) rename tests/{html_test_files => html_test_files_en}/maldivisk-49859434.html (100%) rename tests/{html_test_files => html_test_files_en}/pantergaupe-46717478.html (100%) rename tests/{html_test_files => html_test_files_en}/patronise-49023308.html (100%) rename tests/{html_test_files => html_test_files_en}/seg-50359832.html (100%) rename tests/{html_test_files => html_test_files_en}/song-60388804.html (100%) rename tests/{html_test_files => html_test_files_en}/test-50342756.html (100%) rename tests/{html_test_files => html_test_files_en}/video-50291344.html (100%) rename "tests/html_test_files/\341\274\200\316\263\316\263\316\265\316\273\316\257\316\261-47719496.html" => "tests/html_test_files_en/\341\274\200\316\263\316\263\316\265\316\273\316\257\316\261-47719496.html" (100%) create mode 100644 tests/html_test_files_fr/anarchie-20220207.html create mode 100644 tests/html_test_files_fr/roquefort-20220207.html create mode 100644 tests/html_test_files_fr/song-20220207.html create mode 100644 "tests/html_test_files_fr/\303\251chelle-20220207.html" rename tests/{testOutput.json => testOutput_en.json} (100%) create mode 100644 tests/testOutput_fr.json rename tests/{test_core.py => test_core_en.py} (94%) create mode 100644 tests/test_core_fr.py create mode 100644 wiktionaryparser/languages.py diff --git a/setup.py b/setup.py index 1a03648..27461a3 100644 --- a/setup.py +++ b/setup.py @@ -5,12 +5,16 @@ setup( name = 'wiktionaryparser', - version = '0.0.96', + version = '0.0.99', description = 'A tool to parse word data from wiktionary.com into a JSON object', long_description = long_desc, long_description_content_type='text/markdown', packages = ['wiktionaryparser', 'tests'], - data_files=[('testOutput', ['tests/testOutput.json']), ('readme', ['readme.md']), ('requirements', ['requirements.txt'])], + data_files=[('testOutput_en', ['tests/testOutput_en.json']), + ('testOutput_fr', ['tests/testOutput_fr.json']), + ('readme', ['readme.md']), + ('requirements', ['requirements.txt']), + ], author = 'Suyash Behera', author_email = 'sne9x@outlook.com', url = 'https://github.com/Suyash458/WiktionaryParser', diff --git a/tests/html_test_files/abiologically-43781266.html b/tests/html_test_files_en/abiologically-43781266.html similarity index 100% rename from tests/html_test_files/abiologically-43781266.html rename to tests/html_test_files_en/abiologically-43781266.html diff --git a/tests/html_test_files/admiral-50357597.html b/tests/html_test_files_en/admiral-50357597.html similarity index 100% rename from tests/html_test_files/admiral-50357597.html rename to tests/html_test_files_en/admiral-50357597.html diff --git a/tests/html_test_files/aldersblandet-38616917.html b/tests/html_test_files_en/aldersblandet-38616917.html similarity index 100% rename from tests/html_test_files/aldersblandet-38616917.html rename to tests/html_test_files_en/aldersblandet-38616917.html diff --git a/tests/html_test_files/alexin-50152026.html b/tests/html_test_files_en/alexin-50152026.html similarity index 100% rename from tests/html_test_files/alexin-50152026.html rename to tests/html_test_files_en/alexin-50152026.html diff --git a/tests/html_test_files/by-50399022.html b/tests/html_test_files_en/by-50399022.html similarity index 100% rename from tests/html_test_files/by-50399022.html rename to tests/html_test_files_en/by-50399022.html diff --git a/tests/html_test_files/correspondent-61052028.html b/tests/html_test_files_en/correspondent-61052028.html similarity index 100% rename from tests/html_test_files/correspondent-61052028.html rename to tests/html_test_files_en/correspondent-61052028.html diff --git a/tests/html_test_files/for-50363295.html b/tests/html_test_files_en/for-50363295.html similarity index 100% rename from tests/html_test_files/for-50363295.html rename to tests/html_test_files_en/for-50363295.html diff --git a/tests/html_test_files/grapple-50080840.html b/tests/html_test_files_en/grapple-50080840.html similarity index 100% rename from tests/html_test_files/grapple-50080840.html rename to tests/html_test_files_en/grapple-50080840.html diff --git a/tests/html_test_files/heis-49469949.html b/tests/html_test_files_en/heis-49469949.html similarity index 100% rename from tests/html_test_files/heis-49469949.html rename to tests/html_test_files_en/heis-49469949.html diff --git a/tests/html_test_files/house-50356446.html b/tests/html_test_files_en/house-50356446.html similarity index 100% rename from tests/html_test_files/house-50356446.html rename to tests/html_test_files_en/house-50356446.html diff --git a/tests/html_test_files/konkurs-48269433.html b/tests/html_test_files_en/konkurs-48269433.html similarity index 100% rename from tests/html_test_files/konkurs-48269433.html rename to tests/html_test_files_en/konkurs-48269433.html diff --git a/tests/html_test_files/maldivisk-49859434.html b/tests/html_test_files_en/maldivisk-49859434.html similarity index 100% rename from tests/html_test_files/maldivisk-49859434.html rename to tests/html_test_files_en/maldivisk-49859434.html diff --git a/tests/html_test_files/pantergaupe-46717478.html b/tests/html_test_files_en/pantergaupe-46717478.html similarity index 100% rename from tests/html_test_files/pantergaupe-46717478.html rename to tests/html_test_files_en/pantergaupe-46717478.html diff --git a/tests/html_test_files/patronise-49023308.html b/tests/html_test_files_en/patronise-49023308.html similarity index 100% rename from tests/html_test_files/patronise-49023308.html rename to tests/html_test_files_en/patronise-49023308.html diff --git a/tests/html_test_files/seg-50359832.html b/tests/html_test_files_en/seg-50359832.html similarity index 100% rename from tests/html_test_files/seg-50359832.html rename to tests/html_test_files_en/seg-50359832.html diff --git a/tests/html_test_files/song-60388804.html b/tests/html_test_files_en/song-60388804.html similarity index 100% rename from tests/html_test_files/song-60388804.html rename to tests/html_test_files_en/song-60388804.html diff --git a/tests/html_test_files/test-50342756.html b/tests/html_test_files_en/test-50342756.html similarity index 100% rename from tests/html_test_files/test-50342756.html rename to tests/html_test_files_en/test-50342756.html diff --git a/tests/html_test_files/video-50291344.html b/tests/html_test_files_en/video-50291344.html similarity index 100% rename from tests/html_test_files/video-50291344.html rename to tests/html_test_files_en/video-50291344.html diff --git "a/tests/html_test_files/\341\274\200\316\263\316\263\316\265\316\273\316\257\316\261-47719496.html" "b/tests/html_test_files_en/\341\274\200\316\263\316\263\316\265\316\273\316\257\316\261-47719496.html" similarity index 100% rename from "tests/html_test_files/\341\274\200\316\263\316\263\316\265\316\273\316\257\316\261-47719496.html" rename to "tests/html_test_files_en/\341\274\200\316\263\316\263\316\265\316\273\316\257\316\261-47719496.html" diff --git a/tests/html_test_files_fr/anarchie-20220207.html b/tests/html_test_files_fr/anarchie-20220207.html new file mode 100644 index 0000000..83e45c6 --- /dev/null +++ b/tests/html_test_files_fr/anarchie-20220207.html @@ -0,0 +1,605 @@ + + + + +anarchie — Wiktionnaire + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Aller au contenu +
+ + + +
+ + + + + + + +
+ +
+
+ + + +
+
+
+ + + + +
+
+ + + + +
+
+
+
+
+
+ +
+ + +
+ + +

anarchie

+
+
+
Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.
+
+ +
+
+
+ +
La version imprimable n’est plus prise en charge et peut comporter des erreurs de génération. Veuillez mettre à jour les signets de votre navigateur et utiliser à la place la fonction d’impression par défaut de celui-ci.
Voir aussi : Anarchie
+ + +

Français

+

Étymologie

+
(Date à préciser) Du latin anarchia et du grec ancien ἀναρχία, anarchía. Ce mot est construit à partir du préfixe « an- » (« privé de ») auquel est ajouté le suffixe « -archie » (« pouvoir » ou « commandement »)[1].
+

Nom commun

+ + + + + + + + + + + +
SingulierPluriel +
anarchie +anarchies +
\a.naʁ.ʃi\ +
+

anarchie \a.naʁ.ʃi\ féminin +

+
  1. Forme d’organisation politique, définie par l’absence d’autorité centralisée.
  2. +
  3. Absence totale d’autorité politique ou de gouvernement. +
    • Tombé dans des temps d’anarchie et de désordre, où l’unité de l’empire avait péri, brisée en une foule de petits états qui se faisaient la guerre, Confucius conçut la double pensée de retremper l’énergie personnelle des individus et de refaire l’unité de l’empire. — (Jean-Jacques Ampère, La Chine et les travaux d’Abel Rémusat, Revue des Deux Mondes, tome 8, 1832)
  4. +
  5. Absence de hiérarchie, de pouvoir et d’autorité. +
    • On n’anarchisera pas l’univers de sitôt, peut-être jamais ; mais si l’anarchie universelle est irréalisable, l’anarchie relative peut toujours s’affirmer. Il suffit que les militants se constituent en colonies anarchistes […] — (Stéphane Rosso, « Correspondance », dans Les Réfractaires, nov.-déc. 1913)
    • +
    • Je ne m’attarderai pas à envisager une thèse qui serait d’anarchie si elle était sérieusement soutenue, à savoir […] que chef du gouvernement, ministres, députés, sénateurs, doivent s’incliner dévotieusement devant les suggestions émanant des divers services de la Guerre […] — (Joseph Caillaux, Mes Mémoires, I, Ma jeunesse orgueilleuse, 1942)
  6. +
  7. Confusion et discorde politique. +
    • […] depuis long-temps, presque toutes ces provinces sont en proie aux vexations d’administrateurs avides et ignorans; depuis long-temps les guerres civiles et l’anarchie détruisent à de courts intervalles le bien-être de leurs habitans […] — (Adriano Balbi, La Population des deux mondes, Revue des Deux Mondes, tome 1, 1829)
    • +
    • Oui, les ennemis de la République, car, de quelque nom qu’il leur plaise de se parer, les vaincus du scrutin d’hier ne pouvait aboutir, s’ils nous avaient arraché la victoire, qu’à l’effondrement de la République dans l’anarchie prétorienne exploitée par la Compagnie de Jésus. — (Georges Clemenceau, Vainqueurs le 27 juin 1899 dans L’Aurore - En réunion dans « Justice militaire », 1901)
  8. +
  9. Désordre, manque d’organisation. +
    • Mon ami, reprit le Roi, si vous empiétez sur les attributions des autres officiers de la Cour, nous courons à l’anarchie. — (Pierre Louÿs, Les Aventures du roi Pausole, 1901)
  10. +
  11. Absence de règles ou de loi. +
    • L’anarchie marocaine, l’application de lois semi-barbares, la corruption du chérif étaient autant d’arguments pouvant justifier une intervention de l’extérieur. — (Franco Arese, La Politique africaine des États-Unis, 1945)
+

Quasi-synonymes

+ +

Antonymes

+ +

Dérivés

+ +

Apparentés étymologiques

+ +

Traductions

+
+
+

Prononciation

+ +

Voir aussi

+ +

Références

+
    +
  1. La culture générale de A à Z, édition Hatier +
  2. +
+ +

Italien

+

Forme de nom commun

+ + + + + + + + +
Singulier +Pluriel +
anarchia
\a.nar.'ki.a\ +
anarchie
\a.nar.'ki.e\ +
+

anarchie \a.nar.ˈki.e\ féminin +

+
  1. Pluriel de anarchia.
+

Néerlandais

+

Étymologie

+
Étymologie manquante ou incomplète. Si vous la connaissez, vous pouvez l’ajouter en cliquant ici.
+

Nom commun

+

anarchie ou annarchie +

+
  1. Anarchie.
+

Synonymes

+ +

Taux de reconnaissance

+
En 2013, ce mot était reconnu par[1] : +
  • 97,6 % des Flamands,
  • +
  • 96,9 % des Néerlandais.
+

Prononciation

+ +

Références

+
    +
  1. Marc Brysbaert, Emmanuel Keuleers, Paweł Mandera et Michael Stevens, Woordenkennis van Nederlanders en Vlamingen anno 2013: Resultaten van het Groot Nationaal Onderzoek Taal, Université de Gand, 15 décembre 2013, 1266 p. → [lire en ligne] +
  2. +
+

Tchèque

+

Étymologie

+
Du grec ancien.
+

Nom commun

+

anarchie \Prononciation ?\ féminin +

+
  1. (Politique) Anarchie.
+

Apparentés étymologiques

+ + + + + +
+
+ +
+ + +
+ +
+
+ + +
+
+ + + \ No newline at end of file diff --git a/tests/html_test_files_fr/roquefort-20220207.html b/tests/html_test_files_fr/roquefort-20220207.html new file mode 100644 index 0000000..1af5865 --- /dev/null +++ b/tests/html_test_files_fr/roquefort-20220207.html @@ -0,0 +1,474 @@ + + + + +roquefort — Wiktionnaire + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Aller au contenu +
+ + + +
+ + + + + + + +
+ +
+
+ + + +
+
+
+ + + + +
+
+ + + + +
+
+
+
+
+
+ +
+ + +
+ + +

roquefort

+
+
+
Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.
+
+ +
+
+
+ +
La version imprimable n’est plus prise en charge et peut comporter des erreurs de génération. Veuillez mettre à jour les signets de votre navigateur et utiliser à la place la fonction d’impression par défaut de celui-ci.
Voir aussi : Roquefort
+ + +

Français

+

Étymologie

+
Du nom de Roquefort, bourg du département de l'Aveyron, où il se fabrique.
+

Nom commun

+ + + + + + + + + + + +
SingulierPluriel +
roquefort +roqueforts +
\ʁɔk.fɔʁ\ +
+
Une tranche de roquefort.
+

roquefort \ʁɔk.fɔʁ\ masculin +

+
  1. Fromage de brebis, très estimé. +
    • Le roquefort est fait de lait de brebis.
    • +
    • Les roqueforts, eux aussi, sous des cloches de cristal, prenaient des mines princières, des faces marbrées et grasses, veinées de bleu et de jaune. — (Émile Zola, Le Ventre de Paris, Georges Charpentier, Paris, 1873)
+

Prononciation

+ +


+

+

Traductions

+
+
+

Voir aussi

+ +

Références

+ + + + + +
+
+ +
+ + +
+ +
+
+ + +
+
+ + + \ No newline at end of file diff --git a/tests/html_test_files_fr/song-20220207.html b/tests/html_test_files_fr/song-20220207.html new file mode 100644 index 0000000..8fc9114 --- /dev/null +++ b/tests/html_test_files_fr/song-20220207.html @@ -0,0 +1,543 @@ + + + + +song — Wiktionnaire + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Aller au contenu +
+ + + +
+ + + + + + + +
+ +
+
+ + + +
+
+
+ + + + +
+
+ + + + +
+
+
+
+
+
+ +
+ + +
+ + +

song

+
+
+
Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.
+
+ +
+
+
+ +
La version imprimable n’est plus prise en charge et peut comporter des erreurs de génération. Veuillez mettre à jour les signets de votre navigateur et utiliser à la place la fonction d’impression par défaut de celui-ci.
+ + +

Anglais

+

Étymologie

+
Déverbal de sing (« chanter »).
+

Nom commun

+ + + + + + + +
SingulierPluriel +
song
\ˈsɔŋ\
ou \ˈsɒŋ\ +
songs
\ˈsɔŋz\
ou \ˈsɒŋz\ +
+

song \ˈsɔŋ\ ou \ˈsɑŋ\ (États-Unis), \ˈsɒŋ\ (Royaume-Uni) +

+
  1. Chant des oiseaux.
  2. +
  3. (Musique) Chanson.
+

Dérivés

+ +

Prononciation

+ +

Anagrammes

+ +

Voir aussi

+
  • song sur l’encyclopédie Wikipédia (en anglais) Wikipedia-logo-v2.svg
+

Tchèque

+

Étymologie

+
De l’anglais song.
+

Nom commun

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Cas +Singulier +Pluriel +
Nominatif +song +songy +
Vocatif +songe +songy +
Accusatif +song +songy +
Génitif +songu +songů +
Locatif +songu +songech +
Datif +songu +songům +
Instrumental +songem +songy +
+

song \sɔŋk\ masculin inanimé +

+
  1. (Musique) Negro-spiritual, chanson de gospel. +
  2. +
  3. Chanson triste, nostalgique. +
+

Synonymes

+ +

Dérivés

+ +

Voir aussi

+
  • song sur l’encyclopédie Wikipédia (en tchèque) Wikipedia-logo-v2.svg
+

Références

+ + + + + +
+
+ +
+ + +
+ +
+
+ + +
+
+ + + \ No newline at end of file diff --git "a/tests/html_test_files_fr/\303\251chelle-20220207.html" "b/tests/html_test_files_fr/\303\251chelle-20220207.html" new file mode 100644 index 0000000..f544d2b --- /dev/null +++ "b/tests/html_test_files_fr/\303\251chelle-20220207.html" @@ -0,0 +1,879 @@ + + + + +échelle — Wiktionnaire + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Aller au contenu +
+ + + +
+ + + + + + + +
+ +
+
+ + + +
+
+
+ + + + +
+
+ + + + +
+
+
+
+
+
+ +
+ + +
+ + +

échelle

+
+
+
Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.
+
+ +
+
+
+ +
La version imprimable n’est plus prise en charge et peut comporter des erreurs de génération. Veuillez mettre à jour les signets de votre navigateur et utiliser à la place la fonction d’impression par défaut de celui-ci.
+ +

Français

+

Étymologie

+
Du latin scala, apparenté à escale (« lieu où l’on descend »), escalier, échantillon et les mots scander, descendre, descente, ascension, etc.
+

Nom commun

+ + + + + + + + + + + +
SingulierPluriel +
échelle +échelles +
\e.ʃɛl\ +
+
Une échelle coulissante.
+
Échelle de crue sur la Loire.
+
Échelle de Lovibon (sens 4)
+

échelle \e.ʃɛl\ féminin +

+
  1. Dispositif permettant de monter et descendre, généralement composé de deux montants de bois ou de métal munis de barreaux disposés à intervalles réguliers. +
    • Une échelle de corde est une échelle dont les montants sont de corde, et les échelons sont de corde ou faits de rouleaux de bois.
    • +
    • « Minuit sonne, et puis une heure : ils marchent vers la porte Neuve, entrent dans le fossé le traversent, et vont planter trois échelles contre le mur du boulevard. — (Julie de Querangal, Philippe de Morvelle, Revue des Deux Mondes, T.2,4, 1833)
    • +
    • Très intrigué, j’allais quérir une échelle ; je l’appliquai contre le mur et montai avec d’infinies précautions. — (Octave Mirbeau, Le colporteur,)
    • +
    • Dressé sur l’échelle légère et tremblante, en saule de marais, il cueillait sans relâche, leste comme un écureuil, promptement quoique sans se hâter. — (Jean Rogissart, Hurtebise aux griottes, L’Amitié par le livre, Blainville-sur-Mer, 1954, p. 35)
    +
    1. (Marine) Tout degré, tout escalier fixe ou volant. +
      • Échelle d’entre-pont, échelle de dunette.
      • +
      • Échelle de poupe, échelle de corde pendue à la poupe.
  2. +
  3. (Par analogie) Ensemble d'éléments disposés comme les barreaux d'une échelle, en particulier dans les domaines de la couture et de la dentelle. +
    • Art 16 - Les échelles sur lesquelles on attache les porcs pour les vider, seront appuyées contre la face intérieure des barrières placées le long de l'espace réservé au tuage et au grillage. — (« Règlement sur les droits d'abatage … de la ville de Tournay », dans Tarif et règlements des octrois de toutes les communes de la Belgique, présenté par le Ministre de l'Intérieur (Jean-Baptiste Nothomb), Bruxelles : chez Em. Devroye & Cie, 1845, p. 171)
    • +
    • Quelque artiste modeste invité aux chasses princières s’était appliqué à le pourtraire de son mieux, ainsi que sa jeune épouse, qu’on voyait dans un autre médaillon, attrayante, maligne, élancée dans son corsage ouvert à échelle de rubans, agaçant de sa mine retroussée un oiseau posé sur son doigt. — (Gérard de Nerval, Les Filles du feu, Sylvie, 1854)
  4. +
  5. Proportion de taille entre la représentation d’une chose et la chose représentée. +
    • Le kutch ou règle d’architecte est une règle à échelle qui permet grâce aux graduations de différentes échelles une lecture et une réalisation rapide des plans en évitant de savants calculs de conversion. — (Catherine Fetz, ‎Christine Langlois & ‎Johann Lesire, Le Volum’ : Expertise de la vie quotidienne, Éditions Foucher, 2e éd., 2015, fiche 94)
    • +
    • Depuis 1968, le BRGM s'est vu confier la mission de réaliser les cartes géologiques de la France. Trois échelles sont disponibles et chacune possède sa propre utilité. — (Denis Sorel & ‎Pierre Vergely, Atlas d'initiation aux cartes et aux coupes géologiques, Dunod, 3e éd., 2014, p.117)
    • +
    • Pour chaque végétal, il place un petit personnage dans le tableau, afin de donner l’échelle de ces plantes tropicales souvent gigantesques.— (Catherine Calvet, Francis Hallé «Une plante n’a ni queue ni tête, c’est pour cette altérité que je suis devenu botaniste» Libération le 29 décembre 2016)
  6. +
  7. Échelonnement ou graduation utilisés pour mesurer une grandeur. +
    • J'aurais pu croire qu'ils jouaient au mistigri si je n'avais su que mon père s'était mis en tête d'expliquer au jardinier l’échelle de Mohs qui gradue les minéraux selon leur dureté, de un (le talc) à dix (le diamant). — (Jean-Pierre Milovanoff, Russe blanc, Editions Julliard, 1995)
    • +
    • Pour caractériser la nocivité de la secousse à la surface du sol, on disposait depuis 1902, de l’échelle macrosismique des intensités de Mercalli, issues d’échelles de plus en plus détaillées, successivement proposées et améliorées par Rossi puis Forel et quelques autres ; […]. — (Pierre Martin, Géotechnique : Ces risques que l'on dit naturels, Eyrolles, 2011, p.139 (§.1.5.4.2.2.1.1))
    • +
    • Les médias grand public l’indiquent souvent sur l’échelle de Richter ou sur l’échelle ouverte de Richter. Ces terminologies sont impropres : l’échelle de Richter, stricto sensu, est une échelle dépassée et uniquement adaptée aux tremblements de terre californiens. — (Magnitude d’un séisme, Wikipédia)
  8. +
  9. Escale, port où il est possible d’embarquer et de débarquer des marchandises. +
  10. +
  11. Niveau, grandeur, proportion. +
    • La pomme de terre, ce tubercule si précieux pour l'alimentation du pauvre, est cultivée dans toutes les parties du département, mais sur une petite échelle. — (Edmond Nivoit, Notions élémentaires sur l’industrie dans le département des Ardennes, E. Jolly, Charleville, 1869, page 101)
    • +
    • À l’échelle mondiale, la protection des ressources en eau est seulement reconnue par des traités non contraignants comme le chapitre 18 de l’Agenda 21, adopté en 1992 par la conférence des Nations unies pour l’environnement et le développement, relatif à la protection de la qualité et de l’approvisionnement en eau douce. — (Audrey Fournier, L’accès à l’eau propre, principal enjeu de la Journée mondiale de l’eau, dans LeMonde.fr, 2010)
    • +
    • Une bonne politique écologique se pratique d'abord à l'échelle locale - celle du quartier, du village, de collectivités qui décident de maîtriser la gestion des ressources communes, l'eau, l'air, l'énergie. — (Philippe Descola, Interview par Olivier Pascal-Moussellard, Télérama n°3392, janvier 2015)
    +
    1. Niveau d'une hiérarchie. +
      • L’échelle sociale, la hiérarchie sociale, l’ensemble des diverses conditions sociales.
      • +
      • Être au dernier degré de l’échelle sociale.
      • +
      • Du haut en bas de l’échelle, tous les membres d'une armée vraiment solide ont leur pensée tendue vers cette issue catastrophique des conflits internationaux. — (Georges Sorel, Réflexions sur la violence, Chap.IV, La grève prolétarienne, 1908, p.156)
    2. +
    3. (Musique) Gamme. +
      • L’échelle diatonique est la succession des sons dans l’ordre diatonique.
      • +
      • L’échelle harmonique est la succession des sons dans l’ordre harmonique.
  12. +
  13. (Jeux) Dans les jeux de guerre, désigne l'ampleur du conflit simulé.
  14. +
  15. discipline acrobatique du cirque.
+

Dérivés

+
+
+
+
+ +
+

Apparentés étymologiques

+ +

Hyponymes

+
Ampleur du conflit simulé dans un jeu de guerre
+ +

Proverbes et phrases toutes faites

+ +

Traductions

+
+
+
+
+
+
+
+
+

Forme de verbe

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Voir la conjugaison du verbe écheler +
Indicatif +Présent +j’échelle +
+
il/elle/on échelle +
+
+
+
Imparfait + +
+
+
+
+
+
Passé simple + +
+
+
+
+
+
Futur simple + +
+
+
+
+
+
Subjonctif +Présent +que j’échelle +
+
qu’il/elle/on échelle +
+
+
+
Imparfait + +
+
+
+
+
+
Impératif +Présent +(2e personne du singulier)
échelle +
+
+
+
+

échelle \e.ʃɛl\ +

+
  1. Première personne du singulier de l’indicatif présent de écheler.
  2. +
  3. Troisième personne du singulier de l’indicatif présent de écheler.
  4. +
  5. Première personne du singulier du subjonctif présent de écheler.
  6. +
  7. Troisième personne du singulier du subjonctif présent de écheler.
  8. +
  9. Deuxième personne du singulier de l’impératif de écheler.
+

Prononciation

+ +

Voir aussi

+
  • échelle sur l’encyclopédie Wikipédia Wikipedia-logo-v2.svg
+

Références

+ + + + + +
+
+ +
+ + +
+ +
+
+ + +
+
+ + + \ No newline at end of file diff --git a/tests/testOutput.json b/tests/testOutput_en.json similarity index 100% rename from tests/testOutput.json rename to tests/testOutput_en.json diff --git a/tests/testOutput_fr.json b/tests/testOutput_fr.json new file mode 100644 index 0000000..5bacc5e --- /dev/null +++ b/tests/testOutput_fr.json @@ -0,0 +1,328 @@ +{ + "Fran\u00e7ais": { + "roquefort": [ + { + "etymology": "Du nom de Roquefort, bourg du d\u00e9partement de l'Aveyron, o\u00f9 il se fabrique.", + "definitions": [ + { + "partOfSpeech": "nom commun", + "text": [ + "roquefort \\\u0281\u0254k.f\u0254\u0281\\ masculin", + "Fromage de brebis, tr\u00e8s estim\u00e9." + ], + "relatedWords": [], + "examples": [] + } + ], + "pronunciations": { + "text": [ + "\\\u0281\u0254k.f\u0254\u0281\\", + "France (Saint-Maurice-de-Beynost)\u00a0: \u00e9couter \u00ab\u00a0roquefort [Prononciation\u00a0?]\u00a0\u00bb", + "France\u00a0: \u00e9couter \u00ab\u00a0roquefort [Prononciation\u00a0?]\u00a0\u00bb" + ], + "audio": [ + "//upload.wikimedia.org/wikipedia/commons/transcoded/4/48/LL-Q150_%28fra%29-Beno%C3%AEt_Prieur-roquefort.wav/LL-Q150_%28fra%29-Beno%C3%AEt_Prieur-roquefort.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/6/64/LL-Q150_%28fra%29-Mecanautes-roquefort.wav/LL-Q150_%28fra%29-Mecanautes-roquefort.wav.ogg" + ] + } + } + ], + "anarchie": [ + { + "etymology": "(Date \u00e0 pr\u00e9ciser) Du latin anarchia et du grec ancien \u1f00\u03bd\u03b1\u03c1\u03c7\u03af\u03b1, anarch\u00eda. Ce mot est construit \u00e0 partir du pr\u00e9fixe \u00ab\u00a0an-\u00a0\u00bb (\u00ab\u00a0priv\u00e9 de\u00a0\u00bb) auquel est ajout\u00e9 le suffixe \u00ab\u00a0-archie\u00a0\u00bb (\u00ab\u00a0pouvoir\u00a0\u00bb ou \u00ab\u00a0commandement\u00a0\u00bb).", + "definitions": [ + { + "partOfSpeech": "nom commun", + "text": [ + "anarchie \\a.na\u0281.\u0283i\\ f\u00e9minin", + "Forme d\u2019organisation politique, d\u00e9finie par l\u2019absence d\u2019autorit\u00e9 centralis\u00e9e.", + "Absence totale d\u2019autorit\u00e9 politique ou de gouvernement.", + "Absence de hi\u00e9rarchie, de pouvoir et d\u2019autorit\u00e9.", + "Confusion et discorde politique.", + "D\u00e9sordre, manque d\u2019organisation.", + "Absence de r\u00e8gles ou de loi." + ], + "relatedWords": [ + { + "relationshipType": "quasi-synonymes", + "words": [ + "anomie (5)" + ] + }, + { + "relationshipType": "antonymes", + "words": [ + "dictature" + ] + }, + { + "relationshipType": "d\u00e9riv\u00e9s", + "words": [ + "anarchosyndicalisme", + "anarcho-communisme", + "anarcho-fasciste", + "anarcho-f\u00e9minisme, anarcha-f\u00e9minisme", + "anarcho-punk", + "anarcho-romantique" + ] + }, + { + "relationshipType": "apparent\u00e9s \u00e9tymologiques", + "words": [ + "anarchique", + "anarchisme", + "anarchiste" + ] + } + ], + "examples": [] + } + ], + "pronunciations": { + "text": [ + "La prononciation \\a.na\u0281.\u0283i\\ rime avec les mots qui finissent en \\\u0283i\\.", + "France\u00a0: \u00e9couter \u00ab\u00a0une anarchie [yn\u203fnana\u0281\u0283i]\u00a0\u00bb", + "France\u00a0: \u00e9couter \u00ab\u00a0anarchie [Prononciation\u00a0?]\u00a0\u00bb", + "France (Paris)\u00a0: \u00e9couter \u00ab\u00a0anarchie [Prononciation\u00a0?]\u00a0\u00bb", + "France (Paris)\u00a0: \u00e9couter \u00ab\u00a0anarchie [Prononciation\u00a0?]\u00a0\u00bb", + "Suisse (canton du Valais)\u00a0: \u00e9couter \u00ab\u00a0anarchie [Prononciation\u00a0?]\u00a0\u00bb", + "France (Vosges)\u00a0: \u00e9couter \u00ab\u00a0anarchie [Prononciation\u00a0?]\u00a0\u00bb", + "France (Saint-\u00c9tienne)\u00a0: \u00e9couter \u00ab\u00a0anarchie [Prononciation\u00a0?]\u00a0\u00bb", + "France (Vosges)\u00a0: \u00e9couter \u00ab\u00a0anarchie [Prononciation\u00a0?]\u00a0\u00bb" + ], + "audio": [ + "//upload.wikimedia.org/wikipedia/commons/a/a6/Fr-anarchie.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/a/a5/LL-Q150_%28fra%29-Fhala.K-anarchie.wav/LL-Q150_%28fra%29-Fhala.K-anarchie.wav.mp3", + "//upload.wikimedia.org/wikipedia/commons/transcoded/f/f0/LL-Q150_%28fra%29-GrandCelinien-anarchie.wav/LL-Q150_%28fra%29-GrandCelinien-anarchie.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/5/5c/LL-Q150_%28fra%29-Exilexi-anarchie.wav/LL-Q150_%28fra%29-Exilexi-anarchie.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/0/0b/LL-Q150_%28fra%29-DSwissK-anarchie.wav/LL-Q150_%28fra%29-DSwissK-anarchie.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/6/6b/LL-Q150_%28fra%29-Poslovitch-anarchie.wav/LL-Q150_%28fra%29-Poslovitch-anarchie.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/e/e4/LL-Q150_%28fra%29-Touam-anarchie.wav/LL-Q150_%28fra%29-Touam-anarchie.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/f/f7/LL-Q150_%28fra%29-LoquaxFR-anarchie.wav/LL-Q150_%28fra%29-LoquaxFR-anarchie.wav.mp3" + ] + } + } + ], + "\u00e9chelle": [ + { + "etymology": "Du latin scala, apparent\u00e9 \u00e0 escale (\u00ab\u00a0lieu o\u00f9 l\u2019on descend\u00a0\u00bb), escalier, \u00e9chantillon et les mots scander, descendre, descente, ascension, etc.", + "definitions": [ + { + "partOfSpeech": "nom commun", + "text": [ + "\u00e9chelle \\e.\u0283\u025bl\\ f\u00e9minin", + "Dispositif permettant de monter et descendre, g\u00e9n\u00e9ralement compos\u00e9 de deux montants de bois ou de m\u00e9tal munis de barreaux dispos\u00e9s \u00e0 intervalles r\u00e9guliers.", + "(Par analogie) Ensemble d'\u00e9l\u00e9ments dispos\u00e9s comme les barreaux d'une \u00e9chelle, en particulier dans les domaines de la couture et de la dentelle.", + "Proportion de taille entre la repr\u00e9sentation d\u2019une chose et la chose repr\u00e9sent\u00e9e.", + "\u00c9chelonnement ou graduation utilis\u00e9s pour mesurer une grandeur.", + "Escale, port o\u00f9 il est possible d\u2019embarquer et de d\u00e9barquer des marchandises.", + "Niveau, grandeur, proportion.", + "(Jeux) Dans les jeux de guerre, d\u00e9signe l'ampleur du conflit simul\u00e9.", + "discipline acrobatique du cirque." + ], + "relatedWords": [ + { + "relationshipType": "d\u00e9riv\u00e9s", + "words": [ + "\u00e0 grande \u00e9chelle", + "abaque d\u2019\u00e9chelle", + "au bas de l\u2019\u00e9chelle", + "bas de l\u2019\u00e9chelle", + "carte a\u00e9ronautique de navigation \u00e0 petite \u00e9chelle", + "carton \u00e0 \u00e9chelle agrandie", + "carton \u00e0 \u00e9chelle r\u00e9duite", + "changer d\u2019\u00e9chelle", + "courte \u00e9chelle", + "\u00e9chelle \u00e0 cage", + "\u00e9chelle \u00e0 crinoline", + "\u00e9chelle \u00e0 poissons", + "\u00e9chelle \u00e0 saumons", + "\u00e9chelle altim\u00e9trique", + "\u00e9chelle caract\u00e9ristique", + "\u00e9chelle cartographique", + "\u00e9chelle coulissante", + "\u00e9chelle courte", + "\u00e9chelle de Beaufort", + "\u00e9chelle de Bristol", + "\u00e9chelle de corde", + "\u00e9chelle de cotation", + "\u00e9chelle de couleurs", + "\u00e9chelle de coup\u00e9e", + "\u00e9chelle de Glasgow", + "\u00e9chelle de Jacob", + "\u00e9chelle de Kardachev", + "\u00e9chelle de Medvedev-Sponheuer-Karnik", + "\u00e9chelle de meunier", + "\u00e9chelle de Mohs (\u00e9chelonnement utilis\u00e9 pour mesurer la duret\u00e9 des min\u00e9raux)", + "\u00e9chelle de Papou", + "\u00e9chelle de pente", + "\u00e9chelle de Richter", + "\u00e9chelle de Saffir-Simpson", + "\u00e9chelle de Scoville", + "\u00e9chelle de teintes bathym\u00e9triques", + "\u00e9chelle de teintes hypsom\u00e9triques", + "\u00e9chelle des dixmes", + "\u00e9chelle des \u00eatres (s\u00e9rie non interrompue d\u2019\u00eatres qui s\u2019\u00e9l\u00e8vent depuis la mati\u00e8re brute et les plus simples des \u00eatres organis\u00e9s jusqu\u2019aux plus parfaits)", + "\u00e9chelle des hauteurs", + "\u00e9chelle des longueurs", + "\u00e9chelle des surfaces", + "\u00e9chelle double", + "\u00e9chelle graphique", + "\u00e9chelle hydrom\u00e9trique (graduation qui permet de suivre l\u2019\u00e9volution du niveau d\u2019un court d\u2019eau)", + "\u00e9chelle INES", + "\u00e9chelle internationale des \u00e9v\u00e8nements nucl\u00e9aires", + "\u00e9chelle internationale des \u00e9v\u00e8nements nucl\u00e9aires et radiologiques", + "\u00e9chelle limite", + "\u00e9chelle locale", + "\u00e9chelle logarithmique", + "\u00e9chelle longue", + "\u00e9chelle Medvedev-Sponheuer-Karnik", + "\u00e9chelle m\u00e9trique", + "\u00e9chelle mobile (syst\u00e8me fiscal)", + "\u00e9chelle MSK", + "\u00e9chelle nominale", + "\u00e9chelle planim\u00e9trique", + "\u00e9chelles du Levant", + "\u00e9chelle VEI", + "\u00e9conomie d\u2019\u00e9chelle", + "en \u00e9chelle", + "facteur de r\u00e9duction d\u2019\u00e9chelle", + "grande \u00e9chelle", + "r\u00e9gulation \u00e0 partage d\u2019\u00e9chelle", + "sur une grande \u00e9chelle", + "tirer l\u2019\u00e9chelle" + ] + }, + { + "relationshipType": "apparent\u00e9s \u00e9tymologiques", + "words": [ + "\u00e9cheler", + "\u00e9chellement", + "\u00e9chelon", + "\u00e9chelonnement", + "\u00e9chelonner", + "r\u00e9\u00e9cheler" + ] + }, + { + "relationshipType": "hyponymes", + "words": [ + "escarmouche, subtactique", + "tactique", + "op\u00e9rationnel", + "strat\u00e9gique" + ] + }, + { + "relationshipType": "proverbes et phrases toutes faites", + "words": [ + "apr\u00e8s lui il faut tirer l\u2019\u00e9chelle (il a si bien fait en quelque chose, que personne ne peut faire mieux. S\u2019emploie aussi ironiquement par antiphrase)" + ] + } + ], + "examples": [] + } + ], + "pronunciations": { + "text": [ + "France\u00a0: \u00e9couter \u00ab\u00a0\u00e9chelle [e.\u0283\u025bl]\u00a0\u00bb", + "France (Paris)\u00a0: \u00e9couter \u00ab\u00a0\u00e9chelle [Prononciation\u00a0?]\u00a0\u00bb", + "France (Paris)\u00a0: \u00e9couter \u00ab\u00a0\u00e9chelle [Prononciation\u00a0?]\u00a0\u00bb", + "France (Paris)\u00a0: \u00e9couter \u00ab\u00a0\u00e9chelle [Prononciation\u00a0?]\u00a0\u00bb", + "France (Paris)\u00a0: \u00e9couter \u00ab\u00a0\u00e9chelle [Prononciation\u00a0?]\u00a0\u00bb", + "(R\u00e9gion \u00e0 pr\u00e9ciser)\u00a0: \u00e9couter \u00ab\u00a0\u00e9chelle [Prononciation\u00a0?]\u00a0\u00bb", + "France (Paris)\u00a0: \u00e9couter \u00ab\u00a0\u00e9chelle [Prononciation\u00a0?]\u00a0\u00bb", + "France (Vosges)\u00a0: \u00e9couter \u00ab\u00a0\u00e9chelle [Prononciation\u00a0?]\u00a0\u00bb", + "France (Lyon)\u00a0: \u00e9couter \u00ab\u00a0\u00e9chelle [Prononciation\u00a0?]\u00a0\u00bb", + "Suisse (Lausanne)\u00a0: \u00e9couter \u00ab\u00a0\u00e9chelle [Prononciation\u00a0?]\u00a0\u00bb" + ], + "audio": [ + "//upload.wikimedia.org/wikipedia/commons/7/7c/Fr-%C3%A9chelle.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/a/a5/LL-Q150_%28fra%29-Aemines1-%C3%A9chelle.wav/LL-Q150_%28fra%29-Aemines1-%C3%A9chelle.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/b/bd/LL-Q150_%28fra%29-Aemines2-%C3%A9chelle.wav/LL-Q150_%28fra%29-Aemines2-%C3%A9chelle.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/5/5b/LL-Q150_%28fra%29-Aemines3-%C3%A9chelle.wav/LL-Q150_%28fra%29-Aemines3-%C3%A9chelle.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/f/fe/LL-Q150_%28fra%29-Aemines5-%C3%A9chelle.wav/LL-Q150_%28fra%29-Aemines5-%C3%A9chelle.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/8/85/LL-Q150_%28fra%29-Aemines4-%C3%A9chelle.wav/LL-Q150_%28fra%29-Aemines4-%C3%A9chelle.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/4/4c/LL-Q150_%28fra%29-Aemines6-%C3%A9chelle.wav/LL-Q150_%28fra%29-Aemines6-%C3%A9chelle.wav.mp3", + "//upload.wikimedia.org/wikipedia/commons/transcoded/6/6e/LL-Q150_%28fra%29-LoquaxFR-%C3%A9chelle.wav/LL-Q150_%28fra%29-LoquaxFR-%C3%A9chelle.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/a/a3/LL-Q150_%28fra%29-WikiLucas00-%C3%A9chelle.wav/LL-Q150_%28fra%29-WikiLucas00-%C3%A9chelle.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/f/f7/LL-Q150_%28fra%29-Eihel-%C3%A9chelle.wav/LL-Q150_%28fra%29-Eihel-%C3%A9chelle.wav.ogg" + ] + } + } + ] + }, + "Italien": { + "anarchie": [ + { + "etymology": "(Date \u00e0 pr\u00e9ciser) Du latin anarchia et du grec ancien \u1f00\u03bd\u03b1\u03c1\u03c7\u03af\u03b1, anarch\u00eda. Ce mot est construit \u00e0 partir du pr\u00e9fixe \u00ab\u00a0an-\u00a0\u00bb (\u00ab\u00a0priv\u00e9 de\u00a0\u00bb) auquel est ajout\u00e9 le suffixe \u00ab\u00a0-archie\u00a0\u00bb (\u00ab\u00a0pouvoir\u00a0\u00bb ou \u00ab\u00a0commandement\u00a0\u00bb).", + "definitions": [], + "pronunciations": { + "text": [ + "La prononciation \\a.na\u0281.\u0283i\\ rime avec les mots qui finissent en \\\u0283i\\.", + "France\u00a0: \u00e9couter \u00ab\u00a0une anarchie [yn\u203fnana\u0281\u0283i]\u00a0\u00bb", + "France\u00a0: \u00e9couter \u00ab\u00a0anarchie [Prononciation\u00a0?]\u00a0\u00bb", + "France (Paris)\u00a0: \u00e9couter \u00ab\u00a0anarchie [Prononciation\u00a0?]\u00a0\u00bb", + "France (Paris)\u00a0: \u00e9couter \u00ab\u00a0anarchie [Prononciation\u00a0?]\u00a0\u00bb", + "Suisse (canton du Valais)\u00a0: \u00e9couter \u00ab\u00a0anarchie [Prononciation\u00a0?]\u00a0\u00bb", + "France (Vosges)\u00a0: \u00e9couter \u00ab\u00a0anarchie [Prononciation\u00a0?]\u00a0\u00bb", + "France (Saint-\u00c9tienne)\u00a0: \u00e9couter \u00ab\u00a0anarchie [Prononciation\u00a0?]\u00a0\u00bb", + "France (Vosges)\u00a0: \u00e9couter \u00ab\u00a0anarchie [Prononciation\u00a0?]\u00a0\u00bb" + ], + "audio": [ + "//upload.wikimedia.org/wikipedia/commons/a/a6/Fr-anarchie.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/a/a5/LL-Q150_%28fra%29-Fhala.K-anarchie.wav/LL-Q150_%28fra%29-Fhala.K-anarchie.wav.mp3", + "//upload.wikimedia.org/wikipedia/commons/transcoded/f/f0/LL-Q150_%28fra%29-GrandCelinien-anarchie.wav/LL-Q150_%28fra%29-GrandCelinien-anarchie.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/5/5c/LL-Q150_%28fra%29-Exilexi-anarchie.wav/LL-Q150_%28fra%29-Exilexi-anarchie.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/0/0b/LL-Q150_%28fra%29-DSwissK-anarchie.wav/LL-Q150_%28fra%29-DSwissK-anarchie.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/6/6b/LL-Q150_%28fra%29-Poslovitch-anarchie.wav/LL-Q150_%28fra%29-Poslovitch-anarchie.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/e/e4/LL-Q150_%28fra%29-Touam-anarchie.wav/LL-Q150_%28fra%29-Touam-anarchie.wav.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/f/f7/LL-Q150_%28fra%29-LoquaxFR-anarchie.wav/LL-Q150_%28fra%29-LoquaxFR-anarchie.wav.mp3" + ] + } + } + ] + }, + "Anglais": { + "song": [ + { + "etymology": "D\u00e9verbal de sing (\u00ab\u00a0chanter\u00a0\u00bb).", + "definitions": [ + { + "partOfSpeech": "nom commun", + "text": [ + "song \\\u02c8s\u0254\u014b\\ ou \\\u02c8s\u0251\u014b\\ (\u00c9tats-Unis), \\\u02c8s\u0252\u014b\\ (Royaume-Uni)", + "Chant des oiseaux.", + "(Musique) Chanson." + ], + "relatedWords": [ + { + "relationshipType": "d\u00e9riv\u00e9s", + "words": [ + "birdsong", + "for a song", + "go for a song", + "songwriter", + "songwriting" + ] + } + ], + "examples": [] + } + ], + "pronunciations": { + "text": [ + "\\\u02c8s\u0254\u014b\\, \\\u02c8s\u0251\u014b\\ (\u00c9tats-Unis)", + "\u00c9tats-Unis\u00a0: \u00e9couter \u00ab\u00a0song [s\u0254\u014b]\u00a0\u00bb", + "\\\u02c8s\u0252\u014b\\ (Royaume-Uni)", + "Royaume-Uni (Londres)\u00a0: \u00e9couter \u00ab\u00a0song [Prononciation\u00a0?]\u00a0\u00bb" + ], + "audio": [ + "//upload.wikimedia.org/wikipedia/commons/f/f1/En-us-song.ogg", + "//upload.wikimedia.org/wikipedia/commons/transcoded/b/b1/LL-Q1860_%28eng%29-Back_ache-song.wav/LL-Q1860_%28eng%29-Back_ache-song.wav.ogg" + ] + } + } + ] + } +} \ No newline at end of file diff --git a/tests/test_core.py b/tests/test_core_en.py similarity index 94% rename from tests/test_core.py rename to tests/test_core_en.py index 546e0b6..7a740e9 100644 --- a/tests/test_core.py +++ b/tests/test_core_en.py @@ -4,7 +4,7 @@ from wiktionaryparser import WiktionaryParser from deepdiff import DeepDiff from typing import Dict, List -import mock +from unittest import mock from urllib import parse import os @@ -12,7 +12,8 @@ tests_dir = os.path.dirname(__file__) -html_test_files_dir = os.path.join(tests_dir, 'html_test_files') +html_test_files_dir = os.path.join(tests_dir, 'html_test_files_en') +output_test_json = os.path.join(tests_dir, "testOutput_en.json") markup_test_files_dir = os.path.join(tests_dir, 'markup_test_files') test_words = [ @@ -74,7 +75,7 @@ class TestParser(unittest.TestCase): def __init__(self, *args, **kwargs): self.expected_results = {} - with open('tests/testOutput.json', 'r') as f: + with open(output_test_json, 'r') as f: self.expected_results = json.load(f) super(TestParser, self).__init__(*args, **kwargs) diff --git a/tests/test_core_fr.py b/tests/test_core_fr.py new file mode 100644 index 0000000..4b85165 --- /dev/null +++ b/tests/test_core_fr.py @@ -0,0 +1,92 @@ +from parameterized import parameterized +import unittest +import json +from wiktionaryparser import WiktionaryParser +from deepdiff import DeepDiff +from typing import Dict, List +from unittest import mock +from urllib import parse +import os + +parser = WiktionaryParser(language="français") + + +tests_dir = os.path.dirname(__file__) +html_test_files_dir = os.path.join(tests_dir, 'html_test_files_fr') +output_test_json = os.path.join(tests_dir, "testOutput_fr.json") + +test_words = [ + ('anarchie', 20220207, ['Français']), + ('anarchie', 20220207, ['Italien']), + ('échelle', 20220207, ['Français']), + ('roquefort', 20220207, ['Français']), + ('song', 20220207, ['Anglais']), +] + + +def get_test_words_table(*allowed_words): + """Convert the test_words array to an array of three element tuples.""" + result = [] + + for word, old_id, languages in test_words: + for language in languages: + if len(allowed_words) == 0 or (word in allowed_words): + result.append((language, word, old_id)) + + return result + + +class MockResponse: + def __init__(self, text: str): + self.text = text + + +def mocked_requests_get(*args, **kwargs): + url = args[0] + parsed_url = parse.urlparse(url) + params = kwargs['params'] + + word = parsed_url.path.split('/')[-1] + filepath = os.path.join(html_test_files_dir, + f'{word}-{params["oldid"]}.html') + with open(filepath, 'r', encoding='utf-8') as f: + text = f.read() + + return MockResponse(text) + + +class TestParser(unittest.TestCase): + def __init__(self, *args, **kwargs): + self.expected_results = {} + + with open(output_test_json, 'r') as f: + self.expected_results = json.load(f) + + super(TestParser, self).__init__(*args, **kwargs) + + @parameterized.expand(get_test_words_table()) + @mock.patch("requests.Session.get", side_effect=mocked_requests_get) + def test_fetch_using_mock_session(self, lang: str, word: str, old_id: int, mock_get): + self.__test_fetch(lang, word, old_id) + + def __test_fetch(self, lang: str, word: str, old_id: int): + fetched_word = parser.fetch(word, language=lang, old_id=old_id) + + print("Testing \"{}\" in \"{}\"".format(word, lang)) + expected_result = self.expected_results[lang][word] + + diff = DeepDiff(fetched_word, + expected_result, + ignore_order=True) + + if diff != {}: + print("Found mismatch in \"{}\" in \"{}\"".format(word, lang)) + print(json.dumps(json.loads(diff.to_json()), indent=4)) + print("Actual result:") + print(json.dumps(fetched_word, indent=4)) + + self.assertEqual(diff, {}) + + +if __name__ == '__main__': + unittest.main() diff --git a/wiktionaryparser/__init__.py b/wiktionaryparser/__init__.py index bec60b4..c3752e9 100644 --- a/wiktionaryparser/__init__.py +++ b/wiktionaryparser/__init__.py @@ -1,11 +1,13 @@ +from pkg_resources import get_distribution +__version__ = get_distribution("wiktionaryparser").version + from wiktionaryparser.utils import WordData, Definition, RelatedWord -from wiktionaryparser.core import PARTS_OF_SPEECH, RELATIONS, WiktionaryParser +from wiktionaryparser.core import WiktionaryParser + __all__ = [ 'WordData', 'Definition', 'RelatedWord', - 'PARTS_OF_SPEECH', - 'RELATIONS', 'WiktionaryParser' ] diff --git a/wiktionaryparser/core.py b/wiktionaryparser/core.py index 49f6617..793c15e 100644 --- a/wiktionaryparser/core.py +++ b/wiktionaryparser/core.py @@ -1,25 +1,11 @@ import re, requests from wiktionaryparser.utils import WordData, Definition, RelatedWord +from wiktionaryparser.languages import abbreviation_to_language, get_language + from bs4 import BeautifulSoup from itertools import zip_longest -from copy import copy from string import digits -PARTS_OF_SPEECH = [ - "noun", "verb", "adjective", "adverb", "determiner", - "article", "preposition", "conjunction", "proper noun", - "letter", "character", "phrase", "proverb", "idiom", - "symbol", "syllable", "numeral", "initialism", "interjection", - "definitions", "pronoun", "particle", "predicative", "participle", - "suffix", -] - -RELATIONS = [ - "synonyms", "antonyms", "hypernyms", "hyponyms", - "meronyms", "holonyms", "troponyms", "related terms", - "coordinate terms", -] - def is_subheading(child, parent): child_headings = child.split(".") parent_headings = parent.split(".") @@ -31,17 +17,17 @@ def is_subheading(child, parent): return True class WiktionaryParser(object): - def __init__(self): - self.url = "https://en.wiktionary.org/wiki/{}?printable=yes" + def __init__(self, language: str="english"): + self.language = abbreviation_to_language(str(language)) + self.current_word = None self.soup = None + self.PARTS_OF_SPEECH, self.RELATIONS, \ + self.ETYMOLOGY, self.PRONUNCIATION, self.url = get_language(self.language) self.session = requests.Session() self.session.mount("http://", requests.adapters.HTTPAdapter(max_retries = 2)) self.session.mount("https://", requests.adapters.HTTPAdapter(max_retries = 2)) - self.language = 'english' - self.current_word = None - self.PARTS_OF_SPEECH = copy(PARTS_OF_SPEECH) - self.RELATIONS = copy(RELATIONS) - self.INCLUDED_ITEMS = self.RELATIONS + self.PARTS_OF_SPEECH + ['etymology', 'pronunciation'] + self.INCLUDED_ITEMS = self.RELATIONS + self.PARTS_OF_SPEECH \ + + self.ETYMOLOGY + self.PRONUNCIATION def include_part_of_speech(self, part_of_speech): part_of_speech = part_of_speech.lower() @@ -85,9 +71,9 @@ def count_digits(self, string): def get_id_list(self, contents, content_type): if content_type == 'etymologies': - checklist = ['etymology'] + checklist = self.ETYMOLOGY elif content_type == 'pronunciation': - checklist = ['pronunciation'] + checklist = self.PRONUNCIATION elif content_type == 'definitions': checklist = self.PARTS_OF_SPEECH if self.language == 'chinese': @@ -222,12 +208,16 @@ def parse_etymologies(self, word_contents): next_tag = span_tag.parent.find_next_sibling() while next_tag and next_tag.name not in ['h3', 'h4', 'div', 'h5']: etymology_tag = next_tag + etymology_tag_text = '' next_tag = next_tag.find_next_sibling() if etymology_tag.name == 'p': - etymology_text += etymology_tag.text + etymology_tag_text += etymology_tag.text + elif etymology_tag.name in ['dd', 'dl']: + etymology_tag_text += etymology_tag.text else: for list_tag in etymology_tag.find_all('li'): - etymology_text += list_tag.text + '\n' + etymology_tag_text += list_tag.text + '\n' + etymology_text += etymology_tag_text etymology_list.append((etymology_index, etymology_text)) return etymology_list diff --git a/wiktionaryparser/languages.py b/wiktionaryparser/languages.py new file mode 100644 index 0000000..76e1f17 --- /dev/null +++ b/wiktionaryparser/languages.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Language tools, to change the language in the WiktionaryParser class +""" + +ABBREVIATION_TO_LANGUAGE = { + 'en': 'english', + "fr": 'français', + } + +LANGUAGES = { + "english": { + "ETYMOLOGIES_HEADER": [ + 'etymology', + ], + "PRONUNCIATION_HEADER": [ + 'pronunciation', + ], + "PART_OF_SPEECH": [ + "noun", "verb", "adjective", "adverb", "determiner", + "article", "preposition", "conjunction", "proper noun", + "letter", "character", "phrase", "proverb", "idiom", + "symbol", "syllable", "numeral", "initialism", "interjection", + "definitions", "pronoun", "particle", "predicative", "participle", + "suffix", + ], + "RELATIONS": [ + "synonyms", "antonyms", "hypernyms", "hyponyms", + "meronyms", "holonyms", "troponyms", "related terms", + "coordinate terms", + ], + "URL": "https://en.wiktionary.org/wiki/{}?printable=yes", + }, + "français": { + "ETYMOLOGIES_HEADER": [ + 'étymologie', + ], + "PRONUNCIATION_HEADER": [ + 'prononciation', + ], + "PART_OF_SPEECH": [ + "nom commun", "verbe", "adjectif", "adverbe", "déterminant", + "article", "preposition", "conjonction", "nom propre", + "lettre", "caractère", "expression", "proverbe", "idiome", + "symbole", "syllabe", "nombre", "acronyme", "interjection", + "définitions", "pronom", "particule", "prédicat", "participe", + "suffixe", "locution nominale", + ], + "RELATIONS": [ + "synonymes", "antonymes", "hypéronymes", "hyponymes", + "méronymes", "holonymes", "paronymes", "troponymes", + "vocabulaire apparenté par le sens", "dérivés", + "anagrammes", "proverbes et phrases toutes faites", + "apparentés étymologiques", "quasi-synonymes", + ], + "URL": "https://fr.wiktionary.org/wiki/{}?printable=yes", + }, +} + +def abbreviation_to_language(language="en"): + """In case one gives an international code (e.g. 'en' for England/English), + this method transforms the international code to the language name, + according to the dictionnary `COUNTRY_TO_LANGUAGE`, (e.g. returns "english") + """ + try: + language = ABBREVIATION_TO_LANGUAGE[language] + except KeyError: + pass + return language + +def get_language(language="english"): + """Exports the part of speech, relations, etymology, + pronunciation and url of the given language, according to the + LANGUAGES dictionnary above.""" + pos = LANGUAGES.get(language, {}).get("PART_OF_SPEECH", []) + rel = LANGUAGES.get(language, {}).get("RELATIONS", []) + ety = LANGUAGES.get(language, {}).get("ETYMOLOGIES_HEADER", []) + pronun = LANGUAGES.get(language, {}).get("PRONUNCIATION_HEADER", []) + url = LANGUAGES.get(language, {}).get("URL", "") + return pos, rel, ety, pronun, url