all repos — site @ 67f38fb7f910c2308c08d9b71d83aeac8c9290c1

source for my site, found at icyphox.sh

bin/update_index.py (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
#!/usr/bin/env python3

import os
import frontmatter as fm
import jinja2
from jinja2 import DebugUndefined


def get_metas(blog):
    all_metas = []
    files  = [ blog + f for f in os.listdir(blog) if f not in ["_index.md", "feed.xml"]]
    for f in files:
        with open(f) as fx:
            meta, _ = fm.parse(fx.read())
            all_metas.append(meta)
    
    all_metas.sort(key=lambda x: x['date'], reverse=True)
    return all_metas


def jinja_render(posts, tmpl):
    template_loader = jinja2.FileSystemLoader("./")
    env = jinja2.Environment(loader=template_loader, undefined=DebugUndefined)
    try:
        template = env.get_template(tmpl)
    except jinja2.exceptions.TemplateNotFound:
        print("error: template not found")

    out = template.render(posts=posts)
    return out


if __name__ == "__main__":
    all_metas = get_metas("pages/blog/")
    rendered = jinja_render(all_metas, "templates/_index.html") 
    with open("templates/index.html", "w") as f:
        f.write(rendered)