Explorar el Código

just take the most recent company ID

FIO seems to keep old data around forever
so there's no need to incrementally from the old known companies
raylu hace 1 mes
padre
commit
e39bb77097
Se han modificado 2 ficheros con 20 adiciones y 28 borrados
  1. 20 28
      py/update_companies.py
  2. 0 0
      www/data/knownCompanies.json

+ 20 - 28
py/update_companies.py

@@ -11,37 +11,29 @@ def main() -> None:
 		config = tomllib.load(f)
 	fio_api_key = config['fio_api_key']
 
-	with open('www/data/knownCompanies.json', 'r') as f:
-		companies: dict = json.load(f)
-	usernames = {co['Username'].casefold(): co_id for co_id, co in companies.items() if co['Username'] is not None}
 
 	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']) # duplicate usernames appear due to COLIQs
-	try:
-		for company in all_companies:
-			username = company['UserName']
-			if username is None:
-				print(company['CompanyId'], 'has no username:', company)
-				continue
-
-			old_co_id = usernames.get(username.casefold())
-			if old_co_id is not None and old_co_id != company['CompanyId']:
-				print(username, 'previously known as', old_co_id)
-				companies.pop(old_co_id, None)
-
-			known_company = {'Username': username}
-			if corp := company.get('CorporationCode'):
-				known_company['Corporation'] = corp
-
-			if known_company == companies.get(company['CompanyId']):
-				print(username, 'had no change')
-			else:
-				print(known_company)
-				companies[company['CompanyId']] = known_company
-	finally:
-		with open('www/data/knownCompanies.json', 'w') as f:
-			json.dump(companies, f)
+	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

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
www/data/knownCompanies.json


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio