Added page for browsing posts
This commit is contained in:
parent
e88f66200a
commit
3f40fdb3b3
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
||||||
venv/
|
venv/
|
||||||
log.txt
|
log.txt
|
||||||
src/rss.xml
|
src/rss.xml
|
||||||
|
__pycache__/
|
||||||
|
|
47
main.py
47
main.py
|
@ -1,29 +1,50 @@
|
||||||
import frmWrk.website as website
|
import frmWrk.website as website
|
||||||
import feed_generator
|
import feed_generator
|
||||||
import markdown
|
|
||||||
import pathlib
|
import pathlib
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
|
article_base_html = ""
|
||||||
|
with open("src/article.html") as article_html:
|
||||||
|
article_base_html = article_html.read()
|
||||||
|
|
||||||
|
articles_base_html = ""
|
||||||
|
with open("src/articles.html") as articles_html:
|
||||||
|
articles_base_html = articles_html.read()
|
||||||
|
|
||||||
|
def article_list():
|
||||||
|
article_paths = (pathlib.Path.cwd() / "feed_articles").glob("[0-9]*")
|
||||||
|
article_paths_sorted = sorted(article_paths, key=lambda x: x.name, reverse=True)
|
||||||
|
|
||||||
|
metadatas = [feed_generator.convert_markdown_to_html(path)[1] for path in article_paths_sorted]
|
||||||
|
|
||||||
|
elements = ['<li><a href="articles.html?{guid}">{title} ({guid})</a></li>'.format(title=metadata["title"][0], guid=metadata["guid"][0]) for metadata in metadatas]
|
||||||
|
|
||||||
|
return articles_base_html.format(elements="\n".join(elements))
|
||||||
|
|
||||||
def article(path):
|
def article(path):
|
||||||
|
if not "?" in path:
|
||||||
|
return article_list()
|
||||||
|
|
||||||
article_name = path.split("?")[1]
|
article_name = path.split("?")[1]
|
||||||
article_html = feed_generator.convert_markdown_to_html(pathlib.Path("feed_articles") / article_name)
|
article_html = feed_generator.convert_markdown_to_html(pathlib.Path("feed_articles") / article_name)
|
||||||
|
|
||||||
return article_html[0]
|
return article_base_html.format(body=article_html[0])
|
||||||
|
|
||||||
webserver = website.WebServer("", 3000, "./src", overwrites={"/articles.html": article})
|
if __name__ == "__main__":
|
||||||
|
webserver = website.WebServer("", 3000, "./src", overwrites={"/articles.html": article})
|
||||||
|
|
||||||
webserver.start()
|
webserver.start()
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
feed = feed_generator.make_rss_feed("feed_articles", "Vantens", "https://vanten-s.com/", "Vantens personal feed")
|
feed = feed_generator.make_rss_feed("feed_articles", "Vantens", "https://vanten-s.com/", "Vantens personal feed")
|
||||||
with open("src/rss.xml", "w") as f:
|
with open("src/rss.xml", "w") as f:
|
||||||
f.write(feed)
|
f.write(feed)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sleep(15)
|
sleep(15)
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
break
|
break
|
||||||
|
|
||||||
webserver.close()
|
webserver.close()
|
||||||
|
|
||||||
|
|
61
src/article.html
Normal file
61
src/article.html
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>Article</title>
|
||||||
|
<link rel="stylesheet" href="assets/main.css">
|
||||||
|
<link rel="stylesheet" href="assets/fontAwesome/css/fontawesome.css">
|
||||||
|
<link rel="stylesheet" href="assets/fontAwesome/css/brands.css">
|
||||||
|
<link rel="stylesheet" href="assets/fontAwesome/css/solid.css">
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/hack-font/3.3.0/web/hack.min.css">
|
||||||
|
<link rel="icon" href="/assets/favicon.png">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="body">
|
||||||
|
{body}
|
||||||
|
</div>
|
||||||
|
<ul class="navbar">
|
||||||
|
<li>
|
||||||
|
<a href="mailto:vanten-s@vanten-s.com">
|
||||||
|
<span class="popup">Mail</span>
|
||||||
|
<i class="fa-solid fa-envelope fa"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a rel="me" href="https://kolektiva.social/@vanten_s">
|
||||||
|
<span class="popup">Mastodon</span>
|
||||||
|
<i class="fa-brands fa-mastodon fa"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="key.asc">
|
||||||
|
<span class="popup">GPG Key</span>
|
||||||
|
<i class="fa-solid fa-key"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://matrix.to/#/@vanten-s:matrix.org">
|
||||||
|
<span class="popup">Matrix</span>
|
||||||
|
<i class="fa-solid fa-comment"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://forgejo.vanten-s.com/vanten-s">
|
||||||
|
<span class="popup">Forgejo</span>
|
||||||
|
<i class="fa-brands fa-git-alt"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="rss.xml">
|
||||||
|
<span class="popup">RSS Feed</span>
|
||||||
|
<i class="fa-solid fa-rss"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="articles.html">
|
||||||
|
<span class="popup">Posts</span>
|
||||||
|
<i class="fa-solid fa-blog"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</body>
|
||||||
|
</html>
|
60
src/articles.html
Normal file
60
src/articles.html
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<title>Articles</title>
|
||||||
|
<link rel="stylesheet" href="assets/main.css">
|
||||||
|
<link rel="stylesheet" href="assets/fontAwesome/css/fontawesome.css">
|
||||||
|
<link rel="stylesheet" href="assets/fontAwesome/css/brands.css">
|
||||||
|
<link rel="stylesheet" href="assets/fontAwesome/css/solid.css">
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/hack-font/3.3.0/web/hack.min.css">
|
||||||
|
<link rel="icon" href="/assets/favicon.png">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Posts</h1>
|
||||||
|
{elements}
|
||||||
|
<ul class="navbar">
|
||||||
|
<li>
|
||||||
|
<a href="mailto:vanten-s@vanten-s.com">
|
||||||
|
<span class="popup">Mail</span>
|
||||||
|
<i class="fa-solid fa-envelope fa"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a rel="me" href="https://kolektiva.social/@vanten_s">
|
||||||
|
<span class="popup">Mastodon</span>
|
||||||
|
<i class="fa-brands fa-mastodon fa"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="key.asc">
|
||||||
|
<span class="popup">GPG Key</span>
|
||||||
|
<i class="fa-solid fa-key"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://matrix.to/#/@vanten-s:matrix.org">
|
||||||
|
<span class="popup">Matrix</span>
|
||||||
|
<i class="fa-solid fa-comment"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://forgejo.vanten-s.com/vanten-s">
|
||||||
|
<span class="popup">Forgejo</span>
|
||||||
|
<i class="fa-brands fa-git-alt"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="rss.xml">
|
||||||
|
<span class="popup">RSS Feed</span>
|
||||||
|
<i class="fa-solid fa-rss"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="articles.html">
|
||||||
|
<span class="popup">Posts</span>
|
||||||
|
<i class="fa-solid fa-blog"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -78,6 +78,12 @@
|
||||||
<i class="fa-solid fa-rss"></i>
|
<i class="fa-solid fa-rss"></i>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="articles.html">
|
||||||
|
<span class="popup">Posts</span>
|
||||||
|
<i class="fa-solid fa-blog"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Reference in a new issue