Compare commits

..

6 Commits

Author SHA1 Message Date
veclav talica
969d7ee5c1 add rss link to side panel 2023-05-22 18:38:08 +05:00
veclav talica
64938e2bbb exit shell on subprocess error 2023-05-22 18:30:16 +05:00
veclav talica
6a9f8572c9 move MONTHS to page_shares, add weekday dict 2023-05-22 18:29:58 +05:00
veclav talica
5cc4ff44a6 rss feed generation 2023-05-22 18:29:20 +05:00
veclav talica
fde6cfe644 move adjectives to page_shares.py 2023-05-22 16:21:00 +05:00
veclav talica
590f344c6d seed the rng by time 2023-05-22 16:18:54 +05:00
7 changed files with 108 additions and 23 deletions

View File

@ -1,5 +1,7 @@
#!/bin/sh
set +e
mkdir -p ./html/articles
./tools/main_page_generator.py ./articles | ./tools/mmd/build/multimarkdown > ./html/index.html
@ -9,3 +11,5 @@ for d in ./articles/*; do
./tools/article_wrapper.py "$d/page.mmd" | ./tools/mmd/build/multimarkdown > "./html/articles/$(basename -- $d).html"
fi
done
./tools/feed_generator.py ./articles/ https://mjestecko.neocities.org/ > ./html/feed.xml

View File

@ -1,20 +1,5 @@
import time, subprocess
MONTHS = {
1: "January",
2: "February",
3: "March",
4: "April",
5: "May",
6: "June",
7: "July",
8: "August",
9: "September",
10: "October",
11: "November",
12: "December"
}
def the_line_after_metadata(lines: []) -> int:
i = 0
while lines[i].strip():

View File

@ -5,8 +5,8 @@
from sys import argv, exit
import time
from article_utils import the_line_after_metadata, parse_metadata, MONTHS
from page_shares import wrap_page
from article_utils import the_line_after_metadata, parse_metadata
from page_shares import wrap_page, MONTHS
if len(argv) <= 1:
print("No file was supplied")

64
tools/feed_generator.py Executable file
View File

@ -0,0 +1,64 @@
#!/usr/bin/python3
from sys import argv, exit
from os import walk, path
from random import choice, seed
from textwrap import indent
import time, urllib.parse, re, subprocess
from article_utils import parse_metadata
from page_shares import ADJECTIVES
from rfc822 import stringify_date
if len(argv) <= 1:
print("No directory was supplied")
exit(-1)
if len(argv) <= 2:
print("No address was supplied")
exit(-1)
seed()
address = argv[2]
# todo: Find the latest pubDate
feed = f"""<rss version="2.0">
<channel>
<title>mjestečko</title>
<link>{address}</link>
<description>Personal blog of one {choice(ADJECTIVES)} Veclav Talica</description>
<language>en</language>
<lastBuildDate>{stringify_date(time.gmtime(int(time.time())))}</lastBuildDate>
"""
body_taker = re.compile(r"<body>(.*)</body>", re.DOTALL)
for root, dirs, _ in walk(argv[1]):
for d in dirs:
metadata = parse_metadata(path.abspath(root + '/' + d + "/page.mmd"))
feed += (
" <item>\n"
f""" <title>{metadata.get("Title", "No title!? ;-;")}</title>\n"""
)
body = subprocess.getoutput(f"./tools/mmd/build/multimarkdown {root}/{d}/page.mmd")
feed += (
" <description>\n"
" <![CDATA[\n"
f"{indent(body_taker.search(body)[1], ' ' * 12)}\n"
" ]]>\n"
" </description>\n"
)
if "Date" in metadata:
feed += \
f""" <pubDate>{stringify_date(metadata["Date"])}</pubDate>\n"""
feed += (
f""" <guid>/articles/{d}</guid>\n"""
f""" <link>{address}/articles/{urllib.parse.quote(d)}</link>\n"""
" </item>\n"
)
feed += """ </channel>
</rss>"""
print(feed)

View File

@ -2,24 +2,24 @@
from sys import argv, exit
from os import walk, path
from random import choice
from random import choice, seed
import time, urllib.parse
from article_utils import parse_metadata, MONTHS
from page_shares import wrap_page
from article_utils import parse_metadata
from page_shares import wrap_page, ADJECTIVES, MONTHS
if len(argv) <= 1:
print("No directory was supplied")
exit(-1)
seed()
page_metadata = """Title: mjestečko
CSS: /style.css
"""
adjectives = ["*wild*", "**wacky**", "very humble", "**most serious**"]
page = f"""Personal blog of one {choice(adjectives)} Veclav Talica.
page = f"""Personal blog of one {choice(ADJECTIVES)} Veclav Talica.
---

View File

@ -9,6 +9,7 @@ HEAD_EMBED = """
<ul class="nav">
<li><a href="/">main page</a></li>
<li><a href="https://git.poto.cafe/veclavtalica/mjestecko">source</a></li>
<li><a href="/feed.xml">rss</a></li>
<li><a href="/articles/mjestečko.html">about</a></li>
</ul>
@ -26,5 +27,32 @@ TAIL_EMBED = """
"""
ADJECTIVES = ["*wild*", "**wacky**", "very humble", "**most serious**"]
MONTHS = {
1: "January",
2: "February",
3: "March",
4: "April",
5: "May",
6: "June",
7: "July",
8: "August",
9: "September",
10: "October",
11: "November",
12: "December"
}
WEEKDAYS = {
0: "Monday",
1: "Tuesday",
2: "Wednesday",
3: "Thursday",
4: "Friday",
5: "Saturday",
6: "Sunday"
}
def wrap_page(page: str) -> str:
return HEAD_EMBED + page + TAIL_EMBED

4
tools/rfc822.py Normal file
View File

@ -0,0 +1,4 @@
from page_shares import MONTHS, WEEKDAYS
def stringify_date(date) -> str:
return f"{WEEKDAYS[date.tm_wday][:3]}, {date.tm_mday} {MONTHS[date.tm_mon][:3]} {date.tm_year} {date.tm_hour:02d}:{date.tm_min:02d}:{date.tm_sec:02d} GMT"