diff --git a/scripts/appscripts/sxmo_rss.sh b/scripts/appscripts/sxmo_rss.sh index fccc0dc..d347580 100755 --- a/scripts/appscripts/sxmo_rss.sh +++ b/scripts/appscripts/sxmo_rss.sh @@ -1,4 +1,6 @@ #!/usr/bin/env sh +FETCHENABLED=1 + if [ -f "$XDG_CONFIG_HOME/sxmo/sfeedrc" ]; then SFEEDCONF="$XDG_CONFIG_HOME/sxmo/sfeedrc" elif [ -f "$HOME/.sfeed/sfeedrc" ]; then @@ -32,7 +34,7 @@ prep_temp_folder_with_items() { list_items() { cd "$FOLDER" || die "Couldn't cd to $FOLDER" - echo "Close Menu" + printf %b "Close Menu\nChange Timespan\n" gawk -F'\t' '{print $1 " " substr(FILENAME, 3) " | " $2 ": " $3}' ./* |\ grep -E '^[0-9]{5}' |\ sort -nk1 |\ @@ -40,30 +42,68 @@ list_items() { gawk -F' ' '{printf strftime("%y/%m/%d %H:%M",$1); $1=""; print $0}' } -# Update Sfeed -st -e sh -c "echo Syncing Feeds && sfeed_update $SFEEDCONF" -# Dmenu prompt for timespan -TIMESPAN=$( -echo "1 hour ago -3 hours ago -12 hours ago -1 day ago -2 day ago -1970-01-01" | dmenu -p "RSS Timespan" -c -l 10 -fn Terminus-20 -) +rsstimespanmenu() { + CHOICE="Fetch" + while echo "$CHOICE" | grep Fetch; do + # Dmenu prompt for timespan + CHOICES=" + Close Menu + 1 hour ago + 3 hours ago + 12 hours ago + 1 day ago + 2 day ago + 1970-01-01 + Fetch $([ "$FETCHENABLED" = "1" ] && echo "enabled ✓" || echo "disabled (use cache)") + " + CHOICE="$( + echo "$CHOICES" | + sed '/^[[:space:]]*$/d' | + awk '{$1=$1};1' | + dmenu -p "RSS Timespan" -c -l 10 -fn Terminus-20 + )" + + if echo "$CHOICE" | grep "Fetch"; then + [ "$FETCHENABLED" = 0 ] && FETCHENABLED=1 || FETCHENABLED=0 + else + TIMESPAN="$CHOICE" + fi + done -# Make folder like /tmp/sfeed_1_day_ago -FOLDER="/tmp/sfeed_$(echo "$TIMESPAN" | sed 's/ /_/g')" -prep_temp_folder_with_items + # Update Sfeed via sfeed_update (as long as user didn't request cached) + [ $FETCHENABLED = 1 ] && + st -e sh -c "echo Fetching Feeds && sfeed_update $SFEEDCONF" -while true; do - # Show list of items - PICKED=$(list_items | dmenu -p "RSS" -c -l 20 -fn Terminus-15) + rssreadmenu +} - [ "$PICKED" = "Close Menu" ] && die Closed Menu +rssreadmenu() { + # Make folder like /tmp/sfeed_1_day_ago + FOLDER="/tmp/sfeed_$(echo "$TIMESPAN" | sed 's/ /_/g')" + prep_temp_folder_with_items + TIMESPANABBR="$( + echo "$TIMESPAN" | + sed 's/ago//' | + sed 's/hours/h/' | + sed 's/hour/h/' | + sed 's/days/d/' | + sed 's/day/d/' | + tr -d ' ' + )" + + while true; do + # Show list of items + PICKED=$(list_items | dmenu -p "RSS ($TIMESPANABBR)" -c -l 20 -fn Terminus-15) + if [ "$PICKED" = "Close Menu" ]; then + die Closed Menu + elif [ "$PICKED" = "Change Timespan" ]; then + rsstimespanmenu + else + URL="$(echo "$PICKED" | gawk -F " " '{print $NF}')" + sxmo_urlhandler.sh "$URL" fork + fi + done +} - # Handle picked item - URL="$(echo "$PICKED" | gawk -F " " '{print $NF}')" - sxmo_urlhandler.sh "$URL" fork -done +rsstimespanmenu