48 lines
1.4 KiB
Python
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) |