v0.5.84: matches origin filter, mobile gate, refresh reliability.
Ship Web refresh cache/lock, mobile demand gate, matches 职业/国服 filter, and related site updates through 0.5.84. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -21,10 +21,9 @@ from pathlib import Path
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
|
||||
|
||||
import argparse
|
||||
import json
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from shared.http_utils import http_json
|
||||
from shared.http_utils import http_json, write_json_atomic
|
||||
from shared.paths import DATA
|
||||
|
||||
OUT = DATA / "leaderboards.json"
|
||||
@@ -67,6 +66,11 @@ def fetch_division(division: str) -> dict:
|
||||
lb = raw.get("leaderboard")
|
||||
if not isinstance(lb, list):
|
||||
raise SystemExit(f"{division}: missing leaderboard array")
|
||||
if len(lb) < TOP_N:
|
||||
raise SystemExit(
|
||||
f"{division}: leaderboard only returned {len(lb)} rows; "
|
||||
"keeping previous cache"
|
||||
)
|
||||
top = [slim_entry(e) for e in lb[:TOP_N] if isinstance(e, dict)]
|
||||
return {
|
||||
"division": division,
|
||||
@@ -102,11 +106,7 @@ def main() -> None:
|
||||
regions[div] = fetch_division(div)
|
||||
|
||||
payload = build_payload(regions)
|
||||
args.out.parent.mkdir(parents=True, exist_ok=True)
|
||||
args.out.write_text(
|
||||
json.dumps(payload, ensure_ascii=False, indent=2) + "\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
write_json_atomic(args.out, payload)
|
||||
parts = [
|
||||
f"{div}={len((regions[div].get('top100') or []))}" for div in REGION_ORDER
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user