Files
txt2apkg/Crowdanki/crowdanki.py
Sven Riwoldt 7c1bd0a63c Crowd und mp3s
2025-05-25 16:51:38 +02:00

48 lines
1.4 KiB
Python

import json
import uuid
with open('deck.json', 'r', encoding='utf-8') as f:
data = json.load(f)
original_notes = data['notes']
new_notes = []
existing_signatures = set()
def signature(front0, front1, back):
return f"{front0}||{front1}||{back}"
for note in original_notes:
fields = note['fields']
if len(fields) < 3:
continue
original_front = fields[0] # "ich"
original_back = fields[1] # "jag"
original_audio = fields[2] # "[sound:Jag-4718d0.mp3]"
sig = signature(original_front, original_audio, original_back)
reversed_sig = signature(original_back, original_audio, original_front)
if note['guid'].startswith('rev-') or reversed_sig in existing_signatures:
continue
new_note = {
"__type__": "Note",
"fields": [
original_back, # Feld 0: Frage Text (Antwort aus Original)
original_audio, # Feld 1: Frage Audio (MP3 aus Original)
original_front # Feld 2: Antwort Text (Frage aus Original)
],
"guid": f"rev-{uuid.uuid4()}",
"note_model_uuid": note["note_model_uuid"],
"tags": note.get("tags", []) + ["reversed"]
}
new_notes.append(new_note)
existing_signatures.add(sig)
existing_signatures.add(reversed_sig)
data['notes'].extend(new_notes)
with open('crowdanki_export_dupliziert.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)