aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2023-07-02 13:36:02 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2023-07-02 13:36:02 +0200
commit06931dfdb443584a2c140bf53a12cff9dc239557 (patch)
tree91841518c44f281b7431fe71a689c9f81234d950
parent026bcfc65687ba14299ea2f553940f62388874ce (diff)
downloadscripts-06931dfdb443584a2c140bf53a12cff9dc239557.tar.gz
scripts-06931dfdb443584a2c140bf53a12cff9dc239557.zip
New feed manager
-rw-r--r--Makefile1
-rwxr-xr-xfeed83
-rwxr-xr-xold/sfeed-browser (renamed from sfeed-browser)0
3 files changed, 84 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index daf7c2a..aadfa7c 100644
--- a/Makefile
+++ b/Makefile
@@ -14,6 +14,7 @@ SCRIPTS = addressgrep \
14 dmenu-unmount \ 14 dmenu-unmount \
15 dmenu-urlselect \ 15 dmenu-urlselect \
16 dmenu-websearch \ 16 dmenu-websearch \
17 feed \
17 ffmpeg-screenrecord \ 18 ffmpeg-screenrecord \
18 ffmpeg-facecam \ 19 ffmpeg-facecam \
19 mail-compose \ 20 mail-compose \
diff --git a/feed b/feed
new file mode 100755
index 0000000..2a513a7
--- /dev/null
+++ b/feed
@@ -0,0 +1,83 @@
1#!/bin/sh
2
3# RSS feed manager
4
5# Requires: sfeed, sfeed_plain (get), dmenu, open-url (menu)
6
7# Usage: feed [-m menu] [get|menu|clear|edit]
8
9dir=$HOME/box/sfeed
10feeddir=$dir/urls
11destdir=$dir/new
12olddir=$dir/old
13readdir=$dir/last
14menu="dmenu -l 20 -i"
15urlopener=open-url
16
17usage() {
18 echo "Usage: feed [get|menu|clear|show]"
19}
20
21getnew() {
22 for f in "$feeddir"/*; do
23 read -r url < "$f"
24 name=$(basename "$f")
25 d="$destdir/$name"
26 r="$readdir/$name"
27
28 [ -f "$r" ] && read -r lr < "$r" || lr=0
29
30 # Get new feed items
31 tmp=$(mktemp)
32 curl -s "$url" | sfeed | \
33 awk -v lr="$lr" '$1 > lr {print $0}' | \
34 tee "$tmp" | sfeed_plain >> "$d"
35
36 # Update last time stamp
37 awk -v lr="$lr" '$1 > lr {lr=$1} END {print lr}' <"$tmp" >"$r"
38 done
39}
40
41showmenu() {
42 cat "$destdir"/* | $menu | awk '{print $NF}' | xargs $urlopener
43}
44
45while getopts "m:" opt; do
46 case "$opt" in
47 m)
48 menu="$OPTARG"
49 ;;
50 *)
51 usage
52 exit 1
53 ;;
54 esac
55done
56
57shift $((OPTIND - 1))
58
59if [ -z "$1" ]; then
60 usage
61 exit 1
62fi
63
64case "$1" in
65 get)
66 getnew
67 ;;
68 menu)
69 showmenu
70 ;;
71 clear)
72 d="$olddir/$(date +'%Y-%m-%d-%H-%M-%S')"
73 mkdir "$d"
74 mv "$destdir"/* "$d/"
75 ;;
76 show)
77 cat "$destdir"/*
78 ;;
79 *)
80 usage
81 exit 1
82 ;;
83esac
diff --git a/sfeed-browser b/old/sfeed-browser
index 774c808..774c808 100755
--- a/sfeed-browser
+++ b/old/sfeed-browser

Generated with cgit - Back to sebastiano.tronto.net