"""Parse cached serverlist: decode the abbreviated serverData fields and find the TCP gateway (host/port) for the 玖扬复古176 servers. """ import json import sys from pathlib import Path if hasattr(sys.stdout, "reconfigure"): sys.stdout.reconfigure(encoding="utf-8", errors="replace") SRVLIST = Path(r"D:\ProgramFiles\996box\GameBoxDownload\1\cq\cache_206923\ResServerlist.txt_206923") def main() -> int: data = json.loads(SRVLIST.read_text(encoding="utf-8")) servers = data["serverData"] groups = {g["tag"]: g["name"] for g in data["serverGroup"]} print("=== First 2 servers (all fields) ===") for s in servers[:2]: print(json.dumps(s, ensure_ascii=False, indent=2)) print() print("=== Field value patterns (servers 3-6) ===") for s in servers[2:6]: print({k: (str(v)[:70]) for k, v in s.items()}) print() # Find 玖扬 group jiuyang_tags = [t for t, n in groups.items() if "玖扬" in str(n) or "复古" in str(n)] print(f"jiuyang group tags: {jiuyang_tags} -> {[groups.get(t) for t in jiuyang_tags]}") print() print("=== Servers in 玖扬复古176 group (first 5) ===") count = 0 for s in servers: if s.get("g") in jiuyang_tags: print(json.dumps(s, ensure_ascii=False)) count += 1 if count >= 5: break print(f"(total shown: {count})") print() print("=== User's server (s contains 14414738) ===") for s in servers: if "14414738" in str(s.get("s", "")) or "14414738" in str(s.get("d", "")): print(json.dumps(s, ensure_ascii=False, indent=2)) break return 0 if __name__ == "__main__": sys.exit(main())