URI: 
       first version - potcasse - Podcast publication made easy
  HTML git clone git://bitreich.org/potcasse git://hg6vgqziawt5s4dj.onion/potcasse
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
   DIR LICENSE
       ---
   DIR commit 7d50f07ca06423a5d0c93ce190093920f551c669
  HTML Author: Solene Rapenne <solene@perso.pw>
       Date:   Tue, 20 Jul 2021 22:13:55 +0200
       
       first version
       
       Diffstat:
         A potcasse                            |     116 ++++++++++++++++++++++++++++++
       
       1 file changed, 116 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/potcasse b/potcasse
       @@ -0,0 +1,116 @@
       +#!/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
       +SITE=
       +LANG=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() {
       +    TMPFILE=$(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 <<EOF >> $TMPFILE
       +<?xml version="1.0" encoding="UTF-8"?>
       +<rss version="2.0">
       +    <channel>
       +        <title>${TITLE}</title>
       +        <description>${DESCRIPTION}</description>
       +        <link>${SITE}</link>
       +        <image>
       +            <url>${SITE}/logo.png</url>
       +            <title>Image of ${SITE}</title>
       +            <link>${SITE}</link>
       +        </image>
       +        <language>${LANG}</language>
       +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 <<EOF >> $TMPFILE
       +        <item>
       +            <title>$TITLE</title>
       +            <description></description>
       +            <pubDate>${PUBDATE}</pubDate>
       +            <enclosure url="${SITE}/episodes/${AUDIOFILE}" length="${SIZE}" type="audio/${EXT}" />
       +        </item>
       +EOF
       +    done
       +
       +    cat <<EOF >> $TMPFILE
       +    </channel>
       +</rss>
       +EOF
       +    install -m 644 "$TMPFILE" output_html/${RSSLINK}
       +    rm "$TMPFILE"
       +}
       +
       +
       +case "$1" in
       +        '')   usage;;
       +        help) usage;;
       +        init) init ;;
       +        gen)  gen  ;;
       +        episode) [ -n "$2" ] && episode "$2" "$3" "$4" ;;
       +esac