Mit dem nächsten Update landen die Extradaten von EPG Share nicht mit mehr in der epg.dat sondern werden in eine Datenbank ausgelagert.
Das hat den Vorteil das der User auch noch Extradaten hat, wenn die epg.dat mal korrupt oder leer ist.
Um das Ganze in einen Renderer/Converter einzubauen hier mal ein einfaches Beispiel anhand eines Infobarwidgets:
Skin:
<widget backgroundColor="#00232227" font="Regular;30" foregroundColor="foreground" halign="left" noWrap="1" position="378,980" render="Label" size="920,40" source="session.extEvent_Now" transparent="1" valign="center" zPosition="4">
<convert type="FluidNextExtEventName"/>
<convert type="FluidNextExtraEventData">SERIESINFO SUBTITLE GENRE YEAR COUNTRY</convert>
</widget>
Source ist session.extEvent_Now
session.extEvent_Now und session.extEvent_Next kriegt man mit folgendem Paket:
enigma2-plugin-systemplugins-exteventinfohandler
das muss also in die depends Eurer IPK...
Converter ist FluidNextExtEventName - einem erweiterten EventName Converter - als Argument wird EventExtraData übergeben - der Converter spuckt in dem Fall die Extradaten aus.
Diese werden jetzt übergeben an FluidNextExtraEventData... ab da ist alles wie gehabt....
Die Änderungen müssen jetzt im FluidNextExtEventName gemacht werden:
Früher wurden die Extradaten aus dem EPGCache geholt.
Neu:
EPG Share stellt eine DB Schnittstelle zur Verfügung - diese kriegt man über folgende Funktion:
Alles anzeigen
Tut mir einen Gefallen und fangt an irgendwelche Insertstatements auf die DB zu schicken. Das geht nur in die Hose.
Was braucht man bzw. kann man nutzen um die Daten zu kriegen?
1. ServiceRef
2. EventID
schaut euch im Fluid Converter an wie man die kriegt - in verschiedenen Screens haben wir noch extra Sourcen eingebaut, damit man beides hat.
Optional:
3. Startzeit als Unixtimestamp
4. Sendungsname
mit den beiden optionalen Parametern kann man auch Extradaten bekommen, wenn sich die EventID geändert hat (Pro7/Sat1 z.B.) und auch wenn sich die Sendung um ein paar Minuten verschoben hat...
Die Extradaten kommen als DICT zurück - mit einem einfachen print könnt ihr sehen was alles vorhanden ist.
Zusammenfassung: Es ändert sich NUR der Part WIE man an die Extradaten kommt. Nicht bei der Darstellung.
Den Converter Code kann ich Euch gerne geben, wenn es soweit ist - die Renderer nicht - die sind in die .so gewandert.
Das hat den Vorteil das der User auch noch Extradaten hat, wenn die epg.dat mal korrupt oder leer ist.
Um das Ganze in einen Renderer/Converter einzubauen hier mal ein einfaches Beispiel anhand eines Infobarwidgets:
Skin:
<widget backgroundColor="#00232227" font="Regular;30" foregroundColor="foreground" halign="left" noWrap="1" position="378,980" render="Label" size="920,40" source="session.extEvent_Now" transparent="1" valign="center" zPosition="4">
<convert type="FluidNextExtEventName"/>
<convert type="FluidNextExtraEventData">SERIESINFO SUBTITLE GENRE YEAR COUNTRY</convert>
</widget>
Source ist session.extEvent_Now
session.extEvent_Now und session.extEvent_Next kriegt man mit folgendem Paket:
enigma2-plugin-systemplugins-exteventinfohandler
das muss also in die depends Eurer IPK...
Converter ist FluidNextExtEventName - einem erweiterten EventName Converter - als Argument wird EventExtraData übergeben - der Converter spuckt in dem Fall die Extradaten aus.
Diese werden jetzt übergeben an FluidNextExtraEventData... ab da ist alles wie gehabt....
Die Änderungen müssen jetzt im FluidNextExtEventName gemacht werden:
Früher wurden die Extradaten aus dem EPGCache geholt.
Neu:
EPG Share stellt eine DB Schnittstelle zur Verfügung - diese kriegt man über folgende Funktion:
Quellcode
- from Plugins.Extensions.EpgShare.main import getEPGDB
- def get_Extradata(service, eventid, beginTime=None, EventName= None):
- try:
- data = None
- if "::" in str(service):
- service = service.split("::")[0] + ":"
- if "http" in str(service):
- service = service.split("http")[0]
- if not "1:0:0:0:0:0:0:0:0:0:" in service and not "4097:0:0:0:0:0:0:0:0:0:" in service:
- if beginTime and EventName:
- data = getEPGDB().selectSQL("SELECT * FROM epg_extradata WHERE ref = ? AND (eventid = ? or (LOWER(title) = ? and airtime BETWEEN ? AND ?))", [str(service), str(eventid),str(EventName.lower()).decode("utf-8"), str(int(beginTime) -120), str(int(beginTime) + 120) ])
- else:
- data = getEPGDB().selectSQL("SELECT * FROM epg_extradata WHERE ref = ? AND eventid = ?", [str(service), str(eventid)])
- if data and len(data) > 0:
- return data[0]
- else:
- return None
- else:
- return None
- except Exception, ex:
- print "DB Error: %s" % str(ex)
- return None
Was braucht man bzw. kann man nutzen um die Daten zu kriegen?
1. ServiceRef
2. EventID
schaut euch im Fluid Converter an wie man die kriegt - in verschiedenen Screens haben wir noch extra Sourcen eingebaut, damit man beides hat.
Optional:
3. Startzeit als Unixtimestamp
4. Sendungsname
mit den beiden optionalen Parametern kann man auch Extradaten bekommen, wenn sich die EventID geändert hat (Pro7/Sat1 z.B.) und auch wenn sich die Sendung um ein paar Minuten verschoben hat...
Die Extradaten kommen als DICT zurück - mit einem einfachen print könnt ihr sehen was alles vorhanden ist.
Zusammenfassung: Es ändert sich NUR der Part WIE man an die Extradaten kommt. Nicht bei der Darstellung.
Den Converter Code kann ich Euch gerne geben, wenn es soweit ist - die Renderer nicht - die sind in die .so gewandert.
VMC
EPG Share
VU Alexa Skill
Fluid Next
Global Search
Spenden sind immer herzlich willkommen... einfach hier klicken und das ganze an sbeatz76@googlemail.com schicken
EPG Share
VU Alexa Skill
Fluid Next
Global Search
Spenden sind immer herzlich willkommen... einfach hier klicken und das ganze an sbeatz76@googlemail.com schicken