zdf-dl-autoloader - ZDFmediathek Feeds automatisch herunterladen

Posted on Sun 05 October 2014 in scripting

Da drüben bei linuxundich hat Christoph Langner ein Script namens zdf-dl geschrieben.

Damit ist es möglich in der Bash Videos von der ZDFmediathek herunzuladen.

Für mich war es die Herausforderung ein Wrapper Script zu schreiben, welches die Downloads automatisiert, sobald neue Videos zur Verfügung stehen. Für den Einsatz auf einem Server ist MediathekView nicht geeignet.

zdf-dl-autoloader

zdf-dl-autoloader dient als Wrapper Script und arbeitet mit RSS Feeds von der ZDFmediathek. Beispielsweise für TV Noir: http://www.zdf.de/ZDFmediathek/rss/1598738?view=rss into

Die Feeds werden auf den Seiten der Shows angeboten. Die URL muss angepasst werden, sodass diese mit http:// statt feed:// beginnt.

Nutzung

Nachdem man das GitHUb Repo geklont hat müssen die Einstellungen in der zdf-dl-autoloader.sh angepasst werden.

Angegeben werden muss der Pfad zu zdf-dl. Außerdem die Textdatei mit der Liste der Feeds, ein Verzeichnis für die Shows und ein Verzeichnis um eine Historie der bereits heruntergeladenen Videos zu speichern.

Existieren bestimmte Verzeichnisse nicht wird versucht diese beim Start anzulegen:

$ ./zdf-dl-autoloader.sh
Base show dir (./zdf-dl-autoloader/shows) does not exist.
Create directory ./zdf-dl-autoloader/shows? [Y/n]
History dir (./zdf-dl-autoloader/history) does not exist.
Create directory ./zdf-dl-autoloader/history? [Y/n]

Den Rest erledigt das Script. Die RSS Feeds werden aufgesplittet, sodass die Download URL, Titel und Datum der Veröffentlichung verwendet werden können.

Anschließend beginnt der Download. Am Ende wird der Download umbenannt und in ein Unterverzeichnis verschoben. In meinem Fall ./zdf-dl-autoloader/shows/TV\ Noir.

Downloading Lauschangriff._Spaceman_Spiff from 26_Sep_2014_09.29.03_GMT.
========================================


--2014-10-05 15:57:16-- http://rodl.zdf.de/none/zdf/14/09/140927_lausch_spaceman_tvn_1456k_p13v11.mp4
Resolving rodl.zdf.de (rodl.zdf.de)... 217.115.140.11, 78.35.11.79, 178.63.118.91
Connecting to rodl.zdf.de (rodl.zdf.de)|217.115.140.11|:80... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: http://zdf.vo.llnwd.net/e1/s/none/zdf/14/09/140927_lausch_spaceman_tvn_1456k_p13v11.mp4? rs=1024&ri=10000&ip=37.59.36.205&h=970046c2cd16da05a94518f932b40bd1 [following]
--2014-10-05 15:57:16-- http://zdf.vo.llnwd.net/e1/s/none/zdf/14/09/140927_lausch_spaceman_tvn_1456k_p13v11.mp4?rs=1024&ri=10000&ip=37.59.36.205&h=970046c2cd16da05a94518f932b40bd1
Resolving zdf.vo.llnwd.net (zdf.vo.llnwd.net)... 87.248.217.254, 87.248.217.253
Connecting to zdf.vo.llnwd.net (zdf.vo.llnwd.net)|87.248.217.254|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 36550856 (35M) [video/mp4]
Saving to: ‘140927_lausch_spaceman_tvn_1456k_p13v11.mp4’

100%[============================================================================>] 36,550,856 1.01MB/s in 25s

2014-10-05 15:57:42 (1.39 MB/s) - ‘140927_lausch_spaceman_tvn_1456k_p13v11.mp4’ saved [36550856/36550856]

Heruntergeladene Dateien

Die Dateien werden umbenannt, sodass das Datum der Veröffentlichung zu finden ist. Ebenso wie der Titel. Datei werden alle : durch . ersetzt, damit die Dateinamen auch mit NTFS kompatibel sind:

ls -hal ./zdf-dl-autoloader/shows/TV\ Noir/
total 35M
drwxrwxr-x 2 zdf-dl-autoloader zdf-dl-autoloader 4.0K Oct 5 15:57 .
drwxrwxr-x 3 zdf-dl-autoloader zdf-dl-autoloader 4.0K Oct 5 15:57 ..
-rw-rw-r-- 1 zdf-dl-autoloader zdf-dl-autoloader 35M Sep 25 11:49 26_Sep_2014_09.29.03_GMT-Lauschangriff._Spaceman_Spiff.mp4

Automatisierung

Das Script funktioniert nun und man möchte die Dateien automatisch herunterladen lassen.

Dazu genügt ein Eintrag im cron-Dienst. Ich möchte eine Information erhalten, falls das Script mit einem Fehler beendet wird:

55 5 * * * johndoe /home/johndoe/zdf-dl-autoloader.sh || echo "Please run the script manually and check the output." | mail -s "zdf-dl-autoloader Error!" johndow@example.org