blob: 1dd9af551838d384e5c097bbc15a6383af4b5199 (
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
|
#!/usr/bin/env bash
# create a gopher rss feed
phloglink="gopher://spike.nagatha.fr/0/phlog"
description="Phil's Phlog"
rsslink=gopher://spike.nagatha.fr/phlog/rss.xml
feedname=$HOME/src/gopher/phlog/rss.xml
postDir=$HOME/src/gopher/phlog
updated=$(date --iso-8601=ns)
# Build RSS header & footer
header () {
echo "<?xml version='1.0' encoding='UTF-8' ?>
<rss version='2.0' xmlns:atom='http://www.w3.org/2005/Atom'>" > ~/feedtop
echo "
<channel>
<title>Phil's Phlog</title>
<link>gopher://spike.nagatha.fr</link>
<description>A Gopher phlog from Brittany, France</description>
<lastBuildDate>$updated</lastBuildDate>
<atom:link href='$rsslink' rel='self' type='application/rss+xml' />
" >> ~/feedtop
}
footer () {
echo "
</channel>
</rss>
" >> ~/feedbottom
}
# Function: Build Item add to feed
item () {
echo "<item>
<title>$fullTitle</title>
<pubDate>$postdate</pubDate>
<link>$linkadd</link>
<guid>$linkadd</guid>
<description>$description</description>
</item>" >> ~/feed
}
# Function: Concatenate everything
combine () {
header
footer
cat ~/feedtop ~/feed > ~/feedtb
cat ~/feedtb ~/feedbottom > $feedname
rm ~/feedtop ~/feed ~/feedtb ~/feedbottom
}
# Run through files and create rss.xml
if [[ -f $feedname ]]; then
rm $feedname
fi
touch $feedname
mapfile -t postArray < <(ls -t "$postDir"/*.txt)
postNum=0
for posts in "${postArray[@]}"; do
((postNum+=1))
post=$posts
fullTitle=$(head -n1 "$post" | sed 's/title://g')
postdate=$(cat $post | sed -n '2p' | sed 's/date://g')
postname=${post##*/}
linkadd="$phloglink/$postname"
description="$(cat $post | sed -n "/^$/,/^$/p" | head --lines 3) …"
item "$post"
done
combine
exit
|