add dictation model

This commit is contained in:
Wolfang Torres
2026-06-20 14:10:17 +08:00
parent ebf2d58207
commit ebc9aa77a7
4 changed files with 125 additions and 10 deletions

View File

@@ -64,6 +64,23 @@ PHRASE_MODEL = Model(
css=CSS,
)
DICTATION_MODEL = Model(
3187277536,
"Phrase Model",
fields=[
{"name": "Translated"},
{"name": "Phrase"},
{"name": "Audio"},
],
templates=[
{
"name": "Card 1",
"qfmt": "{{Audio}}<br>{{type:Phrase}}",
"afmt": '{{FrontSide}}<hr id="answer">{{Phrase}}<br>{{Translated}}',
},
],
css=CSS,
)
HSK_MODEL = Model(
1708536519,
@@ -122,16 +139,52 @@ HSK_MODEL = Model(
# Proccess
def output_anki_dictation(
process_file: ProcessFile, results: list[DictionaryResult]
) -> Path:
"""Creates an anki file for dictation result"""
final_file = process_file.output_name.with_suffix(".apkg")
deck_name = "::".join(
process_file.input_file.parts[:-1] + (process_file.output_name.stem,)
)
deck = Deck(
random.randrange(1 << 30, 1 << 31),
deck_name,
f"Deck for {final_file.name}, "
"created in https://www.wolfang.info.ve/hskankicreator/",
)
package = Package(deck)
audios = []
for result in results:
note = Note(
model=DICTATION_MODEL,
fields=[
result.translated,
result.line,
f"[sound:{result.audio_path.name}]",
],
)
deck.add_note(note)
audios.append(result.audio_path)
package.media_files = audios
package.write_to_file(final_file)
return final_file
def output_anki_dictionary(
process_file: ProcessFile, results: list[DictionaryResult]
) -> Path:
"""Creates an anki file from a dictionary results"""
final_file = process_file.output_name.with_suffix(".apkg")
print()
deck_name = "::".join(
process_file.input_file.parts[:-1] + (process_file.output_name.stem,)
)
deck = Deck(random.randrange(1 << 30, 1 << 31), deck_name)
deck = Deck(
random.randrange(1 << 30, 1 << 31),
deck_name,
f"Deck for {final_file.name}, "
"created in https://www.wolfang.info.ve/hskankicreator/",
)
package = Package(deck)
audios = []
for result in results:
@@ -161,7 +214,12 @@ def output_anki_phrase(
deck_name = "::".join(
process_file.input_file.parts[:-1] + (process_file.output_name.stem,)
)
deck = Deck(random.randrange(1 << 30, 1 << 31), deck_name)
deck = Deck(
random.randrange(1 << 30, 1 << 31),
deck_name,
f"Deck for {final_file.name}, "
"created in https://www.wolfang.info.ve/hskankicreator/",
)
package = Package(deck)
audios = []
for result in results: