CapturePlugin - Kaffeine

Aus TV-Browser Wiki
Version vom 29. Dezember 2009, 22:34 Uhr von Laureus⧼word-separator⧽⧼parentheses⧽ ⧼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 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
  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.
    In der deutschen Version von TV-Browser findet man dies unter: Plugins --> Aufnahmesteuerung, hier Tab. Geräte.
  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. Als Parameter bei »Löschen« irgend etwas eintragen. Z.Bsp. ein einzelnes Wort: remove

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 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

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.