mirror of
https://git.davidovski.xyz/kblg.git
synced 2024-08-15 00:43:36 +00:00
107 lines
3.1 KiB
Python
107 lines
3.1 KiB
Python
import markdown
|
|
import os
|
|
import time
|
|
import shutil
|
|
|
|
from const import *
|
|
|
|
def getTemplateHTML(name):
|
|
html = ""
|
|
with open(os.path.join(templates, name), "r") as file:
|
|
html = file.read();
|
|
return html
|
|
|
|
def listPages():
|
|
return [
|
|
(lambda path:
|
|
(lambda content:
|
|
(lambda timestamp:
|
|
(lambda name: {
|
|
"source_file" : path,
|
|
"source_content" : content,
|
|
"html" : markdown.markdown(content),
|
|
"timestamp" : timestamp,
|
|
"date": time.strftime(date_format, time.localtime(timestamp)),
|
|
"name" : name,
|
|
"url" : f"entries/{name}.html"
|
|
})(".".join(p.split(".")[:-1]))
|
|
)(os.stat(path).st_ctime)
|
|
)(open(path, "r").read())
|
|
)(os.path.join(source, p)) for p in os.listdir(source)
|
|
]
|
|
|
|
def formatEntry(content, page):
|
|
return content.replace("%date%", page["date"])\
|
|
.replace("%name%", page["name"])\
|
|
.replace("%time%", str(page["timestamp"]))\
|
|
.replace("%source%", site_index + page["source_file"])\
|
|
.replace("%url%", site_index + page["url"])
|
|
|
|
def make():
|
|
|
|
try:
|
|
os.makedirs(os.path.join(dist, "entries"))
|
|
except:
|
|
print("Already have content")
|
|
shutil.rmtree(os.path.join(dist, "src"))
|
|
shutil.rmtree(os.path.join(dist, "images"))
|
|
shutil.copytree(source, os.path.join(dist, "src"))
|
|
shutil.copytree(images, os.path.join(dist, "images"))
|
|
|
|
pages = listPages()
|
|
|
|
summary_templ = getTemplateHTML("summary.html")
|
|
|
|
summariesHTML = "\n".join(
|
|
[
|
|
formatEntry(summary_templ, page)
|
|
.replace(
|
|
"%content%",
|
|
"\n".join(page["html"].split("\n")[:summary_max])
|
|
)
|
|
|
|
for page in pages
|
|
]
|
|
)
|
|
|
|
entry_templ = getTemplateHTML("page.html")
|
|
|
|
for page in pages:
|
|
with open(os.path.join(dist, page["url"]), "w") as entry:
|
|
entry.write(
|
|
formatEntry(
|
|
entry_templ,
|
|
page
|
|
)
|
|
.replace("%content%", page["html"])
|
|
)
|
|
|
|
|
|
|
|
index_templ = getTemplateHTML("index.html")
|
|
|
|
with open(os.path.join(dist, "index.html"), "w") as index:
|
|
index.write(
|
|
index_templ.replace("%entries%", summariesHTML)
|
|
)
|
|
|
|
|
|
item_templ = getTemplateHTML("item.xml")
|
|
rss_templ = getTemplateHTML("rss.xml")
|
|
itemsXML = "\n".join(
|
|
[
|
|
formatEntry(item_templ, page).replace("%content%", page["html"])
|
|
for page in pages
|
|
]
|
|
)
|
|
|
|
with open(os.path.join(dist, "rss.xml"), "w") as index:
|
|
index.write(
|
|
rss_templ.replace("%items%", itemsXML)
|
|
)
|
|
|
|
print(f"built in {len(pages)} pages")
|
|
make()
|
|
|
|
|
|
|