diff options
| author | Roberto Polverelli Monti <rpolverelli@gmail.com> | 2021-03-30 01:39:55 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-29 21:39:55 -0400 |
| commit | b5821a2308a20de5ad867456a3e8a02b4681bdfd (patch) | |
| tree | 25cccce88c39a46ef97fc01878a7237c87ec51bf /.local/bin/rssadd | |
| parent | ea93a82326351e1e4090f810866c8ce0bab30fde (diff) | |
| download | eibhear-b5821a2308a20de5ad867456a3e8a02b4681bdfd.tar.gz eibhear-b5821a2308a20de5ad867456a3e8a02b4681bdfd.tar.zst eibhear-b5821a2308a20de5ad867456a3e8a02b4681bdfd.zip | |
`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
Diffstat (limited to '.local/bin/rssadd')
| -rwxr-xr-x | .local/bin/rssadd | 16 |
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 |
