Cette semaine, j'ai découvert, dans la grande vague des Wordle et autres Sutom, le jeu parfait pour moi : Pedantix. Pourquoi "parfait" ? Parce que je me pique d'avoir de la culture générale, et qu'un jeu qui me permet de deviner un mot à travers sa définition m'amuse beaucoup. Je m'y suis donc mis ... une première fois

Et dès la première fois, je me suis dit que la meilleure façon de deviner les définitions était de choisir un bon ordre pour ajouter des mots dans la définition. Et pour ça, une liste des mots triés par fréquence est utile. J'ai donc utilisé successivement

Cela dit, vus mes scores (entre 200 et 300 mots pour deviner ce mot, loin derrière les meilleurs qu'on trouve sur Twitter, comme par exemple

Imaginez, 9 coups, c'est vraiment très peu.

Donc j'en suis loin. Et tant qu'à faire à être loin, pourquoi ne pas utiliser mes outils, c'est-à-dire ... le scripting !

Et comme je voulais aller vite, j'ai évidement choisi de faire ... du Python !

Résumons-nous. Il me faut

  • une liste de mots. La dernière fait l'affaire, malgré quelques étrangetés ([[�]] , nbsp, br font partie des mots très courants).
  • Un moyen d'injecter ces mots dans ma page web. Comme je ne voulais pas faire de Selenium, j'avais commencé à regardé du côté de Sikuli, qui est aussi lourd. Et Robot Framework est encore pire. En farfouillant un peu, je suis tombé sur PyAutoGUI, qui est très simple, et qui permet de détecter des éléments graphiques et d'interagir avec eux.

Et donc, c'était parti pour un petit script, qui a assez vite grossi.

https://gist.github.com/Riduidel/ea0739acb134cc51ea355bc9453e0829

Si vous lisez les commentaires, c'est assez clair. J'essaye de détecter l'image avant la zone de texte (c'est celle-ci ), l'image après la zone de texte (c'est celle-là ). je ne détecte pas la zone de texte, parce que le texte qui est dedans change quand on fait une proposition.

Ensuite, je clique dedans avec PyAutoGUI, et je copie-colle le texte. Pourquoi copier-coller ? C'est écrit dans la doc des fonctions clavier de PyAutoGUI : on ne peut pas écrire les caractères é, è, ê, à avec PyAutoGUI. Heureusement, pyperclip me permet de prendre le mot depuis mon code et de le copier dans le presse-papier, ce que Ditto montre bien

Résultat ?

Et le texte s'est bien éclairci

La grande question étant ... est-ce que je peux faire mieux ? Eh bien en fait, je crois bien, parce que Pedantix fournit une information : est-ce que le mot est utilisé ou pas. Et que mon outil de remplissage des mots courants ne me donne pas la réponse, il automatise juste le processus de découverte des mots courants. Si j'ajoute cette information des mots étant utilisés, il me semble possible d'utiliser un graphe d'usage des mots. Mais c'est encore un peu tôt pour ce genre d'optimisation, je pense.