noter 1.2.1 - feeds, holy shit!

This commit is contained in:
notkoutsie 2023-12-12 16:51:02 +02:00
parent eaa1c5a4bc
commit f43e9a85d8
2 changed files with 74 additions and 7 deletions

View File

@ -1,4 +1,7 @@
a simple note taking system, that also generates weboages! a simple note taking system, that also generates weboages with rss feeds!
made with bash. made with bash.
### see noter.sh for generation time options
### place your notes onto a foldier named "notes" in the directory noter.sh is in!
example of what a page looks like: https://k0.tel/ example of what a page looks like: https://k0.tel/

View File

@ -1,9 +1,10 @@
#!/bin/bash #!/bin/bash
# noter 1.1.7 - "verofoed" - @k@layer8.space - mit # noter 1.2.1 - "feeds, holy shit!" - @k@layer8.space - mit
showgenerator="true" showgenerator="true"
backtotop="true" backtotop="true"
lastupdated="true" lastupdated="true"
#rssfeed="true"
nlog() { nlog() {
local ORANGE='\033[0;33m' local ORANGE='\033[0;33m'
@ -72,22 +73,81 @@ generate_top_year_bar() {
echo "$top_bar" echo "$top_bar"
} }
# this took way too long but fuck it
# im faster than Google at getting a
# feed going goddamit!
generate_rss_feed() {
local rss_file="feed.xml"
local rss_title="koutsies telenotes"
local rss_description="thoughts about mainly computers... maybe recipes and cats too?"
local rss_link="https://k0.tel/"
local rss_pubdate=$(date -u +"%a, %d %b %Y %H:%M:%S GMT")
xml_escape() {
local content="$1"
sed 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g; s/"/\&quot;/g; s/'"'"'/\&apos;/g' <<< "$content"
}
# im sorry for these crimes against humanity
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
<rss version=\"2.0\">
<channel>
<title>$(xml_escape "$rss_title")</title>
<link>$rss_link</link>
<description>$(xml_escape "$rss_description")</description>
<pubDate>$rss_pubdate</pubDate>
<lastBuildDate>$rss_pubdate</lastBuildDate>
<docs>https://cyber.harvard.edu/rss/rss.html</docs>
<generator>noter</generator>" >"$rss_file"
if [ ! -d "notes" ]; then
echo "Directory 'notes' not found!"
return 1
fi
# this works, don't touch.
for file in $(find notes -name '*.txt' -type f -print0 | sort -zr | xargs -0); do
if [ -f "$file" ] && [ -s "$file" ]; then
local note_date=$(date -d "$(basename "$file" .txt)" +"%a, %d %b %Y %H:%M:%S GMT")
local note_link="$rss_link#$(basename "$file" .txt)"
local note_title=$(basename "$file" .txt)
local note_description=$(head -n 1 "$file") # Use the first line of the note as the description
echo " <item>
<title>$(xml_escape "$note_title")</title>
<link>$note_link</link>
<description>$(xml_escape "$note_description")</description>
<pubDate>$note_date</pubDate>
</item>" >>"$rss_file"
fi
done
echo "</channel>
</rss>" >>"$rss_file"
nlog "rss feed generated, please remember to move it too with the site: $rss_file"
}
notecount=$(find notes -name "*.txt" ! -empty | wc -l) notecount=$(find notes -name "*.txt" ! -empty | wc -l)
# Create HTML file # Create HTML file
output_file="notes.html" output_file="index.html"
echo "<!DOCTYPE html> echo "<!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset='utf-8'> <meta charset='utf-8'>
<a rel='me' href='https://layer8.space/@k'>Mastodon</a>
<title>$notecount notes | noter</title> <title>$notecount notes | noter</title>
<meta property='og:title' content='koutsies telenotes' /> <meta property='og:title' content='koutsies telenotes' />
<meta property='og:description' content='thoughts about mainly computers... maybe recipes and cats too?' /> <meta property='og:description' content='thoughts about mainly computers... maybe recipes and cats too?' />
<meta property='og:type' content='website' /> <meta property='og:type' content='blog' />
<meta property='og:generator' content='noter' /> <meta property='og:generator' content='noter' />
<!-- those who seek, shall see - but thy shall be prepared... --> <!-- those who seek, shall see - but thy shall be prepared... -->
<link rel='icon' type='image/png' href='$(givefavicon "$favicon")'> <link rel='icon' type='image/png' href='$(givefavicon "$favicon")'>
<link rel='alternate' type='application/atom+xml' title="rss" href='/feed.xml' />
<meta name='last-generated' content='$(date +"%Y-%m-%d %H:%M:%S")' /> <meta name='last-generated' content='$(date +"%Y-%m-%d %H:%M:%S")' />
<style> <style>
body { body {
@ -120,7 +180,7 @@ echo "<!DOCTYPE html>
white-space: pre-wrap; white-space: pre-wrap;
} }
code { code {
color: orange; color: #ff8c00;
font-family: 'Courier New', monospace; font-family: 'Courier New', monospace;
white-space: pre-wrap; white-space: pre-wrap;
} }
@ -142,7 +202,7 @@ echo "<!DOCTYPE html>
</style> </style>
</head> </head>
<body> <body>
<div class='container'><h1>notes</h1>" >"$output_file" <div class='container'><h1>koutsie's telenotes</h1><br><center> <a rel='me' href='https://layer8.space/@k'>fedi</a> | <a href="feed.rss">rss</a> | <a href="https://the-sauna.icu/">sauna</a> </center>" >"$output_file"
generate_top_year_bar >>"$output_file" generate_top_year_bar >>"$output_file"
# loop for every note in notes # loop for every note in notes
nlog "generating page..." nlog "generating page..."
@ -153,6 +213,10 @@ for file in $(ls -r notes/*.txt); do
fi fi
done done
# generate page's rss feed
# TODO: don't embed to site if not enabled:tm:
generate_rss_feed
# bottom navigation # bottom navigation
checksetting "<div class='generated-with'>generated with <a href='https://git.sr.ht/~koutsie/noter'>noter</a></div>" "$showgenerator" checksetting "<div class='generated-with'>generated with <a href='https://git.sr.ht/~koutsie/noter'>noter</a></div>" "$showgenerator"
checksetting "<div class='back-to-top'><a href='#'>Back to Top</a></div>" "$backtotop" checksetting "<div class='back-to-top'><a href='#'>Back to Top</a></div>" "$backtotop"