34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
from __future__ import annotations
|
|
|
|
import argparse
|
|
import functools
|
|
import http.server
|
|
import socketserver
|
|
from pathlib import Path
|
|
|
|
from .record import record_episode, write_record
|
|
|
|
|
|
def main() -> None:
|
|
parser = argparse.ArgumentParser(description="Mahjong RL web viewer")
|
|
parser.add_argument("--port", type=int, default=8000)
|
|
parser.add_argument("--seed", type=int, default=None)
|
|
parser.add_argument("--max-steps", type=int, default=200)
|
|
args = parser.parse_args()
|
|
|
|
static_dir = Path(__file__).parent / "static"
|
|
static_dir.mkdir(parents=True, exist_ok=True)
|
|
record_path = static_dir / "steps.json"
|
|
|
|
events = record_episode(seed=args.seed, max_steps=args.max_steps)
|
|
write_record(record_path, events)
|
|
|
|
handler = functools.partial(http.server.SimpleHTTPRequestHandler, directory=str(static_dir))
|
|
with socketserver.TCPServer(("", args.port), handler) as httpd:
|
|
print(f"Serving UI at http://localhost:{args.port}/index.html")
|
|
httpd.serve_forever()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|