Podcasts - insbesondere von öffentlich-rechtlichen Rundfunkanstalten - stehen häufig nur für einen begrenzten Zeitraum zum Download zur Verfügung. Natürlich verpass ich diesen Zeitraum (fast) immer. Deshalb hab ich eine Möglichkeit gesucht um diese Podcasts automatisch herunterzuladen - was liegt näher als diese Downloads auf dem Uberspace zu automatisieren? Dabei bin ich auf die Software Mashpodder gestoßen.
Installation
Zunächst muss man den Mashpodder herunterladen:
$ git clone https://github.com/chessgriffin/mashpodder.git ~/bin/mashpodder
Als nächstes muss man die Konfiguration anpassen, die meisten Einstellungen
müssen jedoch nicht verändert werden. Das BASEDIR
muss angepasst werden und
ich habe noch das PODCASTDIR
angepasst, damit die Podcasts nicht im
Anwendungsverzeichnis landen. Da der Podcatcher nachher als Cronjob laufen soll,
braucht man noch ein Wrapper-Skript, das später vom Cronjob aufgerufen wird und
das die Outputs loggt. So ein Skript wird als Beispielskript mitgeliefert und
muss nur umbennant und ausführbar gemacht werden. Außerdem muss das BASEDIR
noch angepasst werden.
$ sed -i 's/#BASEDIR=\"\$HOME\/mashpodder\"/BASEDIR=\"\$HOME\/bin\/mashpodder\"/' ~/bin/mashpodder/mashpodder.sh $ sed -i 's/PODCASTDIR=\"\$BASEDIR\/podcasts\"/PODCASTDIR=\"\$HOME\/data\/podcasts\"/' ~/bin/mashpodder/mashpodder.sh $ mv ~/bin/mashpodder/sample-wrapper-for-cron.sh ~/bin/mashpodder/run.sh $ chmod +x ~/bin/mashpodder/run.sh $ sed -i 's/BASEDIR=\"\$HOME\/mashpodder\"/BASEDIR=\"\$HOME\/bin\/mashpodder\"/' ~/bin/mashpodder/run.sh
Als letztes muss der Cronjob eingerichtet werden, wobei das genau genommen nicht
als Cronjob gelöst wird, sondern, wie von den Ubernauten vorgeschlagen,
mit runwhen
. Dazu muss man zunächst sicherstellen, dass die daemontools für
diesen Nutzer bereits eingerichtet wurden, dann muss der runwhen-Job
eingerichtet werden und eingestellt werden, wann und wie oft der Job ausgeführt
werden soll. Der Job soll dabei täglich nachts um drei ausgeführt werden:
$ test -d ~/service || uberspace-setup-svscan $ runwhen-conf ~/etc/run-mashpodder ~/bin/mashpodder/run.sh $ sed -i 's/RUNWHEN=\"\"/RUNWHEN=\",H=3\"/' ~/etc/run-mashpodder/run $ ln -s /home/zwiebel/etc/run-mashpodder ~/service
Podcasts abonnieren
Jetzt müssen nur noch Podcasts abonniert werden. Dazu muss man diese - in der
Standardkonfiguration - in die Datei mp.conf
eintragen. Jedes Podcast-Abo
besteht dabei aus drei Einträgen, dem Podcast-Link, dem Unterverzeichnis des
PODCASTDIR
, in das dieser Podcast gespeichert werden soll und der Anzahl der
Episoden, die heruntergeladen werden sollen. Als Anzahl kann alternativ auch
all
eingetragen werden um alle verfügbare Podcast-Episoden herunterzuladen.
Als Beispiel hier der Radiotatort-Podcast:
$ echo '## Radio Tatort' >> ~/bin/mashpodder/mp.conf $ echo 'http://web.ard.de/radiotatort/rss/podcast.xml Radio-Tatort all' >> ~/bin/mashpodder/mp.conf
Hinweis: Die erste Zeile ist natürlich nicht notwendig, sondern dient nur der Übersichtlichkeit der Podcastdatei.
E-Mail-Benachrichtigung bei neuen Episoden
Um beim Download neuer Episoden per Mail benachrichtigt zu werden, muss man das
run-Skript etwas erweitern. Dabei wird aus dem täglichen Podcastlog die
Zusammenfassung extrahiert und sofern ein Download ausgeführt wurde, wird diese
per Mail versendet. Die folgenden Befehle können fast direkt in die Bash kopiert
werden, nur die RECIEVER
und SENDER
Mailadresse müssen angepasst werden:
$ sed -i 's/exit 0//' ~/bin/mashpodder/run.sh $ echo 'RECIEVER="notifyme@example.com"' >> ~/bin/mashpodder/run.sh $ echo 'SENDER="notifier@example.com"' >> ~/bin/mashpodder/run.sh $ cat <<'__EOF__' >> ~/bin/mashpodder/run.sh downloads=$(sed -n -e '/++SUMMARY++/,$p' dailypodcastlog.txt | head -n -1 | tail -n 1) if [[ $downloads ]]; then mailfile=/tmp/mashpod-$RANDOM touch $mailfile chmod 600 $mailfile echo "To: $RECIEVER" >> $mailfile echo "Subject: Neue Podcast-Episode" >> $mailfile echo "From: $SENDER" >> $mailfile echo "" >> $mailfile echo "Folgende Episoden wurden heute heruntergeladen:" >> $mailfile echo "$downloads" >> $mailfile sendmail -vt < $mailfile rm $mailfile fi exit 0 __EOF__
Was man noch besser machen kann
Wie immer ziemlich vieles ;-) Was ich hier konkret noch verbessern möchte:
- Webinterface zum Hinzufügen von Podcasts - wer mag sich denn schon jedes Mal erinnern, wie diese Syntax funktioniert um auf der Kommandozeile einen Podcast zu abonnieren? Und außerdem wollte ich schon immer mal mit (F)CGI rumspielen ;-)
- Da es hier einen runwhen-Job und damit also eine Abhängigkeit von den daemontools gibt, mein obligatorischer Wunsch endlich eine Möglichkeit zu finden, dass ich diese Services überwachen kann um bei Problemen benachrichtigt zu werden.
Für weitere Vorschläge und Ideen bin ich immer zu haben, bis die Kommentarfunktion tut leider nur per Mail oder Twitter.