CapturePlugin - Kaffeine

Aus TV-Browser Wiki
Version vom 20. November 2007, 12:48 Uhr von Edmund⧼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.

Achtung! Momentan dürfen leider keine Leerzeichen im Titel oder Sendernamen übergeben werden.

Installation

  1. DCOP-Bindings für Python installieren (Paket python-dcop bei Debian/Ubuntu)
  2. Das unten angegebene Script mit dem Namen kaffeine-tvbrowser-wrapper erstellen und abspeichern.
  3. Script ausführbar machen (chmod a+x kaffeine-tvbrowser-wrapper)
  4. Das Script in den CapturePlugin-Einstellungen als Programm 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}
  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

Das Skript ersetzt Leerzeichen im Namen durch Unterstriche. Leerzeichen im Sendernamen werden aber noch nicht abgefangen, hier kann es passieren, dass Teile der Senderbezeichnung im Namen auftauchen.

#!/bin/bash
#
# Dieses Script überträgt Aufnahmedaten vom
# TV-Browser zu Kaffeine

# Konfiguration
lArgumente=8

# Wenn zu wenig Parameter angegeben werden abbrechen
if (( $# < $lArgumente )) ; then
        echo "Nicht genügend Parameter übergeben."
	exit 3
fi

# Wenn genau 8 Parameter übergeben werden ist der 9. der Name
if (( $# == $lArgumente )) ; then
	strJahr=$1
	strMonat=$2
	strTag=$3
	strStunde=$4
	strMinute=$5
	strLaenge=$6
	strKanal=$7
	strTitle=$8
fi

# Wenn mehr als 8 Parameter, gehören die Überschüssigen zum Namen
if (( $# > $lArgumente )) ; then
	strJahr=$1
	shift
	strMonat=$1
	shift
	strTag=$1
	shift
	strStunde=$1
	shift
	strMinute=$1
	shift
	strLaenge=$1
	shift
	strKanal=$1
	shift
	while [ ! -z "$1" ]
	do
		strTitle=$strTitle"_"$1
		shift
	done
fi

# Teile für Befehl bauen
strName=$strJahr"-"$strMonat"-"$strTag"_"$strStunde"-"$strMinute"_"$strTitle
strZeitpunkt=$strJahr"-"$strMonat"-"$strTag"T"$strStunde":"$strMinute":00"
strDauerStunden=$(($strLaenge/60))
if (( ${#strDauerStunden} < 2 )) ; then
	strDauerStunden="0"$strDauerStunden
fi
strDauerMinuten=$(($strLaenge%60))
if (( ${#strDauerMinuten} < 2 )) ; then
	strDauerMinuten="0"$strDauerMinuten
fi
strDauer=$strDauerStunden":"$strDauerMinuten":00"

# Aufruf des Kaffeine-Interface
dcop kaffeine KaffeineIface dvbNewTimer $strName $strKanal $strZeitpunkt $strDauer
# Rückgabe an den TV-Browser
echo "Name:"$strName";Kanal:"$strKanal";Zeit:"$strZeitpunkt";Dauer:"$strDauer

ToDo

  1. Lösch-Funktion (scheint aber über DCOP nicht zu gehen)
  2. Übergabe von Leerzeichen in Titel und Sendernamen