From aed7a3d52ab7d4c073ffb5f418dc44d72deb62fe Mon Sep 17 00:00:00 2001 From: speedie Date: Mon, 12 Dec 2022 20:10:13 +0100 Subject: [PATCH] add rssread --- Makefile | 24 ++++++++++++++++++++ options.mk | 2 ++ rssread | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+) create mode 100644 Makefile create mode 100644 options.mk create mode 100755 rssread diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f80238c --- /dev/null +++ b/Makefile @@ -0,0 +1,24 @@ +SHELL = /bin/sh +NAME = rssread +VER = 0.1 + +include options.mk + +help: + @echo "make install Install ${NAME}." + @echo "make uninstall Uninstall ${NAME}." + +install: + cp ${NAME} ${PREFIX}${DESTDIR}/bin + chmod +x ${PREFIX}${DESTDIR}/bin/${NAME} + +uninstall: + rm -rf ~/.config/${NAME} + rm -f ${PREFIX}${DESTDIR}/bin/${NAME} + +dist: + mkdir -p ${NAME}-${VER} + cp ${NAME} LICENSE Makefile ${NAME}-${VER} + tar -cf ${NAME}-${VER}.tar ${NAME}-${VER} + gzip ${NAME}-${VER}.tar + rm -rf ${NAME}-${VER}.tar ${NAME}-${VER} diff --git a/options.mk b/options.mk new file mode 100644 index 0000000..0404112 --- /dev/null +++ b/options.mk @@ -0,0 +1,2 @@ +VER = 1.2 +DESTDIR = "/usr" diff --git a/rssread b/rssread new file mode 100755 index 0000000..c69e841 --- /dev/null +++ b/rssread @@ -0,0 +1,66 @@ +#!/bin/sh +# sfeed manager in less than 70 lines +# license: gplv3 +# https://codeberg.org/speedie/rssread +mkdir -p "$HOME/.sfeed/feeds" +[ -z "$AUTOREFRESH" ] && export AUTOREFRESH=false +[ -z "$QUIET" ] && export QUIET=false +[ ! -e "$HOME/.sfeed/sfeedrc" ] || [ ! "$(grep "http" "$HOME/.sfeed/sfeedrc" | wc -l)" -gt 0 ] && cat << EOF > "$HOME/.sfeed/sfeedrc" +feeds() { + # feed [basesiteurl] [encoding] + feed 'speedie is the best' 'https://speedie.gq/rss.xml' +} +EOF + +updatefeeds() { + rm -rf "$HOME/.sfeed/feeds"; sfeed_update > /dev/null; return +} + +clearfeeds() { + [ $FILE = feeds ] && rm -rf "$HOME/.sfeed/feeds" || rm -rf "$HOME/.sfeed/sfeedrc" + [ "$QUIET" = "true" ] || [ "$FILE" = "feeds" ] && printf "Successfully cleared feeds.\n" || printf "Successfully cleared sfeedrc.\n" +} + +listfeeds() { + [ -z "$2" ] && grep "http" "$HOME/.sfeed/sfeedrc" || grep -E "http|$2" "$HOME/.sfeed/sfeedrc" +} + +addfeed() { + [ -n "$4" ] && printf "Too many arguments specified.\n" && exit 1 || [ -z "$2" ] && printf "You must specify a name.\n" && exit || [ -z "$3" ] && printf "You must specify a URL.\n" && exit 1 + cp "$HOME/.sfeed/sfeedrc" "$HOME/.sfeed/sfeedrc.orig" && OFILE="$(head -n -1 "$HOME/.sfeed/sfeedrc")" && printf "%s\n" "$OFILE" > "$HOME/.sfeed/sfeedrc" # we have to do it like this because of the way head works + printf "\n feed '%s' '%s'" "$2" "$3" | grep "http" >> "$HOME/.sfeed/sfeedrc" && printf "}\n" >> "$HOME/.sfeed/sfeedrc" # URL is $3, feed name is $2 + [ "$QUIET" = "true" ] || printf "Feed named '%s' (%s) added to list of feeds.\n" "$2" "$3" +} + +removefeed() { + [ -n "$3" ] && printf "Too many arguments specified.\n" && exit 1 + cp "$HOME/.sfeed/sfeedrc" "$HOME/.sfeed/sfeedrc.orig" + grep -v "$2" "$HOME/.sfeed/sfeedrc" > "$HOME/.sfeed/sfeedrc.mod" && mv "$HOME/.sfeed/sfeedrc.mod" "$HOME/.sfeed/sfeedrc" && rm -f "$HOME/.sfeed/feeds/*$3*" +} + +help() { + echo "rssread - simple script for sfeed." && echo + echo "--add Add to your list of feeds." + echo "--remove Remove from your list of feeds." + echo "--list List all feeds. Optionally add to list matching feeds." + echo "--import-newsboat Import newsboat urls." + echo "--update Sync feeds." + echo "--clear Clear feeds." + echo "--clear-sfeedrc Clear sfeedrc." + echo "--help View this help." && echo + echo "You can export variable AUTOREFRESH=true to automatically sync feeds, QUIET=true to silence all status messages and READER to choose a reader." && exit 0 || exit 1 +} + +case "$1" in +"--add") addfeed "$@" ; exit 0 ;; +"--remove") removefeed "$@" ; exit 0 ;; +"--list") listfeeds "$@" ; exit 0 ;; +"--import-newsboat") newsboat -e | sfeed_opml_import > "$HOME/.sfeed/sfeedrc" ; exit 0 ;; +"--update") updatefeeds ; exit 0 ;; +"--clear") FILE=feeds && clearfeeds ; exit 0 ;; +"--clear-sfeedrc") FILE=rc && clearfeeds ; exit 0 ;; +"--help") help ; exit 0 ;; esac + +[ -n "$1" ] && printf "Unknown argument, '%s'. Run --help for a list of valid arguments.\n" "$1" && exit 1 +[ "$AUTOREFRESH" != "false" ] || [ "$(basename "$(find "$HOME/.sfeed/feeds" | wc -l)")" -lt "1" ] && updatefeeds +export SFEED_PIPER="$([ -z "$READER" ] && echo "sfeed_content" || echo "$READER")" && command -v sfeed_curses > /dev/null && sfeed_curses ~/.sfeed/feeds/* && exit 1