Introduction
Introduction Statistics Contact Development Disclaimer Help
sfeedmenu: fixes, cleanup, add tests, add feed count to dmenu prompt. - sfeed-t…
git clone git://bitreich.org/sfeed-tools git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfr…
Log
Files
Refs
Tags
README
---
commit 76fcac95ec842a2a97d95dbd19d56fbda23007a5
parent 6625b04305bf19f598bcc15362e5010d98f2f8e6
Author: eidolon <?>
Date: Thu, 7 Nov 2024 21:55:54 -0500
sfeedmenu: fixes, cleanup, add tests, add feed count to dmenu prompt.
Diffstat:
M sfeedmenu | 39 ++++++++++++++++++++++-------…
1 file changed, 28 insertions(+), 11 deletions(-)
---
diff --git a/sfeedmenu b/sfeedmenu
@@ -2,11 +2,20 @@
# sfeedmenu with filter
# by: eidolon
+# Set environment variable SFEED_NEW_AGE in seconds to set max
+# age of displayed feeds. Default is 24 hours, SFEED_NEW_AGE=$((3600*24)).
+
+die() {
+ printf '%s: %s\n' "${0##*/}" "$*" >&2
+ exit 1
+}
+
filter() {
# filter read items and deduplicate items by url
LC_ALL=C awk -v urlfile="$urlfile" '
BEGIN { while (getline < urlfile > 0) r[$0] = 1 }
{
+ $0 = substr($0, 3)
match($0, /[a-z]+:\/\//)
url = substr($0, RSTART)
if (!dedup[url]++ && !r[url])
@@ -14,26 +23,34 @@ filter() {
}'
}
+graburl() {
+ printf '%s\n' "$1" | sed -n 's,.* \([A-Za-z]*://\)\(.*\)$,\1\2,p'
+}
+
plumber=plumb
feeddir="$HOME/.sfeed/feeds"
urlfile="$HOME/.sfeed/urls"
-mkdir -p "$feeddir"
+if [ ! -d "$feeddir" ]; then
+ die "$feeddir not found."
+fi
-[ -f "$urlfile" ] || : > "$urlfile"
+if ! command -v "$plumber" >/dev/null; then
+ die "$plumber not found."
+fi
-while IFS= read -r i; do
- [ -n "$i" ] || exit 1
+[ -f "$urlfile" ] || : > "$urlfile"
- i=$(printf '%s\n' "$i" \
- | sed -n 's,.* \([A-Za-z]*://\)\(.*\)$,\1\2,p')
+feeds=$(sfeed_plain "$feeddir"/* | grep '^N' | filter | sort -rn)
+count=$(printf '%s\n' "$feeds" | wc -l)
+prompt="$count feeds:"
+while IFS= read -r i
+do
+ [ -n "$i" ] || exit 1
+ i=$(graburl "$i")
printf '%s\n' "$i" >> "$urlfile"
"$plumber" "$i"
done << _EOF
-$(sfeed_plain "$feeddir"/* \
- | sed -n '/^N / s///p' \
- | sort -rn \
- | filter \
- | dmenu -b -l 12)
+$(printf '%s\n' "$feeds" | dmenu -b -p "$prompt" -l 12)
_EOF
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.