| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- from __future__ import annotations
- import json
- import tomllib
- import typing
- import httpx
- def main() -> None:
- with open('config.toml', 'rb') as f:
- config = tomllib.load(f)
- fio_api_key = config['fio_api_key']
- all_companies: list[FIOCompany] = httpx.get('https://rest.fnar.net/company/all',
- headers={'Authorization': fio_api_key}).raise_for_status().json()
- all_companies.sort(key=lambda co: co['Timestamp'], reverse=True) # duplicate usernames appear due to COLIQs
- usernames = set()
- companies = {}
- for company in all_companies:
- username = company['UserName']
- if username is None:
- continue
- if username in usernames:
- continue
- else:
- usernames.add(username)
- known_company = {'Username': username}
- if corp := company.get('CorporationCode'):
- known_company['Corporation'] = corp
- companies[company['CompanyId']] = known_company
- with open('www/data/knownCompanies.json', 'w') as f:
- json.dump(companies, f)
- class FIOCompany(typing.TypedDict):
- CompanyId: str
- UserName: str | None
- CorporationCode: str | None
- Timestamp: str
- if __name__ == '__main__':
- main()
|