Homeserver 35: Fang den Podcast!

Seit einiger Zeit nun quäle ich mich mit diesem blöden Podcatcher unter Windows ab. Ich benutze den Juice Podcast Downloader, der früher, ich glaube iPodder hieß. Aber seit einiger Zeit nun will er einige Podcasts nicht mehr runterladen. Darunter ist zum Beispiel auch der Podcast c’t Uplink.

Erst ein Hinweis aus der Mailingliste, „Du hast doch einen Server, lass den das doch machen“, hat das Problem gelöst. Manchmal sieht man halt den Wald vor lauter Bäumen … Naja, ihr kennt den Spruch sicher zu genüge. Wie auch immer, dieser Vorschlag enthielt auch gleich ein konkretes Linux-Paket, welches ich jetzt einsetze, und welches extrem einfach zu konfigurieren war.

Installation

Das ist, wie bei bisher allen Paketen, der gleiche Schritt. Meldet euch am Server per SSH an und gebt folgenden Befehl ein:

sudo apt-get install podget

Das war’s schon, sehr viel mehr ist da gar nicht zu machen. Nur noch konfigurieren, aber dazu kommen wir gleich.

Ziel der Podcasts

Irgendwo müssen die Podcasts ja hin. Und ich habe auf meinem RAID einen Ordner Namens Audio. Hierunter lege ich ein Verzeichnis Namens Podcasts an. Das könnte ich über SSH machen, aber da mein RAID auch als Netzlaufwerk an meinem Windows-PC eingebunden ist, mache ich es der Einfachheit halber hierüber.

In diesen Ordner werden später die ganzen Podcast-Episoden heruntergeladen. Zum Einen kann ich so mit meinem Kodi Mediacenter drauf zugreifen, mit meinem Mac per robocopy synchronisieren, und zum Anderen könnte ich sie über iTunes mit meinem iPhone synchronisieren.

Podget konfigurieren

Nun muss aber noch podget konfiguriert werden. Und damit podget seine Konfigurationsdateien erstellt, müsst ihr es per Hand starten. Hierzu gebt ihr einfach den Befehl „podget“ im SSH-Terminal ein.

Podget beginnt sofort damit, Episoden des Linux-Link Podcasts herunterzuladen. Hier drücke ich CTRL+C, dann wird der Download unterbrochen. Ich möchte den Podcast nicht, daher werde ich alles bisher heruntergeladene auch wieder löschen.

Podget hat im Home-Verzeichnis jetzt zwei Ordner angelegt, POD und .podget. Der Ordner POD enthält die heruntergeladenen Episoden, den lösche ich. im Ordner .podget liegen nun zwei Konfigurationsdateien, die wir jetzt editieren möchten:

nano .podget/podgetrc

Vieles, was hier drin ist, könnt ihr nach eigenen Vorlieben einstellen. Die Standardwerte hingegen sind schon sehr brauchbar gesetzt. Ich habe nur zwei Werte geändert:

  • DIR_LIBRARY: Hier legt man fest, wo die Podcasts hin sollen. Bei mir lautet die Zeile daher: „DIR_LIBRARY=/raid1/daten/Audio/Podcasts“, natürlich ohne die Anführungsstriche.
  • NO_PLAYLIST: Diese Option findet ihr weiter unten. Podget erstellt Playlists für die heruntergeladenen Episoden. Das möchte ich nicht, daher habe ich das umgestellt: „NO_PLAYLIST=1“. Standardmäßig steht es auf 0.

Alle anderen Werte könnt ihr anders einstellen, die Standardeinstellungen sind aber schon ziemlich sinnvoll. Noch mit CTRLX speichern und beenden.

Nun müssen wir ja noch festlegen, welche Podcasts es nun zu downloaden gilt. Auch hierfür editieren wir eine Datei:

nano .podget/serverlist

Da steht erst mal viel Erklärung drin, wie die Podcasts eingetragen werden können. Könnt ihr erst mal überspringen. Ganz unten ist der Eintrag für den Linux-Link-Podcast, den könnt ihr behalten, wenn ihr möchtet, ich habe ihn gelöscht.

Die Einträge sind denkbar einfach. Ein Podcast-Eintrag besteht aus drei Elementen, der URL, einer Kategorie die nur aus einem Wort bestehen darf und dem Namen des Podcasts.

Die Kategorie ist sehr interessant, da ihr so festlegen könnt, welche Podcasts in welche Unterordner kommen. Hier mal 2 Beispiele:

http://www.tuksub.de/?feed=podcast Kommunikation TuKSuB Podcast
http://www.heise.de/ct/uplink/ctuplink.rss IT c't Uplink

Jetzt passiert folgendes: Im Ordner Podcasts wird ein Unterordner Kommunikation erstellt, in dem dann der Unterordner TuKSuB Podcast erstellt wird. Und ein Ordner IT, in dem dann der Unterordner c’t Uplink erstellt wird. So könnt ihr die Podcasts prima thematisch gruppieren.

Besondere Ordner

Im Ordner Podcasts befindet sich nun auch ein Ordner Namens .LOG. Hierin befinden sich zwei Dateien, done und errors.

Jede erfolgreich heruntergeladene Episode wird in die Datei done geschrieben. Belasst sie dort, sonst wird sie erneut heruntergeladen. Steht eine Episode also dort, wird sie beim nächsten Start von podget nicht erneut heruntergeladen. Andererseits, wollt ihr eine Episode erneut herunterladen, weil sie aus Versehen gelöscht wurde, so müsst ihr dessen Eintrag aus dieser Datei entfernen.

Jeder fehlgeschlagene Download wird in der Datei errors eingetragen. Wenn es ein temporäres Problem ist, so lasst es einfach dort stehen. Wenn die Datei zwar noch im Feed steht, die tatsächliche Datei aber nicht mehr verfügbar ist, so könnt ihr verhindern, dass podget sie immer wieder zu downloaden versucht. Kopiert die Zeile aus errors einfach in die Datei done. Die Reihenfolge spielt keine Rolle, Hauptsache die URL zur Datei ist in der done-Datei gespeichert.

Diese Dateien sind selbstverständlich noch leer. Wenn ihr jetzt also podget startet, so wird alles heruntergeladen, was verfügbar ist. Macht das ruhig, all diese URLs per Hand in die Datei done einzutragen, ist viel zu umständlich und fehleranfällig. Startet podget also, nachdem ihr alle eure Podcasts in die serverlist eingetragen habt, ein mal per Hand und lasst es durchlaufen. Später könnt ihr dann die Episoden löschen, die ihr nicht behalten wollt.

Regelmäßiges Ausführen

Natürlich wollt ihr, dass eure Podcasts regelmäßig abgerufen werden. Das müsst ihr auch nicht selbst tun, das kann Linux prima auch ganz alleine! 🙂 Alles, was es dazu braucht, ist ein Cron-Job.

Auf dem Server habe ich es mir angewöhnt, alle Cron-Jobs in die systemweite Cron-Datei einzutragen. Ich habe einfach keine Lust, mich mit zwei oder mehr Crontabs herumzuschlagen. Daher mache ich es mir einfach. Trotzdem ist es wichtig, dass podget im Benutzerkontext gestartet wird, in meinem Falle also als kamil. Und so sieht mein Eintrag aus. Öffnet die crontab-Datei:

sudo nano /etc/crontab

Fügt ganz am Ende, aber noch oberhalb des abschließenden Nummernzeichens „#“, folgende Zeile ein:

10 0    * * *   kamil   /usr/bin/podget -s

Podget wird also jeden Tag um 00:10 Uhr im Silent-Modus aufgerufen. Der Silent-Modus ist halt dafür da, weil ja keiner vor dem Monitor sitzt und zuguckt, also braucht Podget auch keine Ausgaben auf den Monitor auszugeben.

Es ist wichtig, dass podget im Kontext vom Benutzer kamil ausgeführt wird, weil ja die Konfiguration von podget im Home-Verzeichnis von kamil liegt. Vielleicht gibt es für podget sogar einen Parameter, um das zu umschiffen, aber ich fand das als die einfachste Lösung.

Fazit

Die Einrichtung hat mich nicht mal ganz eine halbe Stunde gekostet. Der Download der Episoden läuft bisher prima. auch der problematische Download des Podcasts c’t Uplink geht jetzt wieder reibungslos! Falls ihr also so einen Homeserver betreibt, lasst ihn doch die Arbeit machen. Dafür steht er schließlich da rum und verbraucht Strom! 🙂