IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Besoin d’aide dans l’utilisation d’un script Python3 «*mn3_anki_fix*»


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2021
    Messages : 3
    Par défaut Besoin d’aide dans l’utilisation d’un script Python3 «*mn3_anki_fix*»
    Bonjour à tous, j’ai conscience que mon problème est très spécifique et je ne m’attends pas à trouver une aide providentielle. Toutefois, le script Python utilisé me semble relativement simple et j’ai bon espoir qu’un connaisseur puisse m’accompagner. Étant étudiant à l’ENS j’ai aussi demandé l’aide d’étudiants en Math/info, si je trouve un volontaire je vous ferai part de ses remarques, peut-être profiteront-elles à la communauté ? Au plaisir d’échanger avec vous (et désolé pour le Pavé César) !

    J’utilise principalement deux logiciels pour la préparation de mes concours. Le premier sert à réaliser des cartes mentales et s’appelle Margin Note 3. Le second est destiné à la mémorisation et se nomme Anki. Ce dernier fonctionne sur un principe de «*Flashcards*», c’est à dire des fiches contenant d’un côté la question et de l’autre la réponse. Une fois répondu, on indique la difficulté de la question et l’algorithme se charge de planifier la prochaine révision. Il est possible depuis Margin Note 3 d’exporter ces Flashcards vers Anki sous le format .APKG

    Malheureusement cet export contient une erreur dans sa formulation du «*cloze deletion*» (texte à trou). En effet, Anki reconnait les textes à trou avec la formule suivante : {{c1::hello}} my {{c2::world}} et crée ainsi deux Flashcards, l’une masquant {{c1::hello}} et une autre masquant my {{c2::world}}.

    En exportant depuis Margin Note 3, on obtient non pas {{c1::hello}} my {{c2::world}} mais {{c1::hello}} my {{c1::world}} ce qui a pour effet, une fois importé dans Anki, de ne créer qu’une seule Flashcard, compliquant grandement les révisions (une seule fiche peut contenir des dizaines de textes à trou…). Cela, alors même que le logiciel comprend la possibilité d’exporter en c1/c2 mais dont le format (ou le code, mes compétences s’arrêtent ici) n’est plus reconnu par Anki depuis sa version 2.0 C’est justement le but du script Python3 «*mn3_anki_fix*» qui fait passer l’export Margin Note 3 : de {{c1::hello}} my {{c1::world}} à {{c1::hello}} my {{c2::world}}

    Voici sa page GitHub : https://github.com/lins05/mn3_anki_fix

    Toutefois, cela ne fonctionne pas comme attendu, j’arrive à faire fonctionner le script correctement en ne masquant pas les mots des textes à trous :

    Nom : 2.png
Affichages : 88
Taille : 1,05 Mo

    Donne alors

    Nom : 138279322-f275573a-066a-4b96-978c-c113948a43fb.png
Affichages : 82
Taille : 334,0 Ko

    Mais lorsque ceux-ci sont masqués

    Nom : 138279758-f33ef052-7b28-4c7d-9e53-ed767708a776.png
Affichages : 83
Taille : 793,3 Ko

    J'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    dhcp-181-29:mn3_anki_fix-master josephdupont$ ./fix_mn_anki_exports.py fix "/Users/josephdupont/Desktop/With.apkg"
    [10/21/2021 14:44:17][fix_mn_anki_exports]: files: ['collection.anki2', 'media']
    [10/21/2021 14:44:17][fix_mn_anki_exports]: Extracted collection.anki2 to /tmp/mn-anki-exports-fix/tmplljjj4v_
    [10/21/2021 14:44:17][fix_mn_anki_exports]: Loaded the model
    [10/21/2021 14:44:17][fix_mn_anki_exports]: Loaded 48 notes
    [10/21/2021 14:44:17][fix_mn_anki_exports]: Fixed all 48 notes
    [10/21/2021 14:44:17][fix_mn_anki_exports]: Loaded deck info: deck name = 20184556082557, id = Droit public - Chapitre 5 : les autorités indépendantes
    [10/21/2021 14:44:17][fix_mn_anki_exports]: Generating output file /tmp/output.apkg
    Traceback (most recent call last):
      File "/Users/josephdupont/Desktop/mn3_anki_fix-master/./fix_mn_anki_exports.py", line 346, in <module>
        main(obj={})
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/click/core.py", line 1128, in __call__
        return self.main(*args, **kwargs)
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/click/core.py", line 1053, in main
        rv = self.invoke(ctx)
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/click/core.py", line 1659, in invoke
        return _process_result(sub_ctx.command.invoke(sub_ctx))
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/click/core.py", line 1395, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/click/core.py", line 754, in invoke
        return __callback(*args, **kwargs)
      File "/Users/josephdupont/Desktop/mn3_anki_fix-master/./fix_mn_anki_exports.py", line 304, in fix
        _fix_path(path)
      File "/Users/josephdupont/Desktop/mn3_anki_fix-master/./fix_mn_anki_exports.py", line 317, in _fix_path
        _fix_dbfile(dbfile)
      File "/Users/josephdupont/Desktop/mn3_anki_fix-master/./fix_mn_anki_exports.py", line 56, in _fix_dbfile
        return _fix_db(db)
      File "/Users/josephdupont/Desktop/mn3_anki_fix-master/./fix_mn_anki_exports.py", line 284, in _fix_db
        genanki.Package(deck).write_to_file(OUTPUT_FILE)
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/genanki/package.py", line 29, in write_to_file
        self.write_to_db(cursor, now_ts)
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/genanki/package.py", line 49, in write_to_db
        deck.write_to_db(cursor, now_ts)
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/genanki/deck.py", line 67, in write_to_db
        note.write_to_db(cursor, now_ts, self.deck_id)
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/genanki/note.py", line 69, in write_to_db
        card.write_to_db(cursor, now_ts, deck_id, note_id)
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/genanki/card.py", line 9, in write_to_db
        cursor.execute('INSERT INTO cards VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);', (
    sqlite3.IntegrityError: UNIQUE constraint failed: cards.id
    dhcp-181-29:mn3_anki_fix-master josephdupont$
    Ce bloc de code vous renseigne-t-il sur une éventuelle erreur de ma part ? Sur une partie à corriger ?

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Si je me limite à commenter le message d'erreur, je dirais qu'une opération d'écriture dans la base de données sqlite3 viole une option "UNIQUE" de cette base:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlite3.IntegrityError: UNIQUE constraint failed: cards.id
    Extrait de la doc du module sqlite3 de Python:

    exception sqlite3.IntegrityError
    Exception raised when the relational integrity of the database is affected, e.g. a foreign key check fails. It is a subclass of DatabaseError.
    En remontant dans le message d'erreur, on doit pouvoir identifier à quel endroit du code développé se trouve l'erreur. Il faut aussi pour compléter voir dans la construction de la base de données à quel endroit se trouve des options "UNIQUE".

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par marlouis Voir le message
    Ce bloc de code vous renseigne-t-il sur une éventuelle erreur de ma part ? Sur une partie à corriger ?
    Soit c'est un "bug", soit c'est une mauvaise utilisation(*),... dans tous les cas, contactez les développeurs en essayant de leur fournir un petit exemple qui leur permettra de constater le problème.
    (*) "mauvaise utilisation" <=> il faut savoir utiliser le logiciel (et c'est une compétence différente d'un savoir-faire programmation python).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Besoin d’aide/conseil pour le développement d’un court logiciel
    Par NatHsn26 dans le forum Général Python
    Réponses: 22
    Dernier message: 15/03/2021, 02h14
  2. Réponses: 0
    Dernier message: 27/08/2015, 11h19
  3. [HTML] feuilles dans un seul script
    Par fourgeaud dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/11/2005, 23h39
  4. Besoin d'aide sur un script SQL de recherche
    Par agougeon dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/10/2005, 11h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo