Skip to content

Commit

Permalink
Merge branch 'async' into patch-48
Browse files Browse the repository at this point in the history
  • Loading branch information
JabLuszko authored Sep 21, 2024
2 parents 6816772 + fd76cb9 commit 3ddb788
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 7 deletions.
2 changes: 1 addition & 1 deletion mapadroid/account_handler/AccountHandler.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,13 @@ async def get_account(self, device_id: int, purpose: AccountPurpose,
# TODO: Filter only unassigned or assigned to same device first
logins: Dict[int, SettingsPogoauth] = await SettingsPogoauthHelper.get_avail_accounts(
session, self._db_wrapper.get_instance_id(), auth_type=None, device_id=device_id)
logger.info("Got {} before filtering for burnt or not fitting the usage.", len(logins))
# Filter all burnt and all which do not match the purpose. E.g., if the purpose is mon scanning.
logins_filtered: List[SettingsPogoauth] = [auth_entry for auth_id, auth_entry in logins.items()
if not self._is_burnt(auth_entry)
and self._is_usable_for_purpose(auth_entry,
purpose, location_to_scan)]
logins_filtered.sort(key=lambda x: DatetimeWrapper.fromtimestamp(0) if x.last_burn is None else x.last_burn)
logger.info("Got {} before filtering and {} after (burnt, wrong level)", len(logins), len(logins_filtered))
login_to_use: Optional[SettingsPogoauth] = None
if not logins_filtered:
logger.warning("No auth found for {}", device_id)
Expand Down
12 changes: 12 additions & 0 deletions mapadroid/ocr/screenPath.py
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,9 @@ async def __handle_screentype(self, screentype: ScreenType,
screentype = await self.__handle_adventure_sync_screen(screentype)
elif screentype == ScreenType.WILLOWGO:
screentype = await self.__handle_tutorial_end()
elif screentype == ScreenType.HARDWARE_UNITY_UNSUPPORTED:
logger.warning('Detected unsupported hardware screen, PD could not handle that?')
screentype = await self.__handle_hardware_unsupported_unity_screen(diff, global_dict)
elif screentype == ScreenType.SN:
self._nextscreen = ScreenType.UNDEFINED
elif screentype == ScreenType.UPDATE:
Expand Down Expand Up @@ -465,6 +468,10 @@ async def __handle_ptc_login(self) -> ScreenType:
exit_keyboard_y: int = 300

for item in xmlroot.iter('node'):
if "android.widget.ProgressBar" in item.attrib["class"]:
logger.warning("PTC page still loading, sleeping for extra 12 seconds")
await asyncio.sleep(12)
return ScreenType.PTC
if "Access denied" in item.attrib["text"]:
logger.warning("WAF on PTC login attempt detected")
# Reload the page 1-3 times
Expand Down Expand Up @@ -1014,6 +1021,11 @@ async def __handle_login_timeout(self, diff, global_dict) -> None:
self._nextscreen = ScreenType.UNDEFINED
click_text = 'SIGNOUT,SIGN,ABMELDEN,_DECONNECTER'
await self.__click_center_button_text(click_text, diff, global_dict)

async def __handle_hardware_unsupported_unity_screen(self, diff, global_dict) -> None:
self._nextscreen = ScreenType.UNDEFINED
click_text = 'CONTINUE' # no idea if this gets translated to different lang?
await self.__click_center_button_text(click_text, diff, global_dict)

async def _take_and_analyze_screenshot(self, delay_after=0.0, delay_before=0.0, errorscreen: bool = False) -> \
Optional[Tuple[ScreenType,
Expand Down
1 change: 1 addition & 0 deletions mapadroid/ocr/screen_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class ScreenType(Enum):
RETRY = 6 # Failed to log in. Green button on top: RETRY - no background button below: TRY A DIFFERENT ACCOUNT
WRONG = 7 # incorrect credentials?
GAMEDATA = 8 # game data could not be fetched from server
HARDWARE_UNITY_UNSUPPORTED = 9 # Your device does not match hardware requirements for this application CONTINUE
GGL = 10 # Google account picker
PERMISSION = 11 # permission grant overlay (Android)
MARKETING = 12 # marketing notification request (pogo)
Expand Down
3 changes: 2 additions & 1 deletion mapadroid/ocr/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@
'AUTRE', 'AUTORISER'],
7: ['incorrect.', 'attempts', 'falsch.', 'gesperrt'],
8: ['Spieldaten', 'abgerufen', 'lecture', 'depuis', 'server', 'data'],
9: ['hardware', 'requirements'],
12: ['Events,', 'Benachrichtigungen', 'Einstellungen', 'events,', 'offers,',
'notifications', 'évenements,', 'evenements,', 'offres'],
14: ['kompatibel', 'compatible', 'OS', 'software', 'device', 'Gerät',
14: ['kompatibel', 'compatible', 'OS', 'software', 'Gerät',
'Betriebssystem', 'logiciel'],
15: ['continuer...', 'aktualisieren?', 'now?', 'Aktualisieren', 'Aktualisieren,',
'aktualisieren', 'update', 'continue...', 'Veux-tu', 'Fais', 'continuer'],
Expand Down
11 changes: 6 additions & 5 deletions mapadroid/worker/strategy/AbstractWorkerStrategy.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,11 +257,12 @@ async def start_pogo(self) -> bool:

if start_result:
logger.success("startPogo: Started pogo successfully...")
ip_of_device: Optional[str] = await self._communicator.get_external_ip()
if not ip_of_device:
logger.warning("Cannot retrieve IP of device.")
else:
await self._mapping_manager.login_tracking_set_ip(self._worker_state.origin, ip_of_device)
if MadGlobals.application_args.enable_login_tracking:
ip_of_device: Optional[str] = await self._communicator.get_external_ip()
if not ip_of_device:
logger.warning("Cannot retrieve IP of device.")
else:
await self._mapping_manager.login_tracking_set_ip(self._worker_state.origin, ip_of_device)

await self._wait_pogo_start_delay()
start_delay: int = await self.get_devicesettings_value(
Expand Down

0 comments on commit 3ddb788

Please sign in to comment.