summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-x.local/bin/rssadd16
1 files changed, 12 insertions, 4 deletions
diff --git a/.local/bin/rssadd b/.local/bin/rssadd
index 2ce421b..fb60be8 100755
--- a/.local/bin/rssadd
+++ b/.local/bin/rssadd
@@ -1,10 +1,18 @@
#!/bin/sh
-! echo "$1" | grep "https*://\S\+\.[A-Za-z]\+\S*" >/dev/null &&
- notify-send "That doesn't look like a full URL." && exit
+if echo "$1" | grep "https*://\S\+\.[A-Za-z]\+\S*" >/dev/null; then
+ 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"
-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."
else
- echo "$1" >> "$RSSFILE" && notify-send "RSS feed added."
+ echo "$url" >> "$RSSFILE" && notify-send "RSS feed added."
fi