storage.py 936 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. from __future__ import annotations
  2. import sys
  3. import typing
  4. import httpx
  5. from config import config
  6. def main():
  7. items = frozenset(i.upper() for i in sys.argv[1:])
  8. users: typing.Sequence[UserStore] = httpx.get('https://api.punoted.net/v1/storages/',
  9. headers={'X-Data-Token': config.punoted_api_key}).raise_for_status().json()
  10. for user in users:
  11. print(user['Username'])
  12. for storage in user['Storages']:
  13. for item in storage['StorageItems']:
  14. if item['MaterialTicker'] in items:
  15. name = storage['Name']
  16. if name == 'null':
  17. name = storage['Location']
  18. print(f'\t{name}: {item["MaterialAmount"]}')
  19. class UserStore(typing.TypedDict):
  20. Username: str
  21. Storages: typing.Sequence[Storage]
  22. class Storage(typing.TypedDict):
  23. Name: str
  24. Location: str
  25. StorageItems: typing.Sequence[StorageItem]
  26. class StorageItem(typing.TypedDict):
  27. MaterialTicker: str
  28. MaterialAmount: int
  29. if __name__ == '__main__':
  30. main()