update_companies.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from __future__ import annotations
  2. import json
  3. import tomllib
  4. import typing
  5. import httpx
  6. def main() -> None:
  7. with open('config.toml', 'rb') as f:
  8. config = tomllib.load(f)
  9. fio_api_key = config['fio_api_key']
  10. with open('www/data/knownCompanies.json', 'r') as f:
  11. companies = json.load(f)
  12. all_companies: typing.Collection[FIOCompany] = httpx.get('https://rest.fnar.net/company/all',
  13. headers={'Authorization': fio_api_key}).raise_for_status().json()
  14. try:
  15. for company in all_companies:
  16. username = company['UserName']
  17. if username is None:
  18. print(company['CompanyId'], 'has no username:', company)
  19. continue
  20. known_company = {'Username': username}
  21. if corp := company.get('CorporationCode'):
  22. known_company['Corporation'] = corp
  23. if known_company == companies.get(company['CompanyId']):
  24. print(username, 'had no change')
  25. else:
  26. print(known_company)
  27. companies[company['CompanyId']] = known_company
  28. finally:
  29. with open('www/data/knownCompanies.json', 'w') as f:
  30. json.dump(companies, f)
  31. class FIOCompany(typing.TypedDict):
  32. CompanyId: str
  33. UserName: str | None
  34. CorporationCode: str | None
  35. if __name__ == '__main__':
  36. main()