CapturePlugin - Kaffeine

Aus TV-Browser Wiki
Version vom 20. Dezember 2009, 16:56 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.

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

Aber beachte deswegen die Diskussion

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

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

# 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

# Einstellige Zahlen mit führender Null ausstatten
if (($strMonat<10)); then
    strMonat="0"$strMonat
fi
if (($strTag<10)); then
    strTag="0"$strTag
fi
if (($strStunde<10)); then
    strStunde="0"$strStunde
fi
if (($strMinute<10)); then
    strMinute="0"$strMinute
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-Interfaces
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

Es ist wichtig, die Sendernamen im TV-Browser und in Kaffeine anzugleichen, bei der Gelegenheit sollten die Leerzeichen entfernt werden. Groß- und Kleinschreibung muss übereinstimmen.