Enhanced logging
This commit is contained in:
@@ -23,45 +23,63 @@ async def populate_faction(faction_id: int, kind: str):
|
||||
|
||||
url = f"https://api.torn.com/v2/faction/{faction_id}?selections=members&key={TORN_API_KEY}"
|
||||
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(url) as resp:
|
||||
if resp.status != 200:
|
||||
print(f"Error fetching faction {faction_id}: {resp.status}")
|
||||
return False
|
||||
data = await resp.json()
|
||||
try:
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(url) as resp:
|
||||
if resp.status != 200:
|
||||
error_text = await resp.text()
|
||||
print(f"[ERROR] Torn API returned {resp.status} for {kind} faction {faction_id}")
|
||||
print(f"[ERROR] Response: {error_text[:200]}")
|
||||
return False
|
||||
data = await resp.json()
|
||||
|
||||
members_list = data.get("members", [])
|
||||
if not members_list:
|
||||
# Check for API error response
|
||||
if "error" in data:
|
||||
print(f"[ERROR] Torn API error for {kind} faction {faction_id}: {data['error']}")
|
||||
return False
|
||||
|
||||
members_list = data.get("members", [])
|
||||
if not members_list:
|
||||
print(f"[ERROR] No members found in {kind} faction {faction_id}")
|
||||
return False
|
||||
|
||||
member_ids = [m.get("id") for m in members_list if "id" in m]
|
||||
if not member_ids:
|
||||
print(f"[ERROR] No valid member IDs in {kind} faction {faction_id}")
|
||||
return False
|
||||
|
||||
print(f"[INFO] Fetching FFScouter data for {len(member_ids)} members from {kind} faction {faction_id}")
|
||||
# Fetch FFScouter estimates
|
||||
ff_data = await fetch_batch_stats(member_ids)
|
||||
|
||||
received_ids = []
|
||||
async with (friendly_lock if kind == "friendly" else enemy_lock):
|
||||
for m in members_list:
|
||||
pid = m["id"]
|
||||
est = ff_data.get(str(pid), {}).get("bs_estimate_human", "?")
|
||||
status = m.get("status", {}).get("state", "Unknown")
|
||||
member_data = {
|
||||
"id": pid,
|
||||
"name": m.get("name", "Unknown"),
|
||||
"level": m.get("level", 0),
|
||||
"estimate": est,
|
||||
"status": status
|
||||
}
|
||||
await STATE.upsert_member(member_data, kind)
|
||||
received_ids.append(pid)
|
||||
|
||||
# Remove missing members from STATE
|
||||
await STATE.remove_missing_members(received_ids, kind)
|
||||
|
||||
print(f"[SUCCESS] Populated {len(received_ids)} {kind} members from faction {faction_id}")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"[ERROR] Exception in populate_faction for {kind} faction {faction_id}: {type(e).__name__}: {str(e)}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return False
|
||||
|
||||
member_ids = [m.get("id") for m in members_list if "id" in m]
|
||||
if not member_ids:
|
||||
return False
|
||||
|
||||
# Fetch FFScouter estimates
|
||||
ff_data = await fetch_batch_stats(member_ids)
|
||||
|
||||
received_ids = []
|
||||
async with (friendly_lock if kind == "friendly" else enemy_lock):
|
||||
for m in members_list:
|
||||
pid = m["id"]
|
||||
est = ff_data.get(str(pid), {}).get("bs_estimate_human", "?")
|
||||
status = m.get("status", {}).get("state", "Unknown")
|
||||
member_data = {
|
||||
"id": pid,
|
||||
"name": m.get("name", "Unknown"),
|
||||
"level": m.get("level", 0),
|
||||
"estimate": est,
|
||||
"status": status
|
||||
}
|
||||
await STATE.upsert_member(member_data, kind)
|
||||
received_ids.append(pid)
|
||||
|
||||
# Remove missing members from STATE
|
||||
await STATE.remove_missing_members(received_ids, kind)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
# Status refresh loop
|
||||
async def refresh_status_loop(faction_id: int, kind: str, lock: asyncio.Lock, interval: int):
|
||||
|
||||
Reference in New Issue
Block a user