first version

This commit is contained in:
Solene Rapenne 2021-07-20 22:13:55 +02:00
commit 7d50f07ca0
1 changed files with 116 additions and 0 deletions

116
potcasse Executable file
View File

@ -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