CapturePlugin - Kaffeine

Aus TV-Browser Wiki
Version vom 20. Dezember 2009, 18:33 Uhr von Laureus⧼word-separator⧽⧼parentheses⧽
⧼revision-nav⧽
Wechseln zu: Navigation⧼comma-separator⧽Suche

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

Installation

  1. 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 lauchpad.net-Quellen verfügbar. Falls ein Installation von dort, bzw. eine Änderung der Paketquellen, nicht erwünscht ist, sollte man das alternative Schell-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
  2. Das unten angegebene Script mit dem Namen kaffeine-tvbrowser-wrapper erstellen und abspeichern.
  3. Script lesbar und ausführbar machen (chmod a+rx kaffeine-tvbrowser-wrapper)
  4. Das Script in den CapturePlugin-Einstellungen als "Applikation" angeben
  5. 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.
  6. Bei »Löschen« irgend etwas eintragen.

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)

Alternatives Shell-Skript kaffeine-tvbrowser-wrapper

Leerzeichen im Kanalnamen 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; do
  type $PRG >/dev/null 2>&1 || {
    echo "Das Programm '$PRG' wurde nicht gefunden!"
    exit 3
  }
done

# Kaffeine muss schon laufen, also starten wir es zuerst.
# Da Kaffeine sich nicht zweimal starten lässt, kann es
# nicht schaden, ohne Abfrage zu starten.
kaffeine

# Wenn zu wenig Parameter, < 8, angegeben werden, dann nimm an,
# dass die Sendung gelöscht werden soll.
[ $# -lt 8 ] && {
  echo "Sendung gelöscht oder zu wenig Parameter!"
  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="$strJahr$strMonat$strTag-$strStunde$strMinute $strTitle"
strZeitpunkt=$strJahr"-"$strMonat"-"$strTag"T"$strStunde":"$strMinute":00"

# Aufruf des Kaffeine-Interfaces via dcop.
dcop kaffeine KaffeineIface dvbNewTimer "$strName" "$strKanal" "$strZeitpunkt" "$strDauer"

# Rückgabe an den TV-Browser.
cat <<EOF
Name: $strName
Kanal: $strKanal
Zeit: $strTag.$strMonat.$strJahr $strStunde:$strMinute
Dauer: $strDauerStunden:$strDauerMinuten
EOF

ToDo

  1. Lösch-Funktion (scheint aber über DCOP nicht zu gehen)

Es ist wichtig, die Sendernamen im TV-Browser und in Kaffeine anzugleichen. Ein Entfernen der Leerzeichen im Sendernamen ist nicht notwendig. Groß- und Kleinschreibung muss übereinstimmen.