first version - potcasse - Podcast publication made easy
(HTM) 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
(HTM) 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