add rssread

This commit is contained in:
speedie 2022-12-12 20:10:13 +01:00
parent 6e9bf63a19
commit aed7a3d52a
3 changed files with 92 additions and 0 deletions

24
Makefile Normal file
View file

@ -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}

2
options.mk Normal file
View file

@ -0,0 +1,2 @@
VER = 1.2
DESTDIR = "/usr"

66
rssread Executable file
View file

@ -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 <name> <feedurl> [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 <name> <url> Add <url> to your list of feeds."
echo "--remove <keyword> Remove <keyword> from your list of feeds."
echo "--list List all feeds. Optionally add <keyword> 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