#!/bin/bash
#< Hourly HTML mailout of Digg.com RSS feed
CURL="/usr/bin/curl"
CUT="/usr/bin/cut"
ECHO="/usr/bin/echo"
DATE="/usr/bin/date"
EGREP="/bin/egrep"
GREP="/bin/grep"
PRINTF="/usr/bin/printf"
SED="/usr/bin/sed"
SENDMAIL="/usr/sbin/sendmail"
MAILFROM="digg@example.com"
MAILTO="kevin.waldron@example.com"
MAILSUBJECT="Digg stories for $( ${DATE} +'%d/%m/%Y %H' ):00"
trap "cleanup; exit 1" 1 2 3 15
function generate_header {
${ECHO} "From: ${MAILFROM}"
${ECHO} "To: ${MAILTO}"
${ECHO} "MIME-Version: 1.0"
${ECHO} "Content-Type: multipart/mixed;"
${ECHO} ' boundary="ABC12345.1234567890/example.com"'
${ECHO} "Subject: ${MAILSUBJECT}"
${ECHO} ""
${ECHO} "This is a MIME-encapsulated message"
${ECHO} ""
${ECHO} "--ABC12345.1234567890/example.com"
${ECHO} "Content-Type: text/html"
${ECHO} ""
${ECHO} "<html><body>"
${ECHO} "<h2><center>${MAILSUBJECT}</center></h2><br>"
}
function generate_footer {
${ECHO} "</body></html>"
${ECHO} "--ABC12345.1234567890/example.com"
}
function generate_content {
${CURL} "http://digg.com/rss/index.xml" 2>/dev/null | while read LINE; do
DESC=""
TITLE=""
LINK=""
${ECHO} "${LINE}" | ${EGREP} -q '^<(title|description)>Digg </.*$'
if [ "$?" -eq "0" ]; then
continue
fi
${ECHO} "${LINE}" | ${GREP} -q '^<title>'
if [ "$?" -eq "0" ]; then
TITLE=$( ${ECHO} "${LINE}" | ${SED} 's!^<title>\(.*\)</title>!\1!' )
fi
${ECHO} "${LINE}" | ${GREP} -q '^<link>'
if [ "$?" -eq "0" ]; then
LINK=$( ${ECHO} "${LINE}" | ${SED} 's!^<link>\(.*\)</link>!\1!' )
fi
${ECHO} "${LINE}" | ${GREP} -q '^<description>'
if [ "$?" -eq "0" ]; then
DESC=$( ${ECHO} "${LINE}" | ${SED} 's!^<description>\(.*\)</description>!\1!' )
fi
if [ "${TITLE}" = "" -a "${LINK}" = "" -a "${DESC}" = "" ]; then
continue
elif [ "${TITLE}" != "" ]; then
${PRINTF} "%s" "${TITLE}"
elif [ "${DESC}" != "" ]; then
${PRINTF} "%s\n" "${DESC}"
elif [ "${LINK}" != "" ]; then
${PRINTF} "|%s|" "${LINK}"
fi
done | while read LINE; do
DESC=$( ${ECHO} "${LINE}" | ${CUT} -d'|' -f3 )
HREF=$( ${ECHO} "${LINE}" | ${CUT} -d'|' -f2 )
TEXT=$( ${ECHO} "${LINE}" | ${CUT} -d'|' -f1 )
${PRINTF} "<b>%s</b><br>\n" "${TEXT}"
${PRINTF} "%s<br>\n" "${DESC}"
${PRINTF} "<a href=\"%s\">%s</a><br><br>\n" "${HREF}" "${HREF}"
done
}
( generate_header; generate_content; generate_footer ) | ${SENDMAIL} -t
exit 0