diff --git a/tools/fetch.py b/tools/fetch.py new file mode 100755 index 0000000..901a1c8 --- /dev/null +++ b/tools/fetch.py @@ -0,0 +1,29 @@ +#! /usr/bin/python3 + +import requests +import zipfile + +url = "https://puzzles.cyberfire.training/foundry/" +url = url.rstrip("/") + +r = requests.get(url + "/puzzles.json") +puzzles = r.json() + +zf = zipfile.ZipFile("/tmp/foundry.zip", "w") +for cat, entries in puzzles.items(): + if cat == "wopr": + continue + + for points, dn in entries: + if points == 0: + continue + u = "{}/{}/{}/puzzle.json".format(url, cat, dn) + + print(u, points, dn) + obj = requests.get(u).json() + files = obj.get("files") + ["index.html"] + + for fn in files: + path = "{}/{}/{}".format(cat, points, fn) + data = requests.get(u).content + zf.writestr(path, data)