GameSentenceMiner 2.9.29__py3-none-any.whl → 2.10.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
GameSentenceMiner/anki.py CHANGED
@@ -86,10 +86,6 @@ def update_anki_card(last_note: AnkiCard, note=None, audio_path='', video_path='
86
86
  if prev_screenshot_in_anki and get_config().anki.previous_image_field != get_config().anki.picture_field:
87
87
  note['fields'][get_config().anki.previous_image_field] = prev_screenshot_html
88
88
 
89
- if get_config().anki.anki_custom_fields:
90
- for key, value in get_config().anki.anki_custom_fields.items():
91
- note['fields'][key] = str(value)
92
-
93
89
 
94
90
  tags = []
95
91
  if get_config().anki.custom_tags:
@@ -100,6 +96,8 @@ def update_anki_card(last_note: AnkiCard, note=None, audio_path='', video_path='
100
96
  tag_string = " ".join(tags)
101
97
  invoke("addTags", tags=tag_string, notes=[last_note.noteId])
102
98
 
99
+
100
+ logger.info(f"Adding {game_line.id} to Anki Results Dict...")
103
101
  if not reuse_audio:
104
102
  anki_results[game_line.id] = AnkiUpdateResult(
105
103
  success=True,
@@ -263,11 +261,13 @@ def get_cards_by_sentence(sentence):
263
261
  logger.warning(f'Found more than 1, and not updating cards for query: \n{query}')
264
262
  return {}
265
263
 
266
- last_notes = invoke('notesInfo', notes=[card_ids[0]])[0]
267
-
268
- logger.info(f"Found Card to backfill!: {card_ids[0]}")
269
-
270
- return last_notes
264
+ card_dict = invoke('notesInfo', notes=[card_ids[-1]])[0]
265
+ try:
266
+ return AnkiCard.from_dict(card_dict)
267
+ except Exception as e:
268
+ logger.error(f"Error fetching last card: {e}")
269
+ logger.info(card_dict)
270
+ raise e
271
271
 
272
272
  last_connection_error = datetime.now()
273
273
 
@@ -298,18 +298,20 @@ def update_new_card():
298
298
  if not last_card or not check_tags_for_should_update(last_card):
299
299
  return
300
300
  gsm_status.add_word_being_processed(last_card.get_field(get_config().anki.word_field))
301
- use_prev_audio = sentence_is_same_as_previous(last_card)
302
301
  logger.debug(f"last mined line: {gsm_state.last_mined_line}, current sentence: {get_sentence(last_card)}")
302
+ lines = texthooking_page.get_selected_lines()
303
+ game_line = get_mined_line(last_card, lines)
304
+ use_prev_audio = sentence_is_same_as_previous(last_card, lines) or game_line.id in anki_results
303
305
  logger.info(f"New card using previous audio: {use_prev_audio}")
304
306
  if get_config().obs.get_game_from_scene:
305
307
  obs.update_current_game()
306
308
  if use_prev_audio:
307
- lines = texthooking_page.get_selected_lines()
308
309
  run_new_thread(lambda: update_card_from_same_sentence(last_card, lines=lines, game_line=get_mined_line(last_card, lines)))
309
310
  texthooking_page.reset_checked_lines()
310
311
  else:
311
312
  logger.info("New card(s) detected! Added to Processing Queue!")
312
- card_queue.append((last_card, datetime.now()))
313
+ card_queue.append((last_card, datetime.now(), lines))
314
+ texthooking_page.reset_checked_lines()
313
315
  try:
314
316
  obs.save_replay_buffer()
315
317
  except Exception as e:
@@ -329,10 +331,10 @@ def update_card_from_same_sentence(last_card, lines, game_line):
329
331
  notification.send_error_no_anki_update()
330
332
 
331
333
 
332
- def sentence_is_same_as_previous(last_card):
334
+ def sentence_is_same_as_previous(last_card, lines=None):
333
335
  if not gsm_state.last_mined_line:
334
336
  return False
335
- return gsm_state.last_mined_line.id == get_mined_line(last_card).id
337
+ return gsm_state.last_mined_line.id == get_mined_line(last_card, lines).id
336
338
 
337
339
  def get_sentence(card):
338
340
  return card.get_field(get_config().anki.sentence_field)