Serien - und Filmuntertitel via Jabber verteilen
Geschrieben von Eric Scheibler am 03.02.2013
Ich schaue mir gern Serien und Filme im Originalton an. Manchmal brauche ich allerdings die deutschen Untertitel, um der Handlung folgen zu können. Da ich die Untertitel nicht lesen kann, habe ich ein Programm geschrieben, welches die Untertitelspur via Sprachausgabe ausgibt. Ich möchte allerdings nicht dass die Sprachausgabe den gleichen Kanal nutzt wie der Filmton. Zum einen wäre sie bei lauten Szenen schwer zu verstehen und zum anderen könnte man das Programm nur nutzen, wenn man allein ist. Daher habe ich mich entschieden, die Untertitel via Jabber (Chat Protokoll) zu verteilen.
Das Programm soll neben der Untertitelverteilung auch noch zur Serienverwaltung dienen. So merkt es sich die zuletzt geschaute Episode und auch die Position innerhalb einer Datei.
Für den Empfang der Untertitel eignet sich jeder Jabber Client, der eingehende Nachrichten automatisch vorlesen kann. Ich nutze momentan die App IM+ auf dem iPhone. Dort lässt sich in den Settings das automatische Vorlesen aktivieren. Es ist auch möglich, die Untertitel an mehr als einen Empfänger zu schicken.
Sollte bisher kein Jabber Account vorhanden sein, so muss man sich mindestens zwei erstellen: einer läuft auf dem PC, welcher den Film abspielt und der andere auf dem Smartphone. Ein möglicher Jabber Server wird vom CCC betrieben und ist unter der Adresse jabber.ccc.de zu erreichen.
Installation
Die folgenden Programme müssen installiert werden:
sudo apt-get install python-pyasn1 python-dnspython python-setuptools mplayer git
Als nächstes ein paar Python Module laden:
sudo easy_install python-magic sleekxmpp configobj
Nun das Git Repo klonen:
cd ~/source
git clone https://github.com/scheibler/serieSandSubs.git
cd serieSandSubs/
Die Konfigurationsdateien für das Skript werden im Settingsfolder vom MPlayer erwartet:
cp config/input.conf config/serieSandSubs.conf ~/.mplayer/
Jetzt sollten die Config Dateien angepasst werden. In der Regel genügt es, die Daten für die Jabber Accounts einzutragen. Wenn man dagegen plant, auf die Untertitelfunktionalität zu verzichten und nur die Serienverwaltungsfunktionen nutzen will, muss man gar nichts ändern.
die input.conf Datei spezifiziert ein paar zusätzliche Tastenkombinationen für den MPlayer, mit “s” ändere ich die Tonspur und mit “n” kann ich die Abspielgeschwindigkeit auf “normal” zurücksetzen.
Benutzung
Angenommen man hat eine Serie mit 20 Episoden vorliegen. Zunächst besorgt man sich die passende Untertiteldatei. Eine umfangreiche Auswahl für deutschsprachige Untertitel ist unter www..subcentral.de zu finden.
Nun startet man die Serie mit dem Befehl:
./serieSandSubs/main.py -a [-s subtitle_file] /data/series/episode01.avi
- -a: Die Serie wird zur Liste der verwalteten Serien hinzugefügt. Dies muss nur bei der ersten Folge geschehen.
- -s [Untertiteldatei]: Gibt die Datei mit den Untertiteln an. Momentan wird das .srt Format unterstützt. Hat die Datei den gleichen Namen wie das Videofile und liegt im selben Ordner, muss sie nicht extra angegeben werden, sondern wird automatisch geladen. Sind für die Serie / Episode keine Untertitel vorhanden, wird das Video natürlich trotzdem geladen.
Es lädt der MPlayer, welcher mit den standard Tastenkombinationen gesteuert wird:
- SPACE: Pause
- Pfeil links / rechts: 10 Sekunden zurück / vor
- Pfeil runter / hoch: 1 Minute zurcük / vor
- Bild ab / auf: 10 Minuten zurück / vor
- ENTER: nächster Track in der Playlist oder Ende
- ESB oder q: Beenden
- f: Vollbild
In Hintergrund wird permanent die aktuelle Videoposition gespeichert. Beendet man beispielsweise nach der Hälfte der Episode die Wiedergabe oder will man danach die zweite Folge der Serie anschauen so lädt man das Programm einfach ohne jegliche Parameter:
./serieSandSubs/main.py
Es öffnet sich ein Menü, in welchem alle hinzugefügten Serien aufgelistet werden.
Will man während der Wiedergabe die Untertitelausgabe stoppen, muss man das Video für ca. eine Sekunde stoppen, also SPACE, 1 Sek warten, SPACe.
Man kann mit dem Skript nicht nur Serien sondern z.B. auch Hörbücher abspielen. Entweder fügt man alle Audiotracks zu einem großen zusammen oder man startet das Hörbuch mit dem -p Parameter:
./serieSandSubs/main.py -a -p /data/audio_books/book/track01.mp3
-p bewirkt, dass nach dem aktuellen Track direkt der nächste geladen wird.
Um das Skript einfacher ausführen zu können ist ein Alias in der Shell Config der Wahl von Vorteil:
alias play='~/source/serieSandSubs/serieSandSubs/main.py'