summaryrefslogtreecommitdiff
path: root/tilde-news-feed.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tilde-news-feed.sh')
-rwxr-xr-xtilde-news-feed.sh101
1 files changed, 101 insertions, 0 deletions
diff --git a/tilde-news-feed.sh b/tilde-news-feed.sh
new file mode 100755
index 0000000..b70fd6c
--- /dev/null
+++ b/tilde-news-feed.sh
@@ -0,0 +1,101 @@
+#!/usr/bin/env bash
+
+# variables
+NEWS=/usr/share/nginx/html/news.json
+#NEWS=./news.json
+update=$(date -u '+%FT%H:%M:%S%:z')
+
+# functions
+is-it() {
+ name="${1}"
+ [ "${name}" != "null" -a ! -z "${name}" ]
+}
+
+get-it() {
+ value="$(printf "${item}" | jq -r ".${1}")"
+ is-it "${value}" && eval ${1}=\"${value}\"
+}
+
+atom_header()
+{
+ cat <<EOF
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+ <title>Tilde Computer Club News</title>
+ <link rel="self" href="http://tilde.club/~keyboardan/tilde-club-news/feed.xml"/>
+ <link rel="alternate" href="http://tilde.club/~keyboardan/tilde-club-news/feed.xml"/>
+ <id>http://tilde.club/</id>
+ <author>
+ <name>tilde.club's News</name>
+ </author>
+ <updated>${update}</updated>
+EOF
+}
+
+atom_footer()
+{
+ cat <<EOF
+</feed>
+EOF
+}
+
+make_feed()
+{
+ atom_header
+
+ jq -c '.[]' "${NEWS}" | while read item; do
+
+ get-it "date"
+ get-it "title"
+ get-it "heading"
+ get-it "content"
+ get-it "note"
+ get-it "additional_content"
+
+ # required
+
+ element_content_text="# ${title}\n"
+ is-it "${heading}" && element_content_text+="## ${heading}\n"
+ element_content_text+="\n${content}"
+
+ # optional
+
+ details="$(printf "${item}" | jq -r ".details")"
+ #echo "!!!!!${details}!!!!"
+ if is-it "${details}"
+ then
+ element_content_text+="\n\n## Details:"
+ element_content_text+="\n$(printf "${details}" | jq -r '.[]' | sed 's/^/ \* /g')"
+ fi
+ is-it "${note}" && element_content_text+="\n\n${note}"
+ is-it "${additional_content}" && element_content_text+="\n\n## In addition:\n${additional_content}"
+
+ element_content_text+="\n"
+
+ id_title=${title// /_}
+ id_title=${id_title//:/}
+
+
+ cat <<EOF
+ <entry>
+ <title>${title}</title>
+ <updated>${date}T00:00:00+00:00</updated>
+ <id>tag:tilde.club,${date}:${id_title}</id>
+ <link rel="alternate" href="http://tilde.club/"/>
+ <content type="text">
+$(printf "${element_content_text}" | sed 's/\&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g; s/\"/\&quot;/g' | sed "s/'/\&apos;/g;")
+ </content>
+ </entry>
+EOF
+
+ unset date title heading content details note additional_content element_content_text
+
+ done
+
+ atom_footer
+}
+
+make_feed
+
+# # https://taguri.org/
+# tag_uri="tag:${domain},${date}:${uniq_string}"