1212from _login import get_account_sync
1313
1414from findmy import FindMyAccessory
15+ from findmy .accessory import RollingKeyPairSource
16+ from findmy .keys import HasHashedPublicKey
1517
1618# Default path where login session will be stored.
1719# This is necessary to avoid generating a new session every time we log in.
@@ -39,19 +41,20 @@ def get_battery_level(status: int) -> str:
3941 return BATTERY_LEVEL .get (battery_id , "Unknown" )
4042
4143
42- def get_airtag_name (airtag : FindMyAccessory , path : Path ) -> str :
44+ def get_airtag_name (airtag : HasHashedPublicKey | RollingKeyPairSource , path : Path ) -> str :
4345 """Get a human-readable name for an airtag, with fallbacks."""
44- if airtag .name :
45- return airtag .name
46- if airtag .identifier :
47- return airtag .identifier
46+ if isinstance (airtag , FindMyAccessory ):
47+ if airtag .name :
48+ return airtag .name
49+ if airtag .identifier :
50+ return airtag .identifier
4851 return path .stem # filename without extension
4952
5053
5154def main (airtag_paths : list [Path ], store_path : str ) -> int :
5255 # Step 0: create accessory key generators for all paths
5356 airtags = [FindMyAccessory .from_json (path ) for path in airtag_paths ]
54- airtag_to_path = dict (zip (airtags , airtag_paths ))
57+ airtag_to_path : dict [ HasHashedPublicKey | RollingKeyPairSource , Path ] = dict (zip (airtags , airtag_paths ))
5558
5659 # Step 1: log into an Apple account
5760 acc = get_account_sync (store_path , ANISETTE_SERVER , ANISETTE_LIBS_PATH )
@@ -62,8 +65,9 @@ def main(airtag_paths: list[Path], store_path: str) -> int:
6265
6366 # step 3: print 'em
6467 print ("Last known locations:" )
65- for airtag , location in locations .items ():
66- name = get_airtag_name (airtag , airtag_to_path [airtag ])
68+ for airtag , path in airtag_to_path .items ():
69+ location = locations .get (airtag ) # type: ignore[union-attr]
70+ name = get_airtag_name (airtag , path )
6771 if location :
6872 battery = get_battery_level (location .status )
6973 print (f" - { name } : { location } (Battery: { battery } )" )
0 commit comments