GameSentenceMiner 2.15.1__tar.gz → 2.15.3__tar.gz

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.
Files changed (85) hide show
  1. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/obs.py +17 -6
  2. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/owocr/owocr/ocr.py +2 -24
  3. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner.egg-info/PKG-INFO +1 -1
  4. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/PKG-INFO +1 -1
  5. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/pyproject.toml +1 -1
  6. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/__init__.py +0 -0
  7. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/ai/__init__.py +0 -0
  8. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/ai/ai_prompting.py +0 -0
  9. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/anki.py +0 -0
  10. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/assets/__init__.py +0 -0
  11. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/assets/icon.png +0 -0
  12. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/assets/icon128.png +0 -0
  13. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/assets/icon256.png +0 -0
  14. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/assets/icon32.png +0 -0
  15. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/assets/icon512.png +0 -0
  16. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/assets/icon64.png +0 -0
  17. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/assets/pickaxe.png +0 -0
  18. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/config_gui.py +0 -0
  19. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/gametext.py +0 -0
  20. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/gsm.py +0 -0
  21. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/locales/en_us.json +0 -0
  22. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/locales/ja_jp.json +0 -0
  23. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/locales/zh_cn.json +0 -0
  24. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/ocr/__init__.py +0 -0
  25. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/ocr/gsm_ocr_config.py +0 -0
  26. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/ocr/ocrconfig.py +0 -0
  27. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/ocr/owocr_area_selector.py +0 -0
  28. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/ocr/owocr_helper.py +0 -0
  29. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/ocr/ss_picker.py +0 -0
  30. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/owocr/owocr/__init__.py +0 -0
  31. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/owocr/owocr/__main__.py +0 -0
  32. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/owocr/owocr/config.py +0 -0
  33. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/owocr/owocr/lens_betterproto.py +0 -0
  34. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/owocr/owocr/run.py +0 -0
  35. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/owocr/owocr/screen_coordinate_picker.py +0 -0
  36. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/tools/__init__.py +0 -0
  37. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/tools/audio_offset_selector.py +0 -0
  38. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/tools/furigana_filter_preview.py +0 -0
  39. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/tools/ss_selector.py +0 -0
  40. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/tools/window_transparency.py +0 -0
  41. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/__init__.py +0 -0
  42. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/communication/__init__.py +0 -0
  43. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/communication/send.py +0 -0
  44. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/communication/websocket.py +0 -0
  45. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/configuration.py +0 -0
  46. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/db.py +0 -0
  47. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/downloader/Untitled_json.py +0 -0
  48. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/downloader/__init__.py +0 -0
  49. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/downloader/download_tools.py +0 -0
  50. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/downloader/oneocr_dl.py +0 -0
  51. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/electron_config.py +0 -0
  52. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/ffmpeg.py +0 -0
  53. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/get_overlay_coords.py +0 -0
  54. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/gsm_utils.py +0 -0
  55. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/model.py +0 -0
  56. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/notification.py +0 -0
  57. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/text_log.py +0 -0
  58. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/win10toast/__init__.py +0 -0
  59. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/util/win10toast/__main__.py +0 -0
  60. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/vad.py +0 -0
  61. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/__init__.py +0 -0
  62. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/service.py +0 -0
  63. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/static/__init__.py +0 -0
  64. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/static/apple-touch-icon.png +0 -0
  65. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/static/favicon-96x96.png +0 -0
  66. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/static/favicon.ico +0 -0
  67. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/static/favicon.svg +0 -0
  68. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/static/site.webmanifest +0 -0
  69. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/static/style.css +0 -0
  70. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/static/web-app-manifest-192x192.png +0 -0
  71. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/static/web-app-manifest-512x512.png +0 -0
  72. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/templates/__init__.py +0 -0
  73. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/templates/index.html +0 -0
  74. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/templates/text_replacements.html +0 -0
  75. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/templates/utility.html +0 -0
  76. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/web/texthooking_page.py +0 -0
  77. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner/wip/__init___.py +0 -0
  78. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner.egg-info/SOURCES.txt +0 -0
  79. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner.egg-info/dependency_links.txt +0 -0
  80. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner.egg-info/entry_points.txt +0 -0
  81. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner.egg-info/requires.txt +0 -0
  82. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/GameSentenceMiner.egg-info/top_level.txt +0 -0
  83. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/LICENSE +0 -0
  84. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/README.md +0 -0
  85. {gamesentenceminer-2.15.1 → gamesentenceminer-2.15.3}/setup.cfg +0 -0
@@ -506,9 +506,16 @@ def set_fit_to_screen_for_scene_items(scene_name: str):
506
506
 
507
507
  source_width = scene_item_transform.get('sourceWidth', None)
508
508
  source_height = scene_item_transform.get('sourceHeight', None)
509
-
509
+
510
510
  aspect_ratio_different = False
511
- if source_width and source_height:
511
+ already_cropped = any([
512
+ scene_item_transform.get('cropLeft', 0) != 0,
513
+ scene_item_transform.get('cropRight', 0) != 0,
514
+ scene_item_transform.get('cropTop', 0) != 0,
515
+ scene_item_transform.get('cropBottom', 0) != 0,
516
+ ])
517
+
518
+ if source_width and source_height and not already_cropped:
512
519
  source_aspect_ratio = source_width / source_height
513
520
  canvas_aspect_ratio = canvas_width / canvas_height
514
521
  # Check if aspect ratio is different and if it's a standard aspect ratio
@@ -541,11 +548,15 @@ def set_fit_to_screen_for_scene_items(scene_name: str):
541
548
  'boundsHeight': canvas_height,
542
549
  'positionX': 0,
543
550
  'positionY': 0,
544
- 'cropLeft': 0 if not aspect_ratio_different or canvas_width > source_width else (source_width - canvas_width) // 2,
545
- 'cropRight': 0 if not aspect_ratio_different or canvas_width > source_width else (source_width - canvas_width) // 2,
546
- 'cropTop': 0 if not aspect_ratio_different or canvas_height > source_height else (source_height - canvas_height) // 2,
547
- 'cropBottom': 0 if not aspect_ratio_different or canvas_height > source_height else (source_height - canvas_height) // 2,
548
551
  }
552
+
553
+ if not already_cropped:
554
+ fit_to_screen_transform.update({
555
+ 'cropLeft': 0 if not aspect_ratio_different or canvas_width > source_width else (source_width - canvas_width) // 2,
556
+ 'cropRight': 0 if not aspect_ratio_different or canvas_width > source_width else (source_width - canvas_width) // 2,
557
+ 'cropTop': 0 if not aspect_ratio_different or canvas_height > source_height else (source_height - canvas_height) // 2,
558
+ 'cropBottom': 0 if not aspect_ratio_different or canvas_height > source_height else (source_height - canvas_height) // 2,
559
+ })
549
560
 
550
561
  try:
551
562
  client.set_scene_item_transform(
@@ -1014,7 +1014,6 @@ class OneOCR:
1014
1014
  res = ocr_resp['text']
1015
1015
 
1016
1016
  if multiple_crop_coords:
1017
- logger.info(f"Getting multiple crop coords for {len(filtered_lines)} lines")
1018
1017
  for line in filtered_lines:
1019
1018
  crop_coords_list.append(
1020
1019
  (line['bounding_rect']['x1'] - 5, line['bounding_rect']['y1'] - 5,
@@ -1434,13 +1433,10 @@ class localLLMOCR:
1434
1433
  self.keep_warm = config.get('keep_warm', True)
1435
1434
  self.custom_prompt = config.get('prompt', None)
1436
1435
  self.available = True
1437
- if any(x in self.api_url for x in ['localhost', '127.0.0.1']):
1438
- if not self.check_connection(self.api_url):
1439
- logger.warning('Local LLM OCR API is not reachable')
1440
- return
1441
1436
  self.client = openai.OpenAI(
1442
1437
  base_url=self.api_url.replace('/v1/chat/completions', '/v1'),
1443
- api_key=self.api_key
1438
+ api_key=self.api_key,
1439
+ timeout=3
1444
1440
  )
1445
1441
  if self.client.models.retrieve(self.model):
1446
1442
  self.model = self.model
@@ -1450,24 +1446,6 @@ class localLLMOCR:
1450
1446
  self.keep_llm_hot_thread.start()
1451
1447
  except Exception as e:
1452
1448
  logger.warning(f'Error initializing Local LLM OCR, Local LLM OCR will not work!')
1453
-
1454
- def check_connection(self, url, port=None):
1455
- import http.client
1456
- conn = http.client.HTTPConnection(url, port or 1234, timeout=0.1)
1457
- try:
1458
- conn.request("GET", "/v1/models")
1459
- response = conn.getresponse()
1460
- if response.status == 200:
1461
- logger.info('Local LLM OCR API is reachable')
1462
- return True
1463
- else:
1464
- logger.warning('Local LLM OCR API is not reachable')
1465
- return False
1466
- except Exception as e:
1467
- logger.warning(f'Error connecting to Local LLM OCR API: {e}')
1468
- return False
1469
- finally:
1470
- conn.close()
1471
1449
 
1472
1450
  def keep_llm_warm(self):
1473
1451
  def ocr_blank_black_image():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GameSentenceMiner
3
- Version: 2.15.1
3
+ Version: 2.15.3
4
4
  Summary: A tool for mining sentences from games. Update: Overlay?
5
5
  Author-email: Beangate <bpwhelan95@gmail.com>
6
6
  License: MIT License
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GameSentenceMiner
3
- Version: 2.15.1
3
+ Version: 2.15.3
4
4
  Summary: A tool for mining sentences from games. Update: Overlay?
5
5
  Author-email: Beangate <bpwhelan95@gmail.com>
6
6
  License: MIT License
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "GameSentenceMiner"
10
- version = "2.15.1"
10
+ version = "2.15.3"
11
11
  description = "A tool for mining sentences from games. Update: Overlay?"
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.10"