CapturePlugin - Kaffeine
Aus TV-Browser Wiki
Falls man den DVB-Empfang in Kaffeine eingerichtet hat, kann man mittels dieser Anleitung per CapturePlugin aufnehmen.
Zu Leerzeichen im Sendernamen / Titel gibt es folgende Diskussion: Diskussion
Inhaltsverzeichnis |
[bearbeiten] Installation
- DCOP-Bindings für Python installieren (Paket python-dcop bei Debian/Ubuntu).
Ab Ubuntu 9.04, Jaunty Jackalope, aufwärts ist das Paket python-dcop nur noch über launchpad.net-Quellen verfügbar. Falls eine Installation von dort, bzw. eine Änderung der Paketquellen, nicht erwünscht ist, sollte man das alternative Shell-Script benutzen. Das verwendete Programm dcop befindet sich im Paket kdelibs4c2a.
Installation des Paketes python-dcop. Unter Ubuntu/Gnome: Anwendungen --> Zubehör --> Terminal.
Eingabe:sudo apt-get install python-dcop
Installation des Paketes kdelibs4c2a:sudo apt-get install kdelibs4c2a
- Das unten angegebene Script mit dem Namen
kaffeine-tvbrowser-wrappererstellen und abspeichern. - Script lesbar und ausführbar machen (
chmod a+rx kaffeine-tvbrowser-wrapper) - Das Script in den CapturePlugin-Einstellungen als "Applikation" angeben.
In der deutschen Version von TV-Browser findet man dies unter: Plugins --> Aufnahmesteuerung, hier Tab. Geräte. - Als Parameter folgendes für »Aufnahme« eintragen:
{start_year} {start_month} {start_day} {start_hour} {start_minute} {length_minutes} "{isset(channel_name_external_quiet,channel_name)}" "{title}"
Die Anführungszeichen beim Kanalnamen und Titel sorgen dafür, dass diese Parameter auch korrekt mit Leerzeichen an die Scripte übergeben werden. - Als Parameter bei »Löschen« irgend etwas eintragen. Z.Bsp. ein einzelnes Wort:
remove
[bearbeiten] Script kaffeine-tvbrowser-wrapper
#!/usr/bin/env python
import sys
import math
import pcop
import pydcop
if sys.argv.count < 9:
print 'zu wenig Parameter'
exit
def dd(num):
if int(num) < 10:
return "0" + str(num)
else:
return str(num)
year = dd(sys.argv[1])
month = dd(sys.argv[2])
day = dd(sys.argv[3])
hour = dd(sys.argv[4])
minute = dd(sys.argv[5])
length = int(sys.argv[6])
title = sys.argv[8]
channel = sys.argv[7]
name = year + "-" + month + "-" + day + "_" + hour + "-" + minute + "_" + title
datetime = year + "-" + month + "-" + day + "T" + hour + ":" + minute + ":00"
duration = dd(int(math.floor(length // 60))) + ":" + dd(length % 60) + ":00"
pydcop.anyAppCalled("kaffeine").KaffeineIface.dvbNewTimer(name, channel, datetime, duration)
[bearbeiten] Alternatives Shell-Skript kaffeine-tvbrowser-wrapper
Leerzeichen im Sendernamen und Titel werden korrekt zu kaffeine übertragen.
#!/bin/sh
# Dieses Script überträgt Aufnahmedaten vom TV-Browser zu Kaffeine.
# Überprüfen, ob alle notwendigen Programme vorhanden sind.
for PRG in kaffeine dcop bc id ps sed; do
type $PRG >/dev/null 2>&1 || {
echo "Das Programm '$PRG' wurde nicht gefunden!"
exit 3
}
done
# Wenn zu wenig Parameter, < 8, angegeben werden, dann nimm an,
# dass die Sendung gelöscht werden soll.
[ $# -lt 8 ] && {
if [ $# -eq 1 -a "$1" = "remove" ]; then
echo "Sendung in TV-Browser gelöscht! Bitte in kaffeine separat löschen."
else
echo "Sendung gelöscht oder zu wenig Parameter! Bitte in kaffeine separat löschen."
fi
exit 0
}
# Lies die Parameter in Variablen.
for VAR in strJahr strMonat strTag strStunde strMinute strLaenge strKanal strTitle; do
eval "$VAR=\"$1\""
shift
done
strDauerStunden=`echo "$strLaenge/60" | bc`
strDauerMinuten=`echo "$strLaenge%60" | bc`
# Einstellige Zahlen mit führender Null ausstatten.
for VAR in strMonat strTag strStunde strMinute strDauerStunden strDauerMinuten; do
case `eval "echo \\\$$VAR"` in
[0-9])
eval "$VAR=0\$$VAR"
;;
esac
done
strDauer=$strDauerStunden":"$strDauerMinuten":00"
# Teile für Befehl bauen.
strName="$strTitle"
strZeitpunkt="$strJahr-$strMonat-${strTag}T$strStunde:$strMinute:00"
# Prüfe, ob kaffeine schon läuft.
WHOAMI=`id -un`
ps -u "$WHOAMI" -o cmd | sed -e 1d -e 's/ .*//' -e 's_^.*/__' | \
( while read CMD; do [ "$CMD" = kaffeine ] && exit 1; done; exit 0 )
KAFFEINE_FOUND=$?
# kaffeine starten, falls es nicht läuft.
[ $KAFFEINE_FOUND -eq 0 ] && kaffeine
# Aufruf des Kaffeine-Interfaces via dcop.
dcop kaffeine KaffeineIface dvbNewTimer "$strName" "$strKanal" "$strZeitpunkt" "$strDauer"
DCOP_RC=$?
# Rückgabe an den TV-Browser.
cat <<EOF
Name: $strName
Kanal: $strKanal
Zeit: $strTag.$strMonat.$strJahr $strStunde:$strMinute
Dauer: $strDauerStunden:$strDauerMinuten
Rückgabewert (dcop): $DCOP_RC
EOF
exit $DCOP_RC
[bearbeiten] Sendernamen
Es ist wichtig, die Sendernamen im TV-Browser und in Kaffeine anzugleichen. D.h. sie müssen identisch sein.
Ein Entfernen der Leerzeichen im Sendernamen ist nicht notwendig. Groß- und Kleinschreibung muss übereinstimmen.
Eine Änderung der Sendernamen kann in kaffeine oder im TV-Browser erfolgen.
[bearbeiten] To Do
- Lösch-Funktion.
Diese Funktionalität gibt es in kaffeine bis Version 0.8.8 nicht. Falls Version 1 stabil laufen sollte, ist dies noch einmal zu überprüfen.
D.h. zur Zeit sind alle Aufnahmedaten separat im TV-Browser und kaffeine zu löschen.

