diff options
-rwxr-xr-x | tilde-news-feed.sh | 101 |
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/\&/\&/g; s/</\</g; s/>/\>/g; s/\"/\"/g' | sed "s/'/\'/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}" |