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()