Gibt es eine Mögöichkeit, dass beim Kanalwechsel ein symbolischer Link aktualisiert wird und auf das aktuelle Senderlogo zeigt?
z.B.
/tmp/aktuell.png -> /<pfad-zu-senderlogo-des-aktuellen-senders>
Gibt es eine Mögöichkeit, dass beim Kanalwechsel ein symbolischer Link aktualisiert wird und auf das aktuelle Senderlogo zeigt?
z.B.
/tmp/aktuell.png -> /<pfad-zu-senderlogo-des-aktuellen-senders>
Klar, du schreibst dir ein Plugin, dass auf cStatus::ChannelSwitch reagiert und lässt es dann machen, was auch immer du brauchst.
Alternativ schickt dbus2vdr auch diese Signale über DBus nach außen, man könnte also auch ein Python-Script darauf reagieren lassen.
Warum?
Lars.
Alternativ schickt dbus2vdr auch diese Signale über DBus nach außen, man könnte also auch ein Python-Script darauf reagieren lassen.
Minimalbeispiel mit pydbus2vdr (aus dem main ppa im Paket python3-dbus2vdr, zusätzlich braucht es noch python3-gi und pyhton3-dbus), um an den Kanalnamen (und die Kanalnummer und das Device) zu kommen:
#!/usr/bin/env python3
import dbus2vdr
import dbus
from dbus.mainloop.glib import DBusGMainLoop
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
from gi.repository import GObject
def on_channel_change(*args,**kwargs):
device, channel_nr, live = args
if live and channel_nr > 0:
print("Live-TV switched to channel {0} on device {1}".format(channel_nr, device))
channel = vdr.Channels.List(channel_nr)[0][0]
print("Kanalname:", channel[1].split(';',1)[0])
if __name__ == '__main__':
DBusGMainLoop(set_as_default=True)
vdr = dbus2vdr.DBus2VDR(watchdog='True')
vdr.onSignal('ChannelSwitch',on_channel_change)
loop = GObject.MainLoop()
loop.run()
Alles anzeigen
Das sieht dann z.B. so aus:
Wow! Vielen Dank!!
Da muss ich mich aber erst mal reindenken ... ist völlig neu für mich ... Bin mir noch nicht sicher, ob ich das versteh ...
Warum?
Um immer das richtige Senderlogo auf meinem lcd4linux-Display zu haben.
Da muss ich mich aber erst mal reindenken ... ist völlig neu für mich ... Bin mir noch nicht sicher, ob ich das versteh ...
Durch mein Python-Modul wird die ganze Kommunikation mit dem dbus2vdr-Plugin ja schon ganz brauchbar abstrahiert
Das Setzen eines Links ist dann auch kein großer Schritt mehr - das muss man halt so gestalten, dass es zu den vorhandenen Logos passt. Für die Logos mit kleingeschriebenen Namen nach dem Skin nOpacity-Schema ginge das z.B. so:
#!/usr/bin/env python3
import dbus2vdr
import dbus
from dbus.mainloop.glib import DBusGMainLoop
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
from gi.repository import GObject
import os
logopath = '/var/lib/vdr/channellogos'
target = '/tmp/current_channel.png'
def on_channel_change(*args,**kwargs):
device, channel_nr, live = args
if live and channel_nr > 0:
print("Live-TV switched to channel {0} on device {1}".format(channel_nr, device))
channel = vdr.Channels.List(channel_nr)[0][0]
channel_name = channel[1].split(';',1)[0]
print("channel name:", channel_name)
# delete old symlink, if existing
try:
os.unlink(target)
except:
pass
try:
os.symlink(os.path.join(logopath, "{0}.png".format(channel_name.lower())), target)
except Exception as e:
print(e)
if __name__ == '__main__':
DBusGMainLoop(set_as_default=True)
vdr = dbus2vdr.DBus2VDR(watchdog='True')
vdr.onSignal('ChannelSwitch',on_channel_change)
loop = GObject.MainLoop()
loop.run()
Alles anzeigen
Total coole Sache! Läuft genial!!
VIELEN DANK !!!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!