Ajouter un dictionnaire à une liseuse Bookeen

Les liseuses Bookeen utilisent un format spécifique et peu documenté de dictionnaires. Je voulais ajouter le wiktionnaire (présent uniquement en allemand et en italien, le français utilisant par défaut le Nouveau Littré). Le blog officiel de Bookeen explique que :

To make your own dictionary, you’ll need Penelope, the free conversion tool developed by Alberto Pettarin, and graciously shared with all. It allows you to convert any StarDict or XML format dictionary for your Cybook. Thank you Pettarin!

Pour ce faire, il nous faut donc deux choses :

  1. Installer Penelope, un logiciel Python abandonné depuis 2016 : [sudo] pip install penelope.
  2. Télécharger le fichier StarDict du Wiktionnaire grâcieusement mis à jour par BoboTiG (dont j’apprécie le travail sur Pombo par ailleurs).

La génération se fait ensuite avec la ligne de commande :

penelope -i dict-fr-fr.zip -j stardict -f fr -t fr -p bookeen -o wiktionnaire
# penelope input dict-fr-fr.zip au format stardict, du français au français, pour la Bookeen, output wiktionnaire.dict.idx et wiktionnaire.dict

Problème : sur une Linux Mint 21.1, le processus crashe avec l’erreur sqlite3.OperationalError: cannot VACUUM from within a transaction. Aux alentours de la ligne 276 du fichier penelope/format_bookeen.py (qui, sur ma machine se trouve à l’emplacement /usr/local/lib/python3.10/dist-packages/penelope/format_bookeen.py), il faut entourer le sql_cursor.execute("vacuum") comme suit :

sql_connection.isolation_level = None
sql_cursor.execute("vacuum")
sql_connection.isolation_level = ''

Les deux fichiers wiktionnaire.dict.idx et wiktionnaire.dict se génèrent alors, qu’il suffit de placer dans le dossier /Dictionaries/ de la liseuse. Un redémarrage plus tard, il apparaît dans les dictionnaires sous le nom Dictionary fr to fr (fr → fr). D’autres dictionnaires sont téléchargeables sur la page de Polyglotte, mais je ne les ai pas essayés.