aboutsummaryrefslogtreecommitdiff
path: root/blog_experiment
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
parent9530e8ee47a21f9f0775ed7867d22b02d7445182 (diff)
Add links
* Prettify using lxml instead of bs4, because bs4 changes whitespace :(
Diffstat (limited to 'blog_experiment')
-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
-rw-r--r--blog_experiment/poetry.lock2
-rw-r--r--blog_experiment/pyproject.toml1
6 files changed, 34 insertions, 11 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")
diff --git a/blog_experiment/poetry.lock b/blog_experiment/poetry.lock
index 508ed169..57ce657d 100644
--- a/blog_experiment/poetry.lock
+++ b/blog_experiment/poetry.lock
@@ -1321,4 +1321,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p
[metadata]
lock-version = "2.0"
python-versions = "^3.9"
-content-hash = "d84139eb7e19e366ef33bb9e36f3c74ca432b9c5931d9f19d6fb1b8693400654"
+content-hash = "97fc5ab9e66a2dd243b910c6408cbf77194f61b070c35ef9d2aca9ea1c329c56"
diff --git a/blog_experiment/pyproject.toml b/blog_experiment/pyproject.toml
index 61878a93..b236e8ea 100644
--- a/blog_experiment/pyproject.toml
+++ b/blog_experiment/pyproject.toml
@@ -12,6 +12,7 @@ bicephalus = { git = "https://github.com/alexpdp7/bicephalus.git" }
htmlgenerator = "^1.2.28"
beautifulsoup4 = "^4.12.2"
feedgen = "^0.9.0"
+lxml = "^4.9.3"
[tool.poetry.group.dev.dependencies]
pytest = "^7.4.2"