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:
voson
2026-07-29 18:31:55 +08:00
co-authored by Cursor
parent 7681fdb069
commit b01552ee6e
50 changed files with 3406 additions and 487 deletions
+3 -12
View File
@@ -24,7 +24,7 @@ import urllib.error
from datetime import datetime, timezone
from shared.grid import hero_table
from shared.http_utils import download_icons, http_json, load_itemlist_zh
from shared.http_utils import download_icons, http_json, load_itemlist_zh, write_json_atomic
from shared.paths import DATA, ITEM_ICONS
OPENDOTA = "https://api.opendota.com/api"
@@ -284,21 +284,12 @@ def main() -> None:
used_ids.update(int(row["id"]) for row in core if isinstance(row, dict) and "id" in row)
print(f" [{n}/{len(pending)}] {key}: {len(core)} core items", flush=True)
args.out.parent.mkdir(parents=True, exist_ok=True)
args.out.write_text(
json.dumps(build_payload(by_hero, catalog, used_ids), ensure_ascii=False, indent=2)
+ "\n",
encoding="utf-8",
)
write_json_atomic(args.out, build_payload(by_hero, catalog, used_ids))
time.sleep(args.delay)
used_ids = collect_used_ids(by_hero)
payload = build_payload(by_hero, catalog, used_ids)
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)
if not args.skip_icons:
keys = {catalog[iid]["key"] for iid in used_ids if iid in catalog}