98 with open(SRC, encoding=
"utf-8")
as f:
99 for r
in csv.DictReader(f):
100 if not r[
"flag_id"].isdigit():
102 addr =
address(int(r[
"flag_id"]))
109 if r[
"name"].startswith(
"after defeating "):
111 rows.setdefault((r[
"family"], addr), []).append(r[
"name"])
113 sys.exit(
"no rows survived -- check the source CSV")
115 for (family, addr), names
in rows.items():
116 title = TITLE.get(family, family.replace(
"_",
" ").capitalize())
117 table.setdefault(title, []).append([addr[0], addr[1],
label_for(names)])
118 for rs
in table.values():
120 with open(OUT,
"w", encoding=
"utf-8")
as f:
121 json.dump(dict(sorted(table.items())), f, ensure_ascii=
False, indent=1)
123 total = sum(len(v)
for v
in table.values())
124 print(f
"wrote {OUT}: {total} flags in {len(table)} families")