diff -r e22ffba8ecc0 -r 82da364db365 obsolete/exp_anki.py --- a/obsolete/exp_anki.py Fri Nov 11 23:24:49 2016 +0200 +++ b/obsolete/exp_anki.py Sat Nov 12 00:19:34 2016 +0200 @@ -1,7 +1,10 @@ +# -*- coding: utf-8 -*- + import sys import os import tempfile import shutil +import traceback FONAME = "test.apkg" @@ -13,11 +16,15 @@ CWD = os.getcwd() TMPDIR = tempfile.mkdtemp(dir = os.path.dirname(FONAME)) -def cleanup(type_, ex, traceback): +def cleanup(): os.chdir(CWD) shutil.rmtree(TMPDIR) -sys.excepthook = cleanup +def exception_handler(etype, ex, tb): + cleanup() + traceback.print_exception(etype, ex, tb) + +sys.excepthook = exception_handler sys.path.append('/usr/share/anki') import anki @@ -50,21 +57,20 @@ """ collection.models.addField(model, collection.models.newField('en')) -collection.models.addField(model, collection.models.newField('tr')) +collection.models.addField(model, collection.models.newField('ru')) -tmpl = collection.models.newTemplate('en -> tr') +tmpl = collection.models.newTemplate('en -> ru') tmpl['qfmt'] = '
{{en}}
' -tmpl['afmt'] = '{{FrontSide}}\n\n
\n\n{{tr}}' +tmpl['afmt'] = '{{FrontSide}}\n\n
\n\n{{ru}}' collection.models.addTemplate(model, tmpl) -tmpl = collection.models.newTemplate('tr -> en') -tmpl['qfmt'] = '{{tr}}' +tmpl = collection.models.newTemplate('ru -> en') +tmpl['qfmt'] = '{{ru}}' tmpl['afmt'] = '{{FrontSide}}\n\n
\n\n
{{en}}
' collection.models.addTemplate(model, tmpl) - -print(dir(model)) -print(type(model)) -print(model) +# print(dir(model)) +# print(type(model)) +# print(model) # Equivalent of: # collection.models.add(model) # without setting auto-generated ID: @@ -76,27 +82,85 @@ # collection.decks.select(deck_id) note = anki.notes.Note(collection, model) -print(dir(note)) -print(type(note)) -print(note._fmap) -print(note) +# print(dir(note)) +# print(type(note)) +# print(note._fmap) +# print(note) note['en'] = "hello" -note['tr'] = u"[heləʊ]\nint. привет" -note.guid = "xxx1" +note['ru'] = u"[heləʊ]\nint. привет" +note.guid = "enru_1" collection.addNote(note) -print(dir(note)) +# print(dir(note)) note = collection.newNote() note['en'] = "bye" -note['tr'] = u"[baɪ]\nint. пока" -note.guid = "xxx2" +note['ru'] = u"[baɪ]\nint. пока" +note.guid = "enru_2" collection.addNote(note) # model.add(deck) # model.save() +################################################################ +# Add another model and new types of notes into same storage! +model_irrverb = collection.models.new(FBASENAME + "_model_irrverb") +model_irrverb['tags'].append(FBASENAME + "_tag_irrverb") +model_irrverb['did'] = deck_id +model_irrverb['css'] = """ +.card { + font-family: arial; + font-size: 20px; + text-align: center; + color: black; + background-color: white; +} +.v1 { color: red; } +.v2 { color: green; } +.v3 { color: blue; } +""" + +collection.models.addField(model_irrverb, collection.models.newField('v1')) +collection.models.addField(model_irrverb, collection.models.newField('v2')) +collection.models.addField(model_irrverb, collection.models.newField('v3')) + +ANSWER_MSG = '{{FrontSide}}
{{v1}}\n{{v2}}\n{{v3}}' +tmpl = collection.models.newTemplate('v1') +tmpl['qfmt'] = '
{{v1}}
' +tmpl['afmt'] = ANSWER_MSG +collection.models.addTemplate(model_irrverb, tmpl) + +tmpl = collection.models.newTemplate('v2') +tmpl['qfmt'] = '
{{v2}}
' +tmpl['afmt'] = ANSWER_MSG +collection.models.addTemplate(model_irrverb, tmpl) +tmpl = collection.models.newTemplate('v3') +tmpl['qfmt'] = '
{{v3}}
' +tmpl['afmt'] = ANSWER_MSG +collection.models.addTemplate(model_irrverb, tmpl) + +# We mustn't define 'id' before adding tmpl because addTemplate() fail because +# it tries to update DB but we have no DB entry yet... +model_irrverb['id'] = 12345678+1 # essential for upgrade detection +collection.models.update(model_irrverb) +collection.models.setCurrent(model_irrverb) +collection.models.save(model_irrverb) + +note = anki.notes.Note(collection, model_irrverb) +note['v1'] = "go" +note['v2'] = "went" +note['v3'] = "gone" +note.guid = "irrverb_1" +collection.addNote(note) + +note = anki.notes.Note(collection, model_irrverb) +note['v1'] = "drive" +note['v2'] = "drove" +note['v3'] = "driven" +note.guid = "irrverb_2" +collection.addNote(note) + export = AnkiPackageExporter(collection) try: os.remove(FONAME)