minrss/contrib/mrss.sh

92 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
set -e
scriptname=$0
subcmd=$1
if [ -z "$MRSS_DIR" ]; then
MRSS_DIR="$HOME/rss"
fi
mkdir -p "$MRSS_DIR"
if [ -z "$MRSS_NEWDIR" ]; then
MRSS_NEWDIR="$MRSS_DIR/new"
fi
sub_help() {
echo "usage:"
echo " $scriptname <command> [options]"
echo
echo "commands:"
echo " update updates feeds"
echo " read opens link from an article file in either a browser or mpv"
echo " link print the article link from a .json file"
echo " purge purge new/ directory"
echo
echo "The following is required to use this script:"
echo " - jq"
echo " - minrss compiled with:"
echo " * OUTPUT_JSON"
echo " * SUMMARY_FILES"
echo
echo "Set MRSS_DIR to control where feeds are downloaded, and MRSS_NEWDIR for new articles."
echo "By default, MRSS_DIR=~/rss, and MRSS_NEWDIR=~/rss/new."
}
sub_update() {
cd "$MRSS_DIR"
minrss | {
while read -r ARTICLE; do
DIRNAME="$(dirname "$ARTICLE")"
BASENAME="$(basename "$ARTICLE")"
mkdir -p "$MRSS_NEWDIR"/"$DIRNAME"
ln -sr "$MRSS_DIR"/"$ARTICLE" "$MRSS_NEWDIR"/"$ARTICLE"
done
}
}
sub_purge() {
cd "$MRSS_DIR"
rm -r "$MRSS_NEWDIR"/*
}
sub_link() {
# extract the link from a single article file
cat "$@" | jq -r '.enclosure.link // .link'
}
sub_read() {
VID=""
for art in "$@"; do
LINK="$(sub_link "$art")"
if [ ! -z "$(printf "%s" "$LINK" | grep 'youtube.com\|odycdn\|simplecastaudio\|podcasts\|twitch')" ]; then
VID="$VID$LINK "
else
xdg-open $LINK &
fi
if [ -h "$art" ]; then
# remove symlinks from new/
rm "$art"
fi
done
if [ -n "$VID" ]; then
mpv $VID
fi
}
case $subcmd in
"" | "--help" | "-h")
sub_help
;;
*)
shift
sub_${subcmd} "$@"
if [ $? = 127 ]; then
echo "error: unknown command '$subcmd'"
exit 1
fi
;;
esac