#!/bin/bash # Der Standard RSS helper - fetches via internal fivefilters set -e FIVEFILTERS_URL="https://fivefilters.cloonar.com" FIVEFILTERS_IP="10.42.97.5" RSS_SOURCE="https://www.derstandard.at/rss" CURL="curl -sk --resolve fivefilters.cloonar.com:443:${FIVEFILTERS_IP}" usage() { cat < [args] Commands: items [max] Title + URL pairs for selection (default: 50) article Fetch full article content for a specific URL urls [max] Article URLs only titles [max] Article titles only raw [max] Full RSS XML EOF } fetch_feed() { local max="${1:-50}" local encoded_url=$(printf '%s' "$RSS_SOURCE" | sed 's/:/%3A/g; s/\//%2F/g') $CURL "${FIVEFILTERS_URL}/makefulltextfeed.php?url=${encoded_url}&max=${max}&links=preserve&exc=" } fetch_article() { local url="$1" local encoded_url=$(printf '%s' "$url" | sed 's/:/%3A/g; s/\//%2F/g; s/\?/%3F/g; s/&/%26/g; s/=/%3D/g') $CURL "${FIVEFILTERS_URL}/makefulltextfeed.php?url=${encoded_url}&max=1&links=preserve&exc=" | \ perl -0777 -ne 'print $1 if /.*?(.*?)<\/description>.*?<\/item>/s' | \ sed 's/<//g; s/"/"/g; s/&/\&/g' | \ sed 's/<[^>]*>//g' | \ tr '\n' ' ' | sed 's/ */ /g' } decode_entities() { sed 's/&amp;/\&/g; s/&/\&/g; s/<//g; s/"/"/g; s/'/'"'"'/g' } case "${1:-}" in items) feed=$(fetch_feed "${2:-50}") titles=$(echo "$feed" | grep -oP '\K[^<]+' | tail -n +2 | decode_entities) urls=$(echo "$feed" | grep -oP '<link>\K[^<]+' | grep "derstandard.at/story") paste <(echo "$titles") <(echo "$urls") 2>/dev/null | head -"${2:-50}" ;; article) [ -z "${2:-}" ] && { echo "Usage: derstandard article <url>"; exit 1; } fetch_article "$2" ;; urls) fetch_feed "${2:-50}" | grep -oP '<link>\K[^<]+' | grep "derstandard.at/story" ;; titles) fetch_feed "${2:-50}" | grep -oP '<title>\K[^<]+' | tail -n +2 | decode_entities ;; raw) fetch_feed "${2:-50}" ;; *) usage ;; esac