@@ -32,8 +32,9 @@ There are no tests or linters configured.## Key Routes- `/blog/<slug>/` — single post- `/blog/<slug>/pdf/` — PDF export via WeasyPrint- `/blog/<slug>/md/` — raw markdown download- `/posts/<slug>/` — single post (old `/blog/<slug>/` 301-redirects here)- `/posts/<slug>/pdf/` — PDF export via WeasyPrint- `/posts/<slug>/md/` — raw markdown download- `/blog/` — post index (also `/blog/tag/<tag>/` and `/blog/year/<year>/`)- `/search/live/` — JSON endpoint for live search- `/og/<slug>.svg` — dynamic OG image generation
@@ -17,6 +17,7 @@ from flask import ( Response, abort, jsonify, redirect, render_template, request, send_from_directory,
@@ -280,7 +281,7 @@ def blog_index(): )@app.route("/blog/<slug>/")@app.route("/posts/<slug>/")def blog_post(slug): post = POSTS_BY_SLUG.get(slug) if not post or post["publish_date"] > date.today().isoformat():
@@ -298,7 +299,7 @@ def blog_post(slug): )@app.route("/blog/<slug>/pdf/")@app.route("/posts/<slug>/pdf/")def blog_post_pdf(slug): post = POSTS_BY_SLUG.get(slug) if not post or post["publish_date"] > date.today().isoformat():
@@ -315,7 +316,7 @@ def blog_post_pdf(slug): )@app.route("/blog/<slug>/md/")@app.route("/posts/<slug>/md/")def blog_post_md(slug): post = POSTS_BY_SLUG.get(slug) if not post or post["publish_date"] > date.today().isoformat():
@@ -330,6 +331,21 @@ def blog_post_md(slug): )@app.route("/blog/<slug>/")def blog_post_redirect(slug): return redirect(url_for("blog_post", slug=slug), code=301)@app.route("/blog/<slug>/pdf/")def blog_post_pdf_redirect(slug): return redirect(url_for("blog_post_pdf", slug=slug), code=301)@app.route("/blog/<slug>/md/")def blog_post_md_redirect(slug): return redirect(url_for("blog_post_md", slug=slug), code=301)@app.route("/blog/tag/<tag>/")def blog_tag(tag): posts = get_published_posts()
modified
templates/sitemap.xml
@@ -10,7 +10,7 @@ </url> {% for post in posts %} <url> <loc>{{ request.url_root }}blog/{{ post.slug }}/</loc> <loc>{{ request.url_root }}posts/{{ post.slug }}/</loc> <lastmod>{{ post.date }}</lastmod> <changefreq>yearly</changefreq> </url>