# HG changeset patch # User Oleksandr Gavenko # Date 1478952684 -7200 # Node ID 28e04408c0c0d76d39afe20fb6bdf4d2193c195d # Parent e330e7f195b797e934f23a33d2d63c52e6eb3f3b Add frequency tags as separate field and as native Anki tags. diff -r e330e7f195b7 -r 28e04408c0c0 py/gadict_srs_anki.py --- a/py/gadict_srs_anki.py Sat Nov 12 13:55:08 2016 +0200 +++ b/py/gadict_srs_anki.py Sat Nov 12 14:11:24 2016 +0200 @@ -223,15 +223,16 @@ collection.models.addField(model, collection.models.newField('Front')) collection.models.addField(model, collection.models.newField('Back')) collection.models.addField(model, collection.models.newField('SafeBack')) + collection.models.addField(model, collection.models.newField('Freq')) tmpl = collection.models.newTemplate('Front -> Back') - tmpl['qfmt'] = '
{{Front}}
' + tmpl['qfmt'] = '
{{Front}}
{{Freq}}
' tmpl['afmt'] = '{{FrontSide}}
{{Back}}
' collection.models.addTemplate(model, tmpl) tmpl = collection.models.newTemplate('SafeBack -> Front') tmpl['qfmt'] = '
{{SafeBack}}
' - tmpl['afmt'] = '{{FrontSide}}
{{Front}}
' + tmpl['afmt'] = '{{FrontSide}}
{{Front}}
{{Freq}}
' collection.models.addTemplate(model, tmpl) # Equivalent of ``collection.models.add(model)`` without setting @@ -259,32 +260,33 @@ collection.models.addField(model, collection.models.newField('V3alt')) collection.models.addField(model, collection.models.newField('Front')) collection.models.addField(model, collection.models.newField('Back')) + collection.models.addField(model, collection.models.newField('Freq')) question = u"
Find irregular verb:
" tmpl = collection.models.newTemplate('V1 -> Back') tmpl['qfmt'] = question + '
{{V1}}
' - tmpl['afmt'] = '{{FrontSide}}
{{Front}}
{{Back}}
' + tmpl['afmt'] = '{{FrontSide}}
{{Front}}
{{Freq}}
{{Back}}
' collection.models.addTemplate(model, tmpl) tmpl = collection.models.newTemplate('V2 -> Back') tmpl['qfmt'] = question + '
{{V2}}
' - tmpl['afmt'] = '{{FrontSide}}
{{Front}}
{{Back}}
' + tmpl['afmt'] = '{{FrontSide}}
{{Front}}
{{Freq}}
{{Back}}
' collection.models.addTemplate(model, tmpl) tmpl = collection.models.newTemplate('V3 -> Back') tmpl['qfmt'] = question + '
{{V3}}
' - tmpl['afmt'] = '{{FrontSide}}
{{Front}}
{{Back}}
' + tmpl['afmt'] = '{{FrontSide}}
{{Front}}
{{Freq}}
{{Back}}
' collection.models.addTemplate(model, tmpl) tmpl = collection.models.newTemplate('V2alt -> Back') tmpl['qfmt'] = question + '
{{V2alt}}
' - tmpl['afmt'] = '{{FrontSide}}
{{Front}}
{{Back}}
' + tmpl['afmt'] = '{{FrontSide}}
{{Front}}
{{Freq}}
{{Back}}
' collection.models.addTemplate(model, tmpl) tmpl = collection.models.newTemplate('V3alt -> Back') tmpl['qfmt'] = question + '
{{V3alt}}
' - tmpl['afmt'] = '{{FrontSide}}
{{Front}}
{{Back}}
' + tmpl['afmt'] = '{{FrontSide}}
{{Front}}
{{Freq}}
{{Back}}
' collection.models.addTemplate(model, tmpl) model['id'] = MODEL_ID + 2 # Keep model['id'] unique. @@ -302,17 +304,18 @@ collection.models.addField(model, collection.models.newField('Plural')) collection.models.addField(model, collection.models.newField('Front')) collection.models.addField(model, collection.models.newField('Back')) + collection.models.addField(model, collection.models.newField('Freq')) question = u"
Find singular/plural form:
" tmpl = collection.models.newTemplate('Singular -> Back') tmpl['qfmt'] = question + '
{{Singular}}
' - tmpl['afmt'] = '{{FrontSide}}
{{Front}}
{{Back}}
' + tmpl['afmt'] = '{{FrontSide}}
{{Front}}
{{Freq}}
{{Back}}
' collection.models.addTemplate(model, tmpl) tmpl = collection.models.newTemplate('Plural -> Back') tmpl['qfmt'] = question + '
{{Plural}}
' - tmpl['afmt'] = '{{FrontSide}}
{{Front}}
{{Back}}
' + tmpl['afmt'] = '{{FrontSide}}
{{Front}}
{{Freq}}
{{Back}}
' collection.models.addTemplate(model, tmpl) model['id'] = MODEL_ID + 3 # Keep model['id'] unique. @@ -328,16 +331,17 @@ h = hashlib.md5(":".join((self.name, nodetype, headword))) return h.hexdigest() - def add_note(self, headword, front, back, safeback, tags = None): + def add_note(self, headword, front, back, safeback, freq, tags = None): note = anki.notes.Note(self.collection, self.model) note['Front'] = front note['Back'] = back note['SafeBack'] = safeback + note['Freq'] = freq note_add_tags(note, tags) note.guid = self.guid("front/back", headword) self.collection.addNote(note) - def add_note_irr(self, headword, v1, v2, v2alt, v3, v3alt, front, back, tags = None): + def add_note_irr(self, headword, v1, v2, v2alt, v3, v3alt, front, back, freq, tags = None): note = anki.notes.Note(self.collection, self.model_irr) note['V1'] = v1 note['V2'] = v2 @@ -346,16 +350,18 @@ note['V3alt'] = v3alt note['Front'] = front note['Back'] = back + note['Freq'] = freq note_add_tags(note, tags) note.guid = self.guid("irregular verb", headword) self.collection.addNote(note) - def add_note_pl(self, headword, singular, plural, front, back, tags = None): + def add_note_pl(self, headword, singular, plural, front, back, freq, tags = None): note = anki.notes.Note(self.collection, self.model_pl) note['Singular'] = singular note['Plural'] = plural note['Front'] = front note['Back'] = back + note['Freq'] = freq note_add_tags(note, tags) note.guid = self.guid("singular/plural noun", headword) self.collection.addNote(note) @@ -447,10 +453,9 @@ for (freqtag, freqset) in FREQ_SOURCES: if identity in freqset: freqtags.append(freqtag) - freqmsg = "" + freqmsg = " " if len(freqtags) > 0: freqmsg = ",".join(freqtags) - freqmsg = "
{:s}
".format(freqmsg) buf = [] v1, v2, v3, v2alt, v3alt = (None, None, None, None, None) singular, plural = (None, None) @@ -495,7 +500,7 @@ for sense in translations: write_sense(buf, sense, with_examples = False) reverse_from = "".join(buf) # without examples!! - builder.add_note(identity, direct_from, direct_to, reverse_from) + builder.add_note(identity, direct_from, direct_to, reverse_from, freqmsg, freqtags) if v1 and v2 and v3 and RICH_MODE: riddle1 = u"{} [{}] v1".format(v1[0], v1[1]) riddle2 = u"{} [{}] v2".format(v2[0], v2[1]) @@ -508,11 +513,11 @@ riddle3alt = u"{} [{}] v2".format(v3alt[0], v3alt[1]) else: riddle3alt = "" - builder.add_note_irr(identity, riddle1 + freqmsg, riddle2 + freqmsg, riddle2alt, riddle3 + freqmsg, riddle3alt, direct_from, direct_to) + builder.add_note_irr(identity, riddle1, riddle2, riddle2alt, riddle3, riddle3alt, direct_from, direct_to, freqmsg) if singular and plural and RICH_MODE: riddle_s = u"{} [{}] s".format(singular[0], singular[1]) riddle_pl = u"{} [{}] pl".format(plural[0], plural[1]) - builder.add_note_pl(identity, riddle_s + freqmsg, riddle_pl + freqmsg, direct_from, direct_to) + builder.add_note_pl(identity, riddle_s, riddle_pl, direct_from, direct_to, freqmsg) builder.export(FONAME) finally: