|
|
@@ -0,0 +1,38 @@
|
|
|
+from __future__ import annotations
|
|
|
+import sys
|
|
|
+import typing
|
|
|
+
|
|
|
+import httpx
|
|
|
+
|
|
|
+from config import config
|
|
|
+
|
|
|
+def main():
|
|
|
+ items = frozenset(i.upper() for i in sys.argv[1:])
|
|
|
+ users: typing.Sequence[UserStore] = httpx.get('https://api.punoted.net/v1/storages/',
|
|
|
+ headers={'X-Data-Token': config.punoted_api_key}).raise_for_status().json()
|
|
|
+
|
|
|
+ for user in users:
|
|
|
+ print(user['Username'])
|
|
|
+ for storage in user['Storages']:
|
|
|
+ for item in storage['StorageItems']:
|
|
|
+ if item['MaterialTicker'] in items:
|
|
|
+ name = storage['Name']
|
|
|
+ if name == 'null':
|
|
|
+ name = storage['Location']
|
|
|
+ print(f'\t{name}: {item["MaterialAmount"]}')
|
|
|
+
|
|
|
+class UserStore(typing.TypedDict):
|
|
|
+ Username: str
|
|
|
+ Storages: typing.Sequence[Storage]
|
|
|
+
|
|
|
+class Storage(typing.TypedDict):
|
|
|
+ Name: str
|
|
|
+ Location: str
|
|
|
+ StorageItems: typing.Sequence[StorageItem]
|
|
|
+
|
|
|
+class StorageItem(typing.TypedDict):
|
|
|
+ MaterialTicker: str
|
|
|
+ MaterialAmount: int
|
|
|
+
|
|
|
+if __name__ == '__main__':
|
|
|
+ main()
|