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