URI: 
       potcasse - 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
       ---
       potcasse (3743B)
       ---
            1 #!/bin/sh
            2 
            3 exitp() {
            4     echo "$1"
            5     exit 1
            6 }
            7 
            8 usage() {
            9     name=$(basename $0)
           10     printf '%s\n' \
           11         "$name init | gen | episode TITLE FILE [ID]" \
           12         "$name init" \
           13         ': initialize the potcasse structure' \
           14         "$name gen" \
           15         ': generate the RSS file' \
           16         "$name episode TITLE FILE [ID]" \
           17         ': create the structure for a new episode and eventually copy file [FILE] in [ID]'
           18     exit 0
           19 }
           20 
           21 init() {
           22     test -f metadata.sh && exitp "You seem in a directory managed by potcasse"
           23     mkdir -p episodes
           24     cat << EOF > metadata.sh
           25 # title of your podcst
           26 TITLE=
           27 
           28 # base URL of your website
           29 # must end with a /
           30 SITE=
           31 
           32 # filename of the RSS file
           33 RSSLINK=feed.xml
           34 
           35 # language for the podcast/index.html file
           36 LANGUAGE=en-us
           37 
           38 #uncomment to use logo.png as a logo
           39 #IMAGE=YES
           40 EOF
           41     exit 0
           42 }
           43 
           44 episode() {
           45     test -f metadata.sh || exitp "The directory isn't managed by potcasse"
           46     TITLE="$1"
           47 
           48     test -f "$2" || exitp "File $2 doesn't exist"
           49     AUDIOFILE="$2"
           50     EXT=${AUDIOFILE##*.}
           51 
           52     if [ -n "$3" ]
           53     then
           54         ID="$3"
           55     else
           56         ID="$(date +%Y%m%d%H)"
           57     fi
           58 
           59     DEST="episodes/${ID}"
           60     mkdir -p "$DEST"
           61     cat << EOF > ${DEST}/metadata.sh
           62 TITLE="$TITLE"
           63 PUBDATE="$(date "+%a, %d %b %Y 00:00:00 GMT")"
           64 AUDIOFILE="${ID}.${EXT}"
           65 EOF
           66     cp "$AUDIOFILE" "${DEST}/${ID}.${EXT}"
           67 }
           68 
           69 gen() {
           70     test -d episodes || exitp "You need to import episodes before generation"
           71     TMPRSS=$(mktemp /tmp/potcasse.XXXXXXXXXXXXXXXXXXXXX)
           72     TMPHTML=$(mktemp /tmp/potcasse.XXXXXXXXXXXXXXXXXXXXX)
           73     . ./metadata.sh
           74     mkdir -p output_html/episodes
           75 
           76     if [ -n "$IMAGE" ]
           77     then
           78         test -f logo.png || exitp "You defined an IMAGE, move it to $PWD/logo.png"
           79         cp logo.png output_html/logo.png
           80     fi
           81 
           82     cat <<EOF >> $TMPRSS
           83 <?xml version="1.0" encoding="UTF-8"?>
           84 <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
           85     <channel>
           86         <title>${TITLE}</title>
           87         <description>${DESCRIPTION}</description>
           88         <atom:link href="${SITE}${RSSLINK}" rel="self" type="application/rss+xml" />
           89         <link>${SITE}</link>
           90         <image>
           91             <url>${SITE}/logo.png</url>
           92             <title>${TITLE}</title>
           93             <link>${SITE}</link>
           94         </image>
           95         <language>${LANGUAGE}</language>
           96 EOF
           97 
           98     cat <<EOF >> $TMPHTML
           99 <!DOCTYPE html>
          100 <html lang="${LANGUAGE}">
          101   <head>
          102     <title>${TITLE}</title>
          103     <meta charset="utf-8" />
          104   </head>
          105   <body>
          106     <h1>Podcast episodes- ${TITLE}</h1>
          107     <div>
          108         <img src="logo.png" width=200 height=200 alt="logo" />
          109     </div>
          110     <ul>
          111       <li><a href="${RSSLINK}">RSS feed</a> (for podcast players).</li>
          112     </ul>
          113     <ul>
          114 EOF
          115 
          116     for episode in episodes/*
          117     do
          118         echo "Scanning $episode"
          119         . ${episode}/metadata.sh
          120         SIZE=$(stat -f "%z" "${episode}/${AUDIOFILE}")
          121         EXT=${AUDIOFILE##*.}
          122         rsync -a "${episode}/${AUDIOFILE}" output_html/episodes/
          123         cat <<EOF >> $TMPRSS
          124         <item>
          125             <title>$TITLE</title>
          126             <description></description>
          127             <pubDate>${PUBDATE}</pubDate>
          128             <guid>${SITE}/episodes/${AUDIOFILE}</guid>
          129             <enclosure url="${SITE}/episodes/${AUDIOFILE}" length="${SIZE}" type="audio/${EXT}" />
          130         </item>
          131 EOF
          132         cat <<EOF >> $TMPHTML
          133      <li>${PUBDATE} - <a href="episodes/${AUDIOFILE}">${TITLE}</a></li>
          134 EOF
          135     done
          136 
          137     cat <<EOF >> $TMPRSS
          138     </channel>
          139 </rss>
          140 EOF
          141 
          142     cat <<EOF >> $TMPHTML
          143     </ul>
          144   </body>
          145 </html>
          146 EOF
          147 
          148     install -m 644 "$TMPRSS" output_html/${RSSLINK}
          149     install -m 644 "$TMPHTML" output_html/index.html
          150     rm "$TMPRSS" "$TMPHTML"
          151 }
          152 
          153 
          154 case "$1" in
          155         '')   usage;;
          156         help) usage;;
          157         init) init ;;
          158         gen)  gen  ;;
          159         episode) [ -n "$2" ] && episode "$2" "$3" "$4" ;;
          160 esac