Diskussion:CapturePlugin - Kaffeine

Aus TV-Browser Wiki
Wechseln zu: Navigation⧼comma-separator⧽Suche

Zu der letzten Version für Kaffeine > 2

Im Moment (Ende 2019) ist Ruby 2.5 angesagt. Ich habe keine Ahnung, ob es daran liegt, aber das Script erzeugt ein "Fehler mit der Kaffeine-DB!". Soll eigentlich in die Datenbank von Kaffeine und in die Dbus-Einstellungen schreiben. Nichts davon findet statt.

In den Zeilen 36 und 40 sollte besser dieses stehen:

elsif ARGV[0] == "remove" then
 # Lies die Parameter in Variablen.
 dummy, sJahr, sMonat, sTag, sStunde, sMinute, sLaenge, sKanal, sTitel, sProdYear, sEpisode, sEpisode_number= ARGV

Das "dummy" ist notwendig, weil sonst im Jahr das Wort "record" steht (das erste Argument). Spielmops


Ich habe einen Vorschlag für ein besseres Python-Script. Dieses übersetzt zwischen unterschiedlichen TV-Browser- und DVB-Kanalnamen, und weil sowohl Kanal als auch Titel url-encoded übermittelt werden, können sie Leerzeichen und Sonderzeichen enthalten. Sonderzeichen wie z.B. '/' werden übrigens von Kaffeine selbst in '_' verwandelt.

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} {urlencode(isset(channel_name_external_quiet,channel_name), "iso8859-1")} {urlencode(title, "iso8859-1")}
  6. Bei »Löschen« irgend etwas eintragen.

Script kaffeine-tvbrowser-wrapper

#!/usr/bin/env python
import sys
import math
import pcop
import pydcop
import urllib

channel_renames = {
	'Das Erste (ARD)': 'Das Erste',
	'BR': 'Bayerisches FS',
	'ZDFdokukanal': 'Doku/KiKa',
	'Ki.Ka': 'Doku/KiKa',
	'SWR BW': 'SWR Fernsehen',
}

def rename_channel(channel):
	try: return channel_renames[channel]
	except KeyError: return channel


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   = urllib.unquote_plus(sys.argv[8])
channel = rename_channel(urllib.unquote_plus(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)