Penelope est un multi-outil permettant de créer, d'éditer et de convertir des dictionnaires, notamment pour les appareils eReader.
Avec la version actuelle, vous pouvez :
bookeen
uniquement)Ouvrez une console et tapez :
$ [sudo] pip install penelope
C'est ça! Exécutez simplement sans arguments (ou avec -h
ou --help
) pour obtenir le manuel :
$ penelope
Cette procédure installera lxml
et marisa-trie
. Vous devrez peut-être installer dictzip
(sortie StarDict) et kindlegen
(sortie MOBI) séparément, voir ci-dessous.
Récupérez le code source :
clonez ce dépôt avec git
:
$ git clone https://github.com/pettarin/penelope.git
ou téléchargez la dernière version et décompressez-la quelque part,
ou téléchargez le ZIP principal actuel et décompressez-le quelque part.
Ouvrez une console et entrez dans le répertoire penelope
(cloné) :
$ cd /path/to/penelope
C'est ça! Exécutez simplement sans arguments (ou avec -h
ou --help
) pour obtenir le manuel :
$ python -m penelope
Cette procédure n'installera aucune dépendance : vous devrez le faire manuellement, voir ci-dessous.
Python, version 2.7.x ou 3.4.x (ou supérieure)
pour écrire des dictionnaires StarDict : l'exécutable dictzip
, disponible dans votre $PATH
ou spécifié avec --dictzip-path
:
$ [sudo] apt-get install dictzip
pour lire/écrire des dictionnaires Kobo : le module Python marisa-trie
:
$ [sudo] pip install marisa-trie
ou exécutables MARISA disponibles dans votre $PATH
ou spécifiés avec --marisa-bin-path
pour écrire des dictionnaires Kindle MOBI : l'exécutable kindlegen, disponible dans votre $PATH
ou spécifié avec --kindlegen-path
pour lire/écrire des dictionnaires XML : le module Python lxml
:
$ [sudo] pip install lxml
usage:
$ penelope -h
$ penelope -i INPUT_FILE -j INPUT_FORMAT -f LANGUAGE_FROM -t LANGUAGE_TO -p OUTPUT_FORMAT -o OUTPUT_FILE [OPTIONS]
$ penelope -i IN1,IN2[,IN3...] -j INPUT_FORMAT -f LANGUAGE_FROM -t LANGUAGE_TO -p OUTPUT_FORMAT -o OUTPUT_FILE [OPTIONS]
description:
Convert dictionary file(s) with file name prefix INPUT_FILE from format INPUT_FORMAT to format OUTPUT_FORMAT, saving it as OUTPUT_FILE.
The dictionary is from LANGUAGE_FROM to LANGUAGE_TO, possibly the same.
You can merge several dictionaries (with the same format), by providing a list of comma-separated prefixes, as shown by the third synopsis above.
optional arguments:
-h, --help show this help message and exit
-d, --debug enable debug mode (default: False)
-f LANGUAGE_FROM, --language-from LANGUAGE_FROM
from language (ISO 639-1 code)
-i INPUT_FILE, --input-file INPUT_FILE
input file name prefix(es). Multiple prefixes must be
comma-separated.
-j INPUT_FORMAT, --input-format INPUT_FORMAT
from format (values: bookeen|csv|kobo|stardict|xml)
-k, --keep keep temporary files (default: False)
-o OUTPUT_FILE, --output-file OUTPUT_FILE
output file name
-p OUTPUT_FORMAT, --output-format OUTPUT_FORMAT
to format (values:
bookeen|csv|epub|kobo|mobi|stardict|xml)
-t LANGUAGE_TO, --language-to LANGUAGE_TO
to language (ISO 639-1 code)
-v, --version print version and exit
--author AUTHOR author string
--copyright COPYRIGHT
copyright string
--cover-path COVER_PATH
path of the cover image file
--description DESCRIPTION
description string
--email EMAIL email string
--identifier IDENTIFIER
identifier string
--license LICENSE license string
--title TITLE title string
--website WEBSITE website string
--year YEAR year string
--apply-css APPLY_CSS
apply the given CSS file (epub and mobi output only)
--bookeen-collation-function BOOKEEN_COLLATION_FUNCTION
use the specified collation function
--bookeen-install-file
create *.install file (default: False)
--csv-fs CSV_FS CSV field separator (default: ',')
--csv-ignore-first-line
ignore the first line of the input CSV file(s)
(default: False)
--csv-ls CSV_LS CSV line separator (default: 'n')
--dictzip-path DICTZIP_PATH
path to dictzip executable
--epub-no-compress do not create the compressed container (epub output
only, default: False)
--escape-strings escape HTML strings (default: False)
--flatten-synonyms flatten synonyms, creating a new entry with
headword=synonym and using the definition of the
original headword (default: False)
--group-by-prefix-function GROUP_BY_PREFIX_FUNCTION
compute the prefix of headwords using the given prefix
function file
--group-by-prefix-length GROUP_BY_PREFIX_LENGTH
group headwords by prefix of given length (default: 2)
--group-by-prefix-merge-across-first
merge headword groups even when the first character
changes (default: False)
--group-by-prefix-merge-min-size GROUP_BY_PREFIX_MERGE_MIN_SIZE
merge headword groups until the given minimum number
of headwords is reached (default: 0, meaning no merge
will take place)
--ignore-case ignore headword case, all headwords will be lowercased
(default: False)
--ignore-synonyms ignore synonyms, not reading/writing them if present
(default: False)
--include-index-page include an index page (epub and mobi output only,
default: False)
--input-file-encoding INPUT_FILE_ENCODING
use the specified encoding for reading the raw
contents of input file(s) (default: 'utf-8')
--input-parser INPUT_PARSER
use the specified parser function after reading the
raw contents of input file(s)
--kindlegen-path KINDLEGEN_PATH
path to kindlegen executable
--marisa-bin-path MARISA_BIN_PATH
path to MARISA bin directory
--marisa-index-size MARISA_INDEX_SIZE
maximum size of the MARISA index (default: 1000000)
--merge-definitions merge definitions for the same headword (default:
False)
--merge-separator MERGE_SEPARATOR
add this string between merged definitions (default: '
| ')
--mobi-no-kindlegen do not run kindlegen, keep .opf and .html files
(default: False)
--no-definitions do not output definitions for EPUB and MOBI formats
(default: False)
--sd-ignore-sametypesequence
ignore the value of sametypesequence in StarDict .ifo
files (default: False)
--sd-no-dictzip do not compress the .dict file in StarDict files
(default: False)
--sort-after sort after merging/flattening (default: False)
--sort-before sort before merging/flattening (default: False)
--sort-by-definition sort by definition (default: False)
--sort-by-headword sort by headword (default: False)
--sort-ignore-case ignore case when sorting (default: False)
--sort-reverse reverse the sort order (default: False)
examples:
$ penelope -i dict.csv -j csv -f en -t it -p stardict -o output.zip
Convert en->it dictionary dict.csv (in CSV format) into output.zip (in StarDict format)
$ penelope -i dict.csv -j csv -f en -t it -p stardict -o output.zip --merge-definitions
As above, but also merge definitions
$ penelope -i d1,d2,d3 -j csv -f en -t it -p csv -o output.csv --sort-after --sort-by-headword
Merge CSV dictionaries d1, d2, and d3 into output.csv, sorting by headword
$ penelope -i d1,d2,d3 -j csv -f en -t it -p csv -o output.csv --sort-after --sort-by-headword --sort-ignore-case
As above, but ignore case for sorting
$ penelope -i d1,d2,d3 -j csv -f en -t it -p csv -o output.csv --sort-after --sort-by-headword --sort-reverse
As above, but reverse the order
$ penelope -i dict.zip -j stardict -f en -t it -p csv -o output.csv
Convert en->it dictionary dict.zip (in StarDict format) into output.csv (in CSV format)
$ penelope -i dict.zip -j stardict -f en -t it -p csv -o output.csv --ignore-synonyms
As above, but do not read the .syn synonym file if present
$ penelope -i dict.zip -j stardict -f en -t it -p csv -o output.csv --flatten-synonyms
As above, but flatten synonyms
$ penelope -i dict.zip -j stardict -f en -t it -p bookeen -o output
Convert dict.zip into output.dict.idx and output.dict for Bookeen devices
$ penelope -i dict.zip -j stardict -f en -t it -p kobo -o dicthtml-en-it
Convert dict.zip into dicthtml-en-it.zip for Kobo devices
$ penelope -i dict.csv -j csv -f en -t it -p mobi -o output.mobi --cover-path mycover.png --title "My English->Italian Dictionary"
Convert dict.csv into a MOBI (Kindle) dictionary, using the specified cover image and title
$ penelope -i dict.xml -j xml -f en -t it -p mobi -o output.epub
Convert dict.xml into an EPUB dictionary
$ penelope -i dict.xml -j xml -f en -t it -p mobi -o output.epub --epub-output-definitions
As above, but also output definitions
Vous pouvez trouver les codes de langue ISO 639-1 ici.
Par exemple, supposons que vous souhaitiez utiliser un dictionnaire IT -> EN.
it-en.dict
et it-en.dict.idx
.it-en.dict
et it-en.dict.idx
de votre PC dans le répertoire Dictionaries/
de votre appareil Odyssey. Notez que le logiciel de dictionnaire Bookeen sélectionnera le dictionnaire à utiliser en lisant les métadonnées dc:language
de votre eBook. Assurez-vous que vos eBooks disposent des métadonnées dc:language
appropriées, sinon le bon dictionnaire risque de ne pas être chargé.
Au moment d'écrire ces lignes (16/02/2016), les appareils Kobo chargeront des dictionnaires uniquement si les fichiers portent le nom d'un dictionnaire Kobo officiel, à savoir :
dicthtml.zip
(FR)dicthtml-de.zip
(DE), dicthtml-de-en.zip
(DE -> EN), dicthtml-en-de.zip
(EN -> DE),dicthtml-es.zip
(ES), dicthtml-es-en.zip
(ES -> EN), dicthtml-en-es.zip
(EN -> ES),dicthtml-fr.zip
(FR), dicthtml-fr-en.zip
(FR -> EN), dicthtml-en-fr.zip
(EN -> FR),dicthtml-it.zip
(IT), dicthtml-it-en.zip
(IT -> EN), dicthtml-en-it.zip
(EN -> IT),dicthtml-nl.zip
(NL)dicthtml-ja.zip
(JA), dicthtml-en-ja.zip
(EN -> JA),dicthtml-pt.zip
(PT), dicthtml-pt-en.zip
(PT -> EN), dicthtml-en-pt.zip
(EN -> PT)(voir ce fil de discussion MobileRead)
Par conséquent, si vous souhaitez installer un dictionnaire personnalisé produit avec Penelope, vous devez choisir d'écraser l'un des dictionnaires officiels Kobo, perdant ainsi la possibilité d'utiliser ce dernier.
Par exemple, supposons que vous souhaitiez utiliser un dictionnaire polonais ( dicthtml-pl.zip
), alors que vous ne souhaitez pas utiliser le dictionnaire portugais officiel ( dicthtml-pt.zip
).
dicthtml-pl.zip
.dicthtml-pl.zip
depuis votre PC dans le répertoire .kobo/dict/
de votre appareil Kobo. (Notez que .kobo
est un répertoire caché : vous devrez peut-être activer le paramètre « afficher les fichiers/répertoires cachés » de votre gestionnaire de fichiers.)dicthtml-pl.zip
en dicthtml-pt.zip
.Notez que si vous mettez à jour le firmware de votre Kobo, les dictionnaires personnalisés peuvent être écrasés par les dictionnaires officiels. Par conséquent, conservez une copie de sauvegarde de vos dictionnaires personnalisés dans un endroit sûr, par exemple votre PC ou une carte SD.
Vous pouvez trouver une liste de dictionnaires personnalisés, principalement réalisés avec Penelope, dans ce fil de discussion MobileRead.
Penelope est publié sous licence MIT depuis la version 2.0.0 (30/06/2014).
Les versions précédentes, hébergées par Google Code, ont été publiées sous la licence GNU GPL 3.
format_stardict.py
)Un grand merci à :
dict()
au lieu de set dict()
;-l
switch vers MARISA_BUILD
;& < >
lors de la sortie au format XML ;.syn
à des fins de test.