diff options
-rwxr-xr-x | build.py | 25 |
1 files changed, 15 insertions, 10 deletions
@@ -2,7 +2,6 @@ import jinja2 from PIL import Image import argparse -from pathlib import Path import yaml import os import re @@ -11,6 +10,7 @@ import hashlib imagereg = re.compile("([a-z0-9]*)\\..*") resreg = re.compile("([0-9]*)x([0-9]*)") + def hashfile(fname): md5 = hashlib.md5() print(fname) @@ -20,18 +20,21 @@ def hashfile(fname): return md5 + def parse_res(res): m = resreg.match(res) return (int(m.group(1)), int(m.group(2))) + class FileLoader(jinja2.BaseLoader): def get_source(self, environment, template): if not os.path.exists(template): - raise TemplateNotFound(template) + raise jinja2.TemplateNotFound(template) mtime = os.path.getmtime(template) with open(template, "r") as f: source = f.read() - return source, template, lambda: mtime == getmtime(template) + return source, template, lambda: mtime == os.path.getmtime(template) + class ImageLocation: def __init__(self, folder): @@ -59,9 +62,11 @@ class ImageLocation: def convert(self, imgname, settings): # First determine the hash from settings - thash = hashlib.md5(bytes( - f"{settings['res']}+{settings['ext']}" + imgname - , encoding="utf8")).hexdigest() + thash = hashlib.md5( + bytes( + f"{settings['res']}+{settings['ext']}" + imgname, + encoding="utf8") + ).hexdigest() # Now check if it exists if thash in self.existing: @@ -104,6 +109,7 @@ class ImageLocation: print(f"Removing file {fname}") os.remove(fname) + class Renderer: def __init__(self, config_file, loadpath, resolution, extension): self.config = Renderer.__load_config(config_file) @@ -134,7 +140,7 @@ class Renderer: loc = ImageLocation(os.path.join(dest, "imgs")) jenv = jinja2.Environment( - loader = FileLoader(), + loader=FileLoader(), autoescape=jinja2.select_autoescape(['html', 'xml']) ) jenv.globals.update( @@ -144,11 +150,12 @@ class Renderer: tmpl = jenv.get_template(template) with open(os.path.join(dest, "index.html"), "w") as f: - f.write(tmpl.render({**self.config, **context})) + f.write(tmpl.render({**self.config, **context})) if clean: loc.clean() + parser = argparse.ArgumentParser() parser.add_argument("--dest", "-d", default="build", help="where to put resulting files") parser.add_argument("--size", "-s", default="1920x1080", help="size to scale web images to") @@ -169,5 +176,3 @@ context = { rend = Renderer(args.config, args.load, args.size, args.ext) rend.build_to(args.dest, args.template, context, clean=args.clean) - - |