dicer / auto-tatort

Kleines Script um die aktuellen Tatort Folgen automatisiert (cron) aus der ARD Mediathek zu laden
GNU General Public License v3.0
19 stars 9 forks source link

auto-tatort

Kleines Script um die aktuellen Tatort Folgen automatisiert (cron) aus der ARD Mediathek zu laden.

Wer ein weniger automatisiertes Script benoetigt und einfach nur eine Folge (bzw beliebige Sendung aus der Mediathek) runterladen moechte, schaut am besten bei Leo Gaggl vorbei: https://github.com/leogaggl/media/

Einsatz

Die Datei config.json.sample nach config.json kopieren. Darin wenigstens mit targetFolder den Pfad angeben in dem die Dateien abgelegt werden sollen. Die Vergabe des Dateinames erfolgt automatisch und basiert auf dem Titel des RSS Feed Eintrags.

Dann Script via cron automatisiert ausfuehren lassen:

30 0-23/2 * python3 ~/bin/auto-tatort/autoTatort.py

Das Script laed alle Folgen, die es bisher noch nicht runtergeladen hat (siehe Config: downloadedFeedItemsDatabase) und fuer die es keine exclude-Filter gibt (siehe Config: exclude). Es kann daher beliebig haeufig ausgefuehrt werden, jedoch sollte es nicht haeufiger als alle 30 Minuten gestartet werden um nicht unnoetig Last auf der Mediathek zu erzeugen. Desweiteren ist darauf zu achten, dass das Script nicht mehrmals gleichzeitig laeuft! Dabei auch bedenken, dass der Download immer eine Weile dauert.

Wenn der Rechner cron-Ausgaben via Email weiterleitet, bekommt man so mitgeteilt, wenn eine neue Folge erfolgreich runtergeladen wurde (oder es zu Fehlern kam). Wurde keine neue Folge gefunden, gibt das Script nichts zurueck und keine Email wird versendet.

Es empfiehlt sich auch diesem Repository auf Github zu folgen, um wichtige Fehlerbereinigungen zeitnah mit zu bekommen.

Untertitel

Die meisten oder alle Tatortfolgen scheinen auch Untertitel zu enthalten. Diese werden automatisch mit runter geladen und im gleichen Verzeichnis abgelegt. Das sind rohe XML Dateien, mit denen man noch nicht viel anfangen kann. Es gibt aber einen Konverter: https://github.com/haraldF/ttaf2srt Wird dieser im PATH gefunden, wird das XML automatisch ins SRT-Format umgewandelt und mit dem gleichen Filenamen wie das mp4 und Endung ".srt" abgelegt. Dabei ist zu beachten, dass die Untertitel im UTF8 Format abgelegt werden. Manche Player erkennen das nicht automatisch und brauchen extra Optionen. Zb bei mplayer: "-subcp utf8" Das originale XML-File wird danach nicht geloescht, damit man bei Fehlern im Konverter spaeter noch eine Chance hat ein korrektes SRT-File zu generieren. Wenn keine Untertitel gewuenscht sind, kann man das entsprechend in der Config anpassen.

Wenn man Cron benutzt, sollte man darauf achten, dass der Pfad auch das ttaf2srt Script beinhaltet. Cron setzt diesen anders als bei einem Shell-Login des Users zu dem die crontab gehoert! Eine Moeglichkeit das zu beeinflussen: https://stackoverflow.com/questions/10129381/crontab-path-and-user
Bei Ablage des Konverters in /home/autotatort/bin also zb: PATH=/home/autotatort/bin:/usr/local/bin:/usr/bin:/bin

Config

Die Konfiguration findet in der Datei config.json statt. Ein Beispiel findet sich in config.json.sample. Dabei ist das JSON-Format einzuhalten (hauptsaechlich weil sich dadurch keine weitere Bibliotheksabhaengigkeit ergibt). Folgende Optionen koennen veraendert werden:

Bekannte Probleme

UnicodeEncodeError: 'ascii' codec can't encode character
Hier stimmt unter Umstaenden die Locale nicht. Siehe https://github.com/dicer/auto-tatort/issues/12. Am besten das Script testweise so starten:

LC_ALL=en_US.UTF-8 /usr/bin/python3 autoTatort.py

Version 2.1.00 laed nicht das Video, sondern kleines m3u8 File (wenige kb gross) Hier gab es Mitte Dezember eine Änderung in der Mediathek. Daher wurde bei aktivierter Auto-Qualität leider nicht die höchste Qualität selektiert, sondern eine m3u8-Datei runter geladen. In issue #16 ist eine Lösung dokumentiert.

Abhaengigkeiten

Setzt python3 voraus, sowie die feedparser & requests Bibliotheken (apt-get install python3-feedparser python3-requests)

import codecs
import datetime
import distutils.spawn
import json
import os.path
import re
import subprocess
import sys
from urllib.request import urlopen, urlretrieve
import urllib.parse
import feedparser
import requests (apt-get install python-requests)

Credits

Author: Felix Knecht
Die Idee hierzu ist aus den Scripten von Robin Gareus entstanden: http://www.rg42.org/wiki/tatort-dl Die Logik HD-Versionen zu finden ist aus Mediathekview übernommen: https://github.com/mediathekview/