#!/bin/sh ### get-last-rss-post.sh ### Usage: ./get-last-rss-post.sh [-t] URL ### ### Downloads the RSS feed of the URL and checks the latest post. ### It provides a simple way to copy/paste the Title and Link of the post. ### Arguments: ### -t | --today Checks if the Publication Date of the post is Today. ### If not, it exits. help() { sed -rn 's/^### ?//;T;p' "$0" } if [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]] || [[ "$1" == "" ]]; then help exit 1 fi if [[ "$1" == "-t" ]] || [[ "$1" == "--today" ]]; then TODAY=$(date +'%d %b %Y') echo "Checking if the post pubblication days is ${TODAY}…" set -- "$2" # Reset arguments - link becomes $1 CHECK_TODAY=1 fi today () { # Checks if pubDate is $TODAY echo $PUB_DATE | grep -q "$TODAY" if [[ "$?" == "0" ]]; then # pubDate is $TODAY echo "Published Date is today - good!" else echo "ERROR. Published Date is different than today. Exiting." cleanup 1 fi } cleanup () { rm -f feed.xml exit $1 } echo "Downloading latest XML feed…" wget -q -O feed.xml $1 if ! [[ $? == "0" ]]; then echo "Error."; cleanup 1; else echo "Done."; fi # Check if downloaded file has tag grep -q '/{++n; if (n==2) {print; exit}}' feed.xml | sed 's///g; s/<\/title>//g; s/^ *//g') # Find the link of the article LINK=$(grep -A1 "$TITLE" feed.xml | tail -n 1 | sed 's/<link>//g; s/<\/link>//g; s/ //g') # Replace / with \/ in the link LINK_FIXED=$(echo $LINK | sed 's./.\\/.g') # Print whole post until pubDate tag, saves the PUB_DATE PUB_DATE=$(sed -n "/<link>$LINK_FIXED/,/pubDate/p" feed.xml | tail -n 1 | sed 's/<pubDate>//g; s/<\/pubDate>//g') if [[ "$CHECK_TODAY" == "1" ]]; then today; fi echo "\nCopy and Paste this:\n\n\ +++++\n\ Latest article from my blog: \"$TITLE\"\n\ $LINK +++++" cleanup 0