"""Read ~/data/hn-em-dash/items.csv, apply the sealed rule, write results.json and monthly.csv."""
import csv, json, os, sys
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import rule

HERE = os.path.dirname(os.path.abspath(__file__))
path = sys.argv[1] if len(sys.argv) > 1 else os.path.expanduser("~/data/hn-em-dash/items.csv")
with open(path) as f:
    rows = list(csv.DictReader(f))
kinds = {}
for r in rows:
    kinds[r["kind"]] = kinds.get(r["kind"], 0) + 1
result = rule.analyse(rows)
extra = rule.readers(rows)
out = {k: v for k, v in result.items() if k not in ("share", "n")} | {"readers": extra, "kinds": kinds}
out_dir = sys.argv[2] if len(sys.argv) > 2 else HERE
json.dump(out, open(os.path.join(out_dir, "results.json"), "w"), indent=1)
with open(os.path.join(out_dir, "monthly.csv"), "w", newline="") as f:
    w = csv.writer(f)
    w.writerow(["month", "live_comments"] + [f"share_{x}" for x in rule.FEATURES])
    for m in sorted(result["n"]):
        w.writerow([m, result["n"][m]] + [f"{result['share'][x][m]:.5f}" for x in rule.FEATURES])
print(json.dumps(out, indent=1))
