rssadd improvement: additionally extract from xml files, not just urls (#885)

* additionally extract from xml files

Before this, rssadd only accepted a URL as argument. Now, if given
an xml file, it will parse it and extract the proper url. This lets it
be used in conjunction with firefox for quickly adding RSS feeds (as
firefox would give it the file rather than its origin URL). This works
on a majority of RSS feeds, but fails on some that miss the proper link
tags. The original behaviour is still mantained alongside the new.

* remove surplus `exit`

* more performant grepping
This commit is contained in:
Roberto Polverelli Monti 2021-03-30 01:39:55 +00:00 committed by GitHub
parent ea93a82326
commit b5821a2308
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,10 +1,18 @@
#!/bin/sh #!/bin/sh
! echo "$1" | grep "https*://\S\+\.[A-Za-z]\+\S*" >/dev/null && if echo "$1" | grep "https*://\S\+\.[A-Za-z]\+\S*" >/dev/null; then
notify-send "That doesn't look like a full URL." && exit url="$1"
else
url="$(grep -Eom1 '<[^>]+(rel="self"|application/[a-z]+\+xml)[^>]+>' "$1" |
sed -E 's_^.*href="(https?://[^"]+)".*$_\1_')"
! grep "https*://\S\+\.[A-Za-z]\+\S*" <<<"$url" &&
notify-send "That doesn't look like a full URL." && exit 1
fi
RSSFILE="${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/urls" RSSFILE="${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/urls"
if awk '{print $1}' "$RSSFILE" | grep "^$1$" >/dev/null; then if awk '{print $1}' "$RSSFILE" | grep "^$url$" >/dev/null; then
notify-send "You already have this RSS feed." notify-send "You already have this RSS feed."
else else
echo "$1" >> "$RSSFILE" && notify-send "RSS feed added." echo "$url" >> "$RSSFILE" && notify-send "RSS feed added."
fi fi