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:
@@ -38,7 +38,7 @@ import time
|
||||
import urllib.error
|
||||
from datetime import datetime, timedelta, timezone
|
||||
|
||||
from shared.http_utils import http_bytes, http_json
|
||||
from shared.http_utils import http_bytes, http_json, write_json_atomic
|
||||
from shared.paths import ABILITY_ICONS, DATA, HERO_PORTRAITS, ITEM_ICONS
|
||||
|
||||
PATCHES_LIST_URL = "https://www.dota2.com/datafeed/patchnoteslist?language=schinese"
|
||||
@@ -430,13 +430,10 @@ def main() -> None:
|
||||
patches = fetch_patch_list(since_ts)
|
||||
print(f" {len(patches)} patches in window", flush=True)
|
||||
if not patches:
|
||||
OUT.parent.mkdir(parents=True, exist_ok=True)
|
||||
OUT.write_text(
|
||||
json.dumps({"meta": {}, "patches": [], "lookup": {}, "details": {}}, ensure_ascii=False, indent=2),
|
||||
encoding="utf-8",
|
||||
raise SystemExit(
|
||||
"patch list returned no versions in the requested window; "
|
||||
"keeping previous cache"
|
||||
)
|
||||
print("no patches in window; wrote empty file", flush=True)
|
||||
return
|
||||
|
||||
cached = {} if args.force else load_existing_details()
|
||||
details: dict[str, dict] = {}
|
||||
@@ -485,8 +482,7 @@ def main() -> None:
|
||||
"lookup": lookup,
|
||||
"details": details,
|
||||
}
|
||||
OUT.parent.mkdir(parents=True, exist_ok=True)
|
||||
OUT.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||
write_json_atomic(OUT, payload)
|
||||
print(
|
||||
f"saved {len(patches)} patches, {len(details)} details -> {OUT}",
|
||||
flush=True,
|
||||
|
||||
Reference in New Issue
Block a user