| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- from __future__ import annotations
- import json
- import tomllib
- import httpx
- def main() -> None:
- with open('config.toml', 'rb') as f:
- config = tomllib.load(f)
- fio_api_key = config['fio_api_key']
- with open('www/data/knownCompanies.json', 'r') as f:
- companies = json.load(f)
- usernames = frozenset(v['Username'] for v in companies.values())
- all_users: frozenset[str] = frozenset(
- httpx.get('https://rest.fnar.net/user/allusers', headers={'Authorization': fio_api_key}).raise_for_status().json())
- new_users = all_users - usernames
- print(len(new_users), 'new users')
- try:
- for username in new_users:
- response = httpx.get('https://rest.fnar.net/user/' + username)
- if response.status_code in (204, 404):
- print(username, 'not found')
- continue
- response.raise_for_status()
- fio_user = response.json()
- assert username.casefold() == fio_user['UserName'].casefold(), f'{username} != {fio_user["UserName"]}'
- known_user = {'Username': username, 'CompanyId': fio_user['CompanyId']}
- if corp := fio_user.get('CorporationCode'):
- known_user['Corporation'] = corp
- print(known_user)
- companies[fio_user['CompanyId']] = known_user
- finally:
- with open('www/data/knownCompanies.json', 'w') as f:
- json.dump(companies, f)
- if __name__ == '__main__':
- main()
|