aboutsummaryrefslogtreecommitdiff
path: root/scripts/archive/blog/rss-parse.sh
blob: 9f635d45dc7506fcf4e21e11babe055be08b58d9 (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
#!/bin/sh

[ ! -f "$1" ] &&
	echo "Give \`sup\` a page which has been added/updated." &&
	exit 1

website="https://domain.com"
rssfile="../rss/blog.xml"
replchar='^'

link="$website/$1"
title="$(sed -n 's/<title>\(.*\)<\/title>/\1/Ip' "$1")"

if grep -q "<guid.*>$link</guid>" "$rssfile"; then
	guid="$link#$(date '+%y%m%d%H%M%S')"
	title="$title (Updated)"
	echo "Explain the nature of the update:"
	read -r content
	[ -z "$content" ] && content="New updates to $link"
else

	guid=$link
	content="$(tr '\n' $replchar < "$1" | sed "
	s/.*<body>//
	s/<footer>.*<\/footer>//
	s/<nav>.*<\/nav>//
	s/<\/body>.*//
	" | tr -s $replchar '\n')"
fi

rssdate="$(LC_TIME=en_US date '+%a, %d %b %Y %H:%M:%S %z')"

temp="$(mktemp)";
trap 'rm -f "$temp"' 0 1 2 3 15
echo "
<item>
<title>$title</title>
<guid>$guid</guid>
<link>$link</link>
<pubDate>$rssdate</pubDate>
<description><![CDATA[$content
]]></description>
</item>
" > "$temp"

sed -i "/<!-- rss -->/r $temp" "$rssfile"