#!/usr/bin/env python3
"""Create a portable HTML sampler for whereami JSONL records."""
from __future__ import annotations
import argparse
import json
import random
from pathlib import Path
from typing import Any
try:
from .common import html_escape_text, image_to_data_uri
except ImportError:
from common import html_escape_text, image_to_data_uri
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Render a random whereami sample viewer.")
parser.add_argument("--input-jsonl", type=Path, required=True)
parser.add_argument("--output-html", type=Path, required=True)
parser.add_argument("--examples", type=int, default=12)
parser.add_argument("--seed", type=int, default=0)
parser.add_argument("--max-image-width", type=int, default=360)
return parser.parse_args()
def read_jsonl(path: Path) -> list[dict[str, Any]]:
with path.open() as handle:
return [json.loads(line) for line in handle if line.strip()]
def image_block(path: str, index: int, max_width: int) -> str:
uri = image_to_data_uri(Path(path), max_width=max_width)
if uri is None:
return f"
"""
def main() -> None:
args = parse_args()
records = read_jsonl(args.input_jsonl)
rng = random.Random(args.seed)
if args.examples > 0 and len(records) > args.examples:
records = rng.sample(records, args.examples)
body = "\n".join(render_record(record, args.max_image_width) for record in records)
page = f"""
WhereAmI samples