blob: 2a513a713d1593d9487c38b4e7f0d9f7a60736d6 (
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
|
#!/bin/sh
# RSS feed manager
# Requires: sfeed, sfeed_plain (get), dmenu, open-url (menu)
# Usage: feed [-m menu] [get|menu|clear|edit]
dir=$HOME/box/sfeed
feeddir=$dir/urls
destdir=$dir/new
olddir=$dir/old
readdir=$dir/last
menu="dmenu -l 20 -i"
urlopener=open-url
usage() {
echo "Usage: feed [get|menu|clear|show]"
}
getnew() {
for f in "$feeddir"/*; do
read -r url < "$f"
name=$(basename "$f")
d="$destdir/$name"
r="$readdir/$name"
[ -f "$r" ] && read -r lr < "$r" || lr=0
# Get new feed items
tmp=$(mktemp)
curl -s "$url" | sfeed | \
awk -v lr="$lr" '$1 > lr {print $0}' | \
tee "$tmp" | sfeed_plain >> "$d"
# Update last time stamp
awk -v lr="$lr" '$1 > lr {lr=$1} END {print lr}' <"$tmp" >"$r"
done
}
showmenu() {
cat "$destdir"/* | $menu | awk '{print $NF}' | xargs $urlopener
}
while getopts "m:" opt; do
case "$opt" in
m)
menu="$OPTARG"
;;
*)
usage
exit 1
;;
esac
done
shift $((OPTIND - 1))
if [ -z "$1" ]; then
usage
exit 1
fi
case "$1" in
get)
getnew
;;
menu)
showmenu
;;
clear)
d="$olddir/$(date +'%Y-%m-%d-%H-%M-%S')"
mkdir "$d"
mv "$destdir"/* "$d/"
;;
show)
cat "$destdir"/*
;;
*)
usage
exit 1
;;
esac
|