/ concept-collection / abc-step-1000
Sign in
concept-collection / abc-step-1000
abc-step-1000 / scripts / make_index.py
38 lines · 1.3 KBBlameHistoryRaw
1#!/usr/bin/env python3
2"""Write site/index.json listing every hosted file with its download path."""
3import json
4import sys
5from datetime import datetime, timezone
6from pathlib import Path
8files_txt, site_dir, chunk_name = sys.argv[1], Path(sys.argv[2]), sys.argv[3]
10files = []
11for line in Path(files_txt).read_text().splitlines():
12 src = Path(line)
13 gz = site_dir / "step" / (src.name + ".gz")
14 files.append({
15 "id": src.name[:8],
16 "name": src.name,
17 "path": f"step/{gz.name}",
18 "stepBytes": src.stat().st_size,
19 "gzBytes": gz.stat().st_size,
20 })
22index = {
23 "name": "abc-step-1000",
24 "description": "First 1000 STEP files from the ABC dataset, "
25 "served gzip-compressed",
26 "source": "https://deep-geometry.github.io/abc-dataset/",
27 "chunk": chunk_name,
28 "generated": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
29 "count": len(files),
30 "totalStepBytes": sum(f["stepBytes"] for f in files),
31 "totalGzBytes": sum(f["gzBytes"] for f in files),
32 "files": files,
35(site_dir / "index.json").write_text(json.dumps(index, indent=1))
36print(f"index.json: {len(files)} files, "
37 f"{index['totalStepBytes'] / 1e9:.2f} GB uncompressed, "
38 f"{index['totalGzBytes'] / 1e9:.2f} GB compressed")
moveopenescclose