summaryrefslogtreecommitdiff
path: root/tilde-news-feed.sh
blob: b70fd6c1eb949a5c211de188cecff5399416b169 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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}"