update_companies.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. all_companies: list[FIOCompany] = httpx.get('https://rest.fnar.net/company/all',
  11. headers={'Authorization': fio_api_key}).raise_for_status().json()
  12. all_companies.sort(key=lambda co: co['Timestamp'], reverse=True) # duplicate usernames appear due to COLIQs
  13. usernames = set()
  14. companies = {}
  15. for company in all_companies:
  16. username = company['UserName']
  17. if username is None:
  18. continue
  19. if username in usernames:
  20. continue
  21. else:
  22. usernames.add(username)
  23. known_company = {'Username': username}
  24. if corp := company.get('CorporationCode'):
  25. known_company['Corporation'] = corp
  26. companies[company['CompanyId']] = known_company
  27. with open('www/data/knownCompanies.json', 'w') as f:
  28. json.dump(companies, f)
  29. class FIOCompany(typing.TypedDict):
  30. CompanyId: str
  31. UserName: str | None
  32. CorporationCode: str | None
  33. Timestamp: str
  34. if __name__ == '__main__':
  35. main()