Frage zur neuen EPG- Datenbank

  • wäre es bitte möglich ein paar Zeilen zu schreiben wie man die load/save_finished events im Python subscriben kann/soll ?

    • Offizieller Beitrag

    Hi,


    das ist einfach..


    du holst dir die epgcache instance... also from enigma import eEPGCache, cachestate


    def cacheStateChanged(self, state):
    if state.state == cachestate.load_finished:
    print "epgcache load finished"
    elif state.state == cachestate.save_finished:
    print "epgcache save finished"


    epg = eEPGCache.getInstance()
    self.cache_state_conn = epg.cacheState.connect(self.cacheStateChanged)


    so in etwa sollte es aussehen wenn eine class existiert....


    cu

    • Offizieller Beitrag

    Hi,


    das ist einfach..


    du holst dir die epgcache instance... also:


    so in etwa sollte es aussehen wenn eine class existiert....


    cu

  • Danke, und wenn Ihr jetzt noch verraten würdet was das Lock und Unlock beim EPGCache macht/machen soll wäre es perfekt :grinning_squinting_face:

  • Na ja manchmal wäre es auch im DreamOS evt. noch ganz nützlich wenn man das updaten der EPG Events locken/interbinden könnte, nicht nur während dem load und save wo es ja logisch ist das sowas passiert. Aber dann lasse ich halt im Moment die Finger davon :grinning_squinting_face:

  • Gerade für das Sammeln von Daten oder besser für das Kopieren wäre das interessant.


    Einfaches Beispiel - FashionTV HD strahlt keinen EPG aus, Fashion TV SD sehr wohl - statt jetzt blöde in der epg.db 2x das selbe zu stopfen und dann ins RAM zu laden könnte man direkt in der Memory Database mit SQL einen Trigger setzen der alle Events für den HD Sender repliziert - NUR wenn man bei sowas temporär locks auf die Database setzt passieren sicher komische Sachen - ausser man kann eben alle Updates mal kurz suspenden bis man fertig ist. Aber das kann ich natürlich auch in einer gesavten DB ausprobieren anlegen, der Trigger müsste beim Laden ja mit ins Memory kommen.


    Ähnlich ist dem im OpenTV Plugin, eigentlich müssten die auch als andere Transponder Events direkt in die Memory Datenbank geladen werden können, statt sie im Moment mit Prio 100 als Externe Events reinzuschieben - nur wenn ich die Update nicht sauber anhalten kann bis ich fertig bin kann auch das böse ausgehen, weil ich nicht 100%ig gegen Now/Next checken kann.


    Aber das sind Spielereien die ich mal ausprobieren 'muss' wenn ich Abends nicht schlafen kann.

  • Das Problem wird trozdem sein wie man die Sachen synchronisiert, beim Backup/restore sind die fertig Events eine feine Sache, aber sauber in eimem Thread ein warten bis fertig zu programmieren ist damit trotzdem NICHT so einfach.


    Vor dem Wochenende wird es also auch noch keine neuen Versionen vom epgdb.py geben und damit auch noch kein neues EPGImport und OpenEPG Plugin.


    Beim OpenEPG wäre es nicht schwer das umzubauen, ich habe mir nicht umsonst ein eigenes Plugin dafür gemacht, aber das EPGImport ist für mehr oder weniger synchrones Laden gestrickt, und ich würde gerne ein epgdb.py machen das beide glücklich machen kann :face_with_rolling_eyes:


    Wobei ich mich langsam frage ob man das überhaupt machen sollte, weil die asynchrone Lösung eigentlich schöner ist, nur dann werde ich das Plugin nie wieder los :grinning_squinting_face:


    LG


    gutemine

  • In der Zwischenzeit macht das EPGdbBackup Plugin viel mehr als nur backups der epg.db aus dem Memory, du kannst auch eine leere Database Anlegen, Konsistenz checks machen, nur die externen Events rauslöschen, etc...

  • kurze rückmeldung zur 0.8 OpenEPG


    -die automatische 28.2/28.4 erkennung funktioniert bei mir


    -das laden hat auch funktionier, also die load/save finished events scheinen zu funktionieren



    ist nur ein gefühl, aber kan es sein das der ladevorgang jetzt länger dauert?


    und muss etwas geändert werden an die statusanzeige? ich hab bei mir die ganze zeit dieselben kB-anzeige gesehen, keine änderungen während dem laden (sollte doch erst runter gehen und danach hoch?)

  • nein ich mache kein vaccum auf die Database, das kostet nur unnötig zet sie erst klein zu machen und dann wieder aufzublasen.


    Die ganze Fotschrittsanzeige im OpenEPG ist noch recht rudimentär, ich muss mir erst überlegen ob ich bei den kB bleibe oder auf Events raufzählen switche so wie im EPGImporter.


    Beim Fortschritt des Ladens der crossepg binaries würde ich gerne bei kB bleiben, weil wenn ich anfange daran zu schrauben brauche ich gar nicht mehr aufhören bis ich sie neu geschrieben habe.


    Durch den load/save finished event sollten aber jetzt die ganze Zeit keine Zahnräder mehr kommen, weil das ist wichtig damit man es auch friktionsfrei im Hintergrund starten kann. Dann muss ich aber auch das Laden über eine Dummy/Streaming Aufnahme sabuer zum Laufen kriegen, weil im Moment geht das nur je nach Sonnenstand und Luftfeuchtigkeit. Was aber mehr damit zu tun hat das ich auf der 820 develope und bei einem Single Tuner macht das sowieso nur begrenzt sinn, womit ich es selber praktisch nicht teste.


    Und nein am Speed des Ladens hat sich nicht wirklich was geändert das hängt eher damit zusammen wie fragmentiert deine epg.db durch das mehrmalige Laden ist , was wiederum ein Indiz wäre doch das vacuum zu verwenden :face_with_rolling_eyes:

  • status-anzeige ist für mich auch nicht so wichtig, das laden von daten ist wichtiger :winking_face:
    wenn mann sieht das geladen wird ist es ja OK
    daher, kein problem das es so bleibt


    ich muss mir mal wieder einen spinner einstellen damit ich testen kann ob die noch kommen oder nicht (hab immer spinner-bilder gelöscht)


    und mal sehen ob das automatische laden heute nacht noch läuft

  • Ich sehe das eigentlich ähnlich, ich habe das Plugin nicht umsonst unter GPL gestellt in der Hoffnung das jemand dem das CrossEPG so wie mir zu kompliziert war die ganzen noch nötigen Kleinigkeiten einbaut, für mich ist das Plugin eigentlich nur ein überschaubares Testbed für die epgdb.py - und die aktuelle verwendet jetzt eben die load/save_finished events, wenn das stabil läuft kommt es auch ins EPGImport und dann bin ich damit so ziemlich fertig denke ich mal ...

    Einmal editiert, zuletzt von Lost in Translation ()

  • Tut mir leid. gerade im Fall des EPGs sehe ich das NICHT so, weil ich bin so ziemlich die vorletztbeste Wahl daran zu schrauben ... aber wenn es sonst keiner macht ... was Euch zu denken geben sollte.