Crowd und mp3s
This commit is contained in:
48
Crowdanki/crowdanki.py
Normal file
48
Crowdanki/crowdanki.py
Normal file
@@ -0,0 +1,48 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user