#!/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