aboutsummaryrefslogtreecommitdiff
path: root/blog_experiment/blog
diff options
context:
space:
mode:
authoralex <alex@pdp7.net>2023-10-08 20:48:47 +0200
committeralex <alex@pdp7.net>2023-10-08 20:48:47 +0200
commitcd9e5d7c5c59fb601413a4167f3f97376359156e (patch)
tree11938a0677d6166e9b3ff78927d4abdf34acb50f /blog_experiment/blog
parent9530e8ee47a21f9f0775ed7867d22b02d7445182 (diff)
Add links
* Prettify using lxml instead of bs4, because bs4 changes whitespace :(
Diffstat (limited to 'blog_experiment/blog')
-rw-r--r--blog_experiment/blog/blog_pages.py6
-rw-r--r--blog_experiment/blog/html.py22
-rw-r--r--blog_experiment/blog/meta.py9
-rw-r--r--blog_experiment/blog/pretty.py5
4 files changed, 32 insertions, 10 deletions
diff --git a/blog_experiment/blog/blog_pages.py b/blog_experiment/blog/blog_pages.py
index b6f22087..065e4881 100644
--- a/blog_experiment/blog/blog_pages.py
+++ b/blog_experiment/blog/blog_pages.py
@@ -3,15 +3,13 @@ import itertools
import pathlib
import textwrap
-import bs4
-
import bicephalus
import htmlgenerator as h
from feedgen import feed
-from blog import html, page, gemtext, meta
+from blog import html, page, gemtext, meta, pretty
class Entry:
@@ -152,7 +150,7 @@ class Root(page.BasePage):
fe.published(datetime.datetime.combine(entry.posted, datetime.datetime.min.time(), tzinfo=datetime.timezone.utc))
fe.title(entry.title)
html = h.render(h.BaseElement(*entry.html()), {})
- html = bs4.BeautifulSoup(html, features="html.parser").prettify()
+ html = pretty.pretty_html(html)
fe.content(html, type="html")
return bicephalus.Response(
diff --git a/blog_experiment/blog/html.py b/blog_experiment/blog/html.py
index 25a2e82e..c7112ea8 100644
--- a/blog_experiment/blog/html.py
+++ b/blog_experiment/blog/html.py
@@ -1,25 +1,35 @@
-import bs4
+import itertools
+
import htmlgenerator as h
-from blog import meta
+from blog import meta, pretty
def html_template(*content, page_title=None):
- title = meta.TITLE
+ title = [h.A(meta.TITLE, href=meta.BASE_URL)]
if page_title:
title += f" - {page_title}"
- return bs4.BeautifulSoup(h.render(
+
+ title = h.BaseElement(*title)
+
+ links = list(itertools.chain(*[(h.A(text, href=href), ", ") for text, href in meta.LINKS]))
+
+ links += h.BaseElement(f" {meta.EMAIL_TEXT}")
+
+ return pretty.pretty_html(h.render(
h.HTML(
h.HEAD(
- h.TITLE(title),
+ h.TITLE(meta.TITLE + (f" - {page_title}" if page_title else "")),
h.LINK(rel="alternate", type="application/rss+xml", title=meta.TITLE, href=f"{meta.BASE_URL}/feed/"),
),
h.BODY(
h.H1(title),
h.H2(meta.SUBTITLE),
+ h.P(*links),
*content,
),
doctype="html",
),
{},
- ), features="html.parser").prettify()
+ ))
+
diff --git a/blog_experiment/blog/meta.py b/blog_experiment/blog/meta.py
index 81c74a9d..8ab08848 100644
--- a/blog_experiment/blog/meta.py
+++ b/blog_experiment/blog/meta.py
@@ -1,3 +1,12 @@
TITLE = "El blog es mío"
SUBTITLE = "Hay otros como él, pero este es el mío"
BASE_URL = "https://blog.pdp7.net"
+
+LINKS = (
+ ("GitHub", "https://github.com/alexpdp7/"),
+ ("LinkedIn", "https://es.linkedin.com/in/alexcorcoles"),
+ ("Project Euler", "https://projecteuler.net/profile/koalillo.png"),
+ ("Stack Exchange", "https://stackexchange.com/users/13361/alex"),
+)
+
+EMAIL_TEXT = "escríbeme cogiendo el dominio de esta web y cambiando el primer punto por una arroba"
diff --git a/blog_experiment/blog/pretty.py b/blog_experiment/blog/pretty.py
new file mode 100644
index 00000000..2ae916a7
--- /dev/null
+++ b/blog_experiment/blog/pretty.py
@@ -0,0 +1,5 @@
+from lxml import etree, html
+
+
+def pretty_html(s):
+ return etree.tostring(html.fromstring(s), pretty_print=True).decode("utf8")