sfeedmenu - sfeed-tools - Sfeed helper scripts.
(HTM) git clone git://bitreich.org/sfeed-tools git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/sfeed-tools
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Tags
(DIR) README
---
sfeedmenu (1231B)
---
1 #!/bin/sh
2 # sfeedmenu with filter
3 # by: eidolon
4
5 # Set environment variable SFEED_NEW_AGE in seconds to set max
6 # age of displayed feeds. Default is 24 hours, SFEED_NEW_AGE=$((3600*24)).
7
8 die() {
9 printf '%s: %s\n' "${0##*/}" "$*" >&2
10 exit 1
11 }
12
13 filter() {
14 # filter read items and deduplicate items by url
15 LC_ALL=C awk -v urlfile="$urlfile" '
16 BEGIN { while (getline < urlfile > 0) r[$0] = 1 }
17 {
18 $0 = substr($0, 3)
19 match($0, /[a-z]+:\/\//)
20 url = substr($0, RSTART)
21 if (!dedup[url]++ && !r[url])
22 print
23 }'
24 }
25
26 graburl() {
27 printf '%s\n' "$1" | sed -n 's,.* \([A-Za-z]*://\)\(.*\)$,\1\2,p'
28 }
29
30 plumber=plumb
31 feeddir="$HOME/.sfeed/feeds"
32 urlfile="$HOME/.sfeed/urls"
33
34 command -v "$plumber" >/dev/null || die "$plumber not found."
35
36 [ -d "$feeddir" ] || die "$feeddir not found."
37 [ -f "$urlfile" ] || : > "$urlfile"
38
39 feeds=$(sfeed_plain "$feeddir"/* | grep '^N' | filter | sort -rn)
40 count=$(printf '%s\n' "$feeds" | wc -l | tr -d " ")
41 prompt="$count feed items:"
42
43 while IFS= read -r i
44 do
45 [ -n "$i" ] || exit 1
46 i=$(graburl "$i")
47 printf '%s\n' "$i" >> "$urlfile"
48 "$plumber" "$i"
49 done << _EOF
50 $(printf '%s\n' "$feeds" | dmenu -b -p "$prompt" -l 12)
51 _EOF