#!/bin/sh exitp() { echo "$1" exit 1 } usage() { name=$(basename $0) printf '%s\n' \ "$name init | gen | episode TITLE FILE [ID]" \ "$name init" \ ': initialize the potcasse structure' \ "$name gen" \ ': generate the RSS file' \ "$name episode TITLE FILE [ID]" \ ': create the structure for a new episode and eventually copy file [FILE] in [ID]' exit 0 } init() { test -f metadata.sh && exitp "You seem in a directory managed by potcasse" mkdir -p episodes cat << EOF > metadata.sh # title of your podcst TITLE= # base URL of your website # must end with a / SITE= # filename of the RSS file RSSLINK=feed.xml # language for the podcast/index.html file LANGUAGE=en-us #uncomment to use logo.png as a logo #IMAGE=YES EOF exit 0 } episode() { test -f metadata.sh || exitp "The directory isn't managed by potcasse" TITLE="$1" test -f "$2" || exitp "File $2 doesn't exist" AUDIOFILE="$2" EXT=${AUDIOFILE##*.} if [ -n "$3" ] then ID="$3" else ID="$(date +%Y%m%d%H)" fi DEST="episodes/${ID}" mkdir -p "$DEST" cat << EOF > ${DEST}/metadata.sh TITLE="$TITLE" PUBDATE="$(date "+%a, %d %b %Y 00:00:00 GMT")" AUDIOFILE="${ID}.${EXT}" EOF cp "$AUDIOFILE" "${DEST}/${ID}.${EXT}" } gen() { test -d episodes || exitp "You need to import episodes before generation" TMPRSS=$(mktemp /tmp/potcasse.XXXXXXXXXXXXXXXXXXXXX) TMPHTML=$(mktemp /tmp/potcasse.XXXXXXXXXXXXXXXXXXXXX) . ./metadata.sh mkdir -p output_html/episodes if [ -n "$IMAGE" ] then test -f logo.png || exitp "You defined an IMAGE, move it to $PWD/logo.png" cp logo.png output_html/logo.png fi cat <> $TMPRSS ${TITLE} ${DESCRIPTION} ${SITE} ${SITE}/logo.png ${TITLE} ${SITE} ${LANGUAGE} EOF cat <> $TMPHTML ${TITLE}

Podcast episodes- ${TITLE}

logo
    EOF for episode in episodes/* do echo "Scanning $episode" . ${episode}/metadata.sh SIZE=$(stat -f "%z" "${episode}/${AUDIOFILE}") EXT=${AUDIOFILE##*.} rsync -a "${episode}/${AUDIOFILE}" output_html/episodes/ cat <> $TMPRSS $TITLE ${PUBDATE} ${SITE}/episodes/${AUDIOFILE} EOF cat <> $TMPHTML
  • ${PUBDATE} - ${TITLE}
  • EOF done cat <> $TMPRSS EOF cat <> $TMPHTML
EOF install -m 644 "$TMPRSS" output_html/${RSSLINK} install -m 644 "$TMPHTML" output_html/index.html rm "$TMPRSS" "$TMPHTML" } case "$1" in '') usage;; help) usage;; init) init ;; gen) gen ;; episode) [ -n "$2" ] && episode "$2" "$3" "$4" ;; esac