Compare commits

...

8 Commits

Author SHA1 Message Date
Philipp Matthias Schäfer
8bfb4049dc Replace duplicate code with call to addMediaFromNote 2024-10-08 20:26:20 -07:00
Philipp Matthias Schäfer
6eea9f9db4 Fix year component of Anki version 2024-10-06 17:51:24 -07:00
Philipp Matthias Schäfer
c89dbf2062 Make string an f-string
so the directives within the string will get evaluated.
2024-10-06 17:51:24 -07:00
Philipp Matthias Schäfer
ba67c52d9b Use non-deprecated snake case names of collection methods 2024-10-05 11:30:30 -07:00
Philipp Matthias Schäfer
cc027f8ab8 Replace calls to deprecated flush() with col.update_note/card
The changes passes skip_undo_entry to update_note/card, because the
implementation of the deprecated flush() method did so. Whether this is the
right decision for our use case was not checked/thought about.
2024-10-05 11:30:30 -07:00
Philipp Matthias Schäfer
dc96cdc76c Switch from deprecated names of anki/utils.py functions 2024-10-05 11:30:30 -07:00
Philipp Matthias Schäfer
6a2cc2dec1 Remove calls to deprecated (and empty) method autosave 2024-10-05 11:30:30 -07:00
Philipp Matthias Schäfer
172d1fb20f Require current Anki version 2024-10-05 11:30:30 -07:00

View File

@ -15,10 +15,11 @@
import aqt
required_anki_version = (24, 6, 3)
anki_version = tuple(int(segment) for segment in aqt.appVersion.split("."))
if anki_version < (2, 1, 45):
raise Exception("Minimum Anki version supported: 2.1.45")
if anki_version < required_anki_version:
raise Exception(f"Minimum Anki version supported: {required_anki_version[0]}.{required_anki_version[1]}.{required_anki_version[2]}")
import base64
import glob
@ -310,7 +311,7 @@ class AnkiConnect:
val = note.fields[0]
if not val.strip():
return 1
csum = anki.utils.fieldChecksum(val)
csum = anki.utils.field_checksum(val)
# Create dictionary of deck ids
dids = None
@ -358,13 +359,13 @@ class AnkiConnect:
def getCard(self, card_id: int) -> Card:
try:
return self.collection().getCard(card_id)
return self.collection().get_card(card_id)
except NotFoundError:
self.raiseNotFoundError('Card was not found: {}'.format(card_id))
def getNote(self, note_id: int) -> Note:
try:
return self.collection().getNote(note_id)
return self.collection().get_note(note_id)
except NotFoundError:
self.raiseNotFoundError('Note was not found: {}'.format(note_id))
@ -567,7 +568,7 @@ class AnkiConnect:
self.startEditing()
did = self.collection().decks.id(deck)
mod = anki.utils.intTime()
mod = anki.utils.int_time()
usn = self.collection().usn()
# normal cards
@ -612,7 +613,7 @@ class AnkiConnect:
collection = self.collection()
config['id'] = str(config['id'])
config['mod'] = anki.utils.intTime()
config['mod'] = anki.utils.int_time()
config['usn'] = collection.usn()
if int(config['id']) not in [c['id'] for c in collection.decks.all_config()]:
return False
@ -741,7 +742,6 @@ class AnkiConnect:
nCardsAdded = collection.addNote(ankiNote)
if nCardsAdded < 1:
raise Exception('The field values you have provided would make an empty question on all cards.')
collection.autosave()
return ankiNote.id
@ -820,18 +820,9 @@ class AnkiConnect:
if name in ankiNote:
ankiNote[name] = value
audioObjectOrList = note.get('audio')
self.addMedia(ankiNote, audioObjectOrList, util.MediaType.Audio)
self.addMediaFromNote(ankiNote, note)
videoObjectOrList = note.get('video')
self.addMedia(ankiNote, videoObjectOrList, util.MediaType.Video)
pictureObjectOrList = note.get('picture')
self.addMedia(ankiNote, pictureObjectOrList, util.MediaType.Picture)
ankiNote.flush()
self.collection().autosave()
self.collection().update_note(ankiNote, skip_undo_entry=True);
@util.api()
@ -895,11 +886,8 @@ class AnkiConnect:
# Update the tags
anki_note.tags = new_tags
# Flush changes to ensure they are saved
anki_note.flush()
# Save changes to the collection
collection.autosave()
# Update note to ensure changes are saved
collection.update_note(anki_note, skip_undo_entry=True);
@util.api()
def updateNoteTags(self, note, tags):
@ -953,7 +941,7 @@ class AnkiConnect:
if note.has_tag(tag_to_replace):
note.remove_tag(tag_to_replace)
note.add_tag(replace_with_tag)
note.flush()
self.collection().update_note(note, skip_undo_entry=True);
self.window().requireReset()
self.window().progress.finish()
@ -970,7 +958,7 @@ class AnkiConnect:
if note.has_tag(tag_to_replace):
note.remove_tag(tag_to_replace)
note.add_tag(replace_with_tag)
note.flush()
self.collection().update_note(note, skip_undo_entry=True);
self.window().requireReset()
self.window().progress.finish()
@ -989,7 +977,7 @@ class AnkiConnect:
couldSetEaseFactors.append(True)
ankiCard.factor = easeFactors[i]
ankiCard.flush()
self.collection().update_card(ankiCard, skip_undo_entry=True)
return couldSetEaseFactors
@ -1019,7 +1007,7 @@ class AnkiConnect:
ankiCard = self.getCard(card)
for i, key in enumerate(keys):
setattr(ankiCard, key, newValues[i])
ankiCard.flush()
self.collection().update_card(ankiCard, skip_undo_entry=True)
result.append(True)
except Exception as e:
result.append([False, str(e)])