Skip to content

Commit

Permalink
fix: handle TB when name is still prev character #49
Browse files Browse the repository at this point in the history
  • Loading branch information
kel-z committed Feb 13, 2024
1 parent 03966ee commit 6cb2a34
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 14 deletions.
8 changes: 4 additions & 4 deletions src/services/scanner/parsers/character_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,19 +113,19 @@ def parse(self, stats_dict: dict) -> dict:
return character

def get_closest_name_and_path(
self, character_name: str, path: str, character_img: Image
self, character_name: str, path: str, is_trailblazer: bool
) -> tuple[str, str]:
"""Get the closest name and path
:param character_name: The character name
:param path: The path
:param character_img: The character image
:param is_trailblazer: Whether the character is Trailblazer
:raises Exception: If the character is not found in the database
:return: The closest name and path
"""
path, _ = self._game_data.get_closest_path_name(path)

if self._is_trailblazer(character_img):
if is_trailblazer:
if self._is_trailblazer_scanned:
(
self._log_signal.emit(
Expand All @@ -150,7 +150,7 @@ def get_closest_name_and_path(

return character_name, path

def _is_trailblazer(self, character_img: Image) -> bool:
def is_trailblazer(self, character_img: Image) -> bool:
"""Check if the character is Trailblazer
Side effect: Sets the is_stelle QSetting
Expand Down
38 changes: 28 additions & 10 deletions src/services/scanner/scanner.py
Original file line number Diff line number Diff line change
Expand Up @@ -468,21 +468,27 @@ def scan_characters(self) -> set[asyncio.Task]:
not character_name or character_name in characters_seen
):
try:
self._scan_sleep(0.7) if prev_trailblazer else None
character_name_img = (
self._screenshot.screenshot_character_name()
)
character_name = image_to_string(
character_name_img,
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz/7&",
7,
(
self._scan_sleep(0.7)
if prev_trailblazer
else self._scan_sleep(0)
)
character_name = self._get_character_name() # this has a small delay, can basically be treated as a sleep
character_img = self._screenshot.screenshot_character()

# Trailblazer is the most prone to errors, need to ensure
# that all the elements have loaded before taking screenshots
# at the cost of small delay on Trailblazer
is_trailblazer = char_parser.is_trailblazer(character_img)
if char_parser.is_trailblazer(character_img):
self._scan_sleep(0.7)
character_name = self._get_character_name()

path, character_name = map(
str.strip, character_name.split("/")[:2]
)
character_img = self._screenshot.screenshot_character()
character_name, path = char_parser.get_closest_name_and_path(
character_name, path, character_img
character_name, path, is_trailblazer
)

if character_name in characters_seen:
Expand Down Expand Up @@ -596,6 +602,18 @@ def scan_characters(self) -> set[asyncio.Task]:
self._nav.key_press(Key.esc)
return tasks

def _get_character_name(self) -> str:
"""Gets the character name
:return: The character name
"""
character_name_img = self._screenshot.screenshot_character_name()
return image_to_string(
character_name_img,
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz/7&",
7,
)

def _nav_sleep(self, seconds: float) -> None:
"""Sleeps for the specified amount of time with navigation delay
Expand Down

0 comments on commit 6cb2a34

Please sign in to comment.