Frage zur neuen EPG- Datenbank

  • Danke, ich werde versuchen bis zum Wochenende alles einzuarbeiten.

  • also ich habe die Sachen von Ghost so gut ich konnte eingebaut, die demux Erkennung beim streamen funktioniert jetzt so halbwegs und es wird jetzt auch nur mehr auf der 820 als single tuner box das Live TV gestoppt, aber das mit der globalen Klasse damit die _conn Handler nicht verloren gehen funktioniert in der Version 1.1 vom OpenEPG immer noch NICHT so wie es eigentlich sollte.


    Erstens kann man nicht so einfach nach is None: in der __init__ der class selbst abfragen, weil solange man die __Init__ nicht verlässt bleibt der class pointer noch None, womit man eine Endlosschleife bekommt weil sich die routine rekursiev immer wieder selbst aufruft, weil der globale Parameter None bleibt obwohl man schon in der class ist selbst wenn man den globalen pointer bereits gleich dem Aufruf der class gesetzt hat.


    Das kann man zwar umgehen indem man sich eine globale *_undefined Variable macht die man wenn man sie von bei ersten Betreten True auf False setzt benutzen kann um die classe wirklich nur einmal auf den Globalen class pointer deuten zu lassen, ABER dann sterben die _conn handler trotzdem und jetzt manchmal sogar wenn man innerhalb des Plugins ist (weil auch das jetzt die classe aufruft und diese rasch wieder zurückkommt wenn nur mehr die container im hintergrund werken und die finshed handler die nächsten tasks erledigen sollen , vorher war das z.B. nur im Extensions Menu auf Blau. Insofern funktioniert es jetzt manchmal sogar schlechter also vorher - trotz den Verbesserungsvorschlägen.


    Scheinbar bin ich zu blöde dafür :loudly_crying_face:


    LG
    gutemine

    4 Mal editiert, zuletzt von Lost in Translation ()

  • das Initialisieren habe ich je eh gelösr mir der Hilfsvariable, es gehen darum das trotzdem die _conn rountinen sterben und damit bricht die Verabreitungskette.


    Ich denke das man da auch noch ein staticmethod@ oder ähnliches brauchen würde, aber ich habe gestern 3h rumprobiert und fragen kostet nichts.


    Und das Plugin ist bei OoZooN zum runzerladen, Ihr könnt gerne mithelfen ... Wie gesagt das mit dem demux geht ja jetzt, sogar so das ich erst wenn der mit -1 zurückkommt den Live ender stoppe, womit es auf der 7080 mit mehreren Tunern komplett im Hintergrund laufen kann so wie ich immer wollte. Nur bringt das wenig wenn dann der 2. Container nicht mehr aufgerufen wird weil die class dann bereits verlassen wurde und der _conn Händer dann nicht mehr bekannt ist - globale Klasse oder nicht :face_with_rolling_eyes:

  • 1.1 installiert


    aus dem plugin konnte ich EPG laden, lief schön im hintergrund miet "streaming aufnahme"



    hab ich das richtig verstanden: das problem ist jetzt wenn kein tuner frei ist und der laufender kanal gestopt wird zum einlesen?

  • nein das ist eigentlich kein Problem mehr, selbst wenn der letzte (oder bei 820 einzige) SAT Tuner zum TV gucken verwendet wird sollte es jetzt funktionieren - dann returned der stream das kein demux verwendet wurde und NUR dann stoppt das Plugin das live TV kurz und borgt sich sozusagen diesen Tuner für das Laden.


    In allen anderen Fällen wenn genug SAT Tuner da sind (selbst wenn schon demuxe für PIP oder ähnliches benutzet werden) sollte jetzt das Loaden vom Transpondern im Hintergrund funktionieren ohne das LiveTV zu stören weil das enigma2 dem Plugin jetzt richtig sagt welchen Demux es für das streamen verwnedet - hat Ghost schön gefixed.


    Du solltest also jetzt theoretisch endlich weiter DVB-T sehen können während mit SAT als Streaming Aufnahme im Hintergrund geladen wird.


    NUR bricht eben die weitere Verarbeitung noch immer ab wenn man nicht im Plugin ist, weil die finished routinen der container die connected wurden verloren gehen womit eben wenn du auf Blau über das Extensions menu download machst das Laden nicht feritg kriegst sobald irgendwas gemacht wird - womit das immer noch nicht stabil funktioniert.

  • OK, danke für die erklärung
    d.h. also auch das ein automatisches laden noch nicht richtig funktioniert?



    hab noch paar tests gemacht,
    also das "tuner-handling" funktioniert, wenn freier vorhanden wirde der verwendet, wenn alles belget wird der aktiver kanal kurz gestopt

  • Danke fürs Ausprobieren - der Teil mit dem Tunerhandling funktioniert jetzt so wie ich das haben wollte, ich habe Ghost dafür nicht umsonst gelobt :smiling_face_with_sunglasses:


    Weil das war einer der Pferdefüße im CrossEPG das der demux hardcoded ist und es damit sobald du Aufnahmen laufen hast, etc. nicht mehr funktioniert.


    Ich sagte nicht umsonst ich kopier mir lieber nur was ich brauche in ein eigenes OpenEPG Plugin statt das alles im CrossEPG zu fixen, schon weil ich den XMLTV Teil ja nicht brauche, sondern das besser mit dem XMLTV Plugin erledige - CrossEPG ist ja nur so populär auch fürs XMLTV geworden, weil das XMLTV Plugin selber nie wirklich für die OE2.0 Images angepasst wurde womit CrossEPG halt die einzige Wahl war ...

  • vorteil war ja das alles von 1 plugin gehandelt wurde, xml und OpenTV - ist halt einfacher ein zu richten


    aber ich sehe auch Vorteile das alles getrennt zu haben :winking_face:


    und mal sehen ob du noch ein tipp bekommst wegen die connects

  • Ich habe nur eingebaut was vorgeschlagen wurde so wie ich das verstanden habe, kann sein das ich es falsch umgesetzt habe, aber die Sache mit dem das man zwar in der __init__ die class global machen kann aber besser nicht gleich darauf abfragt deutet drauf hin das Ghost das auch noch nie in der Art verwendet hat, womit wir halt weiter probieren müssen ...


    Und Container Finished routinen die wenn das gestartete Binary fertig war trotzdem nie aufgerufen werden hatten wir auch schon zu OE2.0 Zeiten, nicht umsonst habe ich die im dFlash eliminiert weil mir das zu Blöde geworden ist.


    Ich könnte das selbe hier machen, aber langsam wird es Zeit das ich verstehe warum das so ist und wie es richtig sein sollte, also warten wir mal ...


    Zur Not kann ich immer noch die def für die routinen ausserhalb einer class machen ... aber das ist dann Holzhammer ...


    Und du darfst auch eines nicht vergessen - es steht den Machern beider Plugins frei die nötigen Anpassungen in Ihre Plugins zu übernehmen, die epgdb.py die beide Plugins für das Laden in die epg.db im DreamOS verwenden unterliegt der GPL, sonst hätte ich sie nicht ins xmltv rein machen können, also könnten sie sich problemlos bedienen. Allerdings sagte ich bereits mehrmals das es nicht sehr wahrscheinlich ist dass dies passiert ...


    PS: Und ich oder jemand anders könnte auch problemlos die OpenEPG Sachen fürs Cross EPG ins XMLTV implantieren, beträchtliche Teile des Codes sind sowieso von dort, und nachdem es jetzt eine eigenen LoadOpenEPG class gibt wäre das sogar noch simpler. Insofern liegt das mit den 2 Plugins eigentlich NICHT an mir, aber ich habe nicht vor eine All-in-one EPG Lösung zu stricken, ich bin hier sozusagen nur der Praktikant der aushilft.


    EDIT: Und mein TV geht durch das HDMI-CEC immer noch an wenn ich aus dem Standby komme um zu laden, trotz sofortigem Idle Mode

    6 Mal editiert, zuletzt von Lost in Translation ()

  • theoretisch kann ich schon alles mit __ zupflastern oder mit dem Beispiel mein eigenes Threading basteln (das CrossEPG schickt sogar befehle in den gestartenen Thread für die binaries um ihnen zu sagen was die tun sollen - aber nicht umsonst ist es im DreamOS so nicht einfach zum Laufen zu kriegen), aber das kann doch nicht der Sinn der Sache sein um die Endroutinen wenn ein container fertig ist in jedem Fall aufgerufen zu bekommen sich so behelfen zu müssen :loudly_crying_face:


    Mal abgesehen davon das ich das SimpleThreading Beispiel kaum verstehe ...


    Wir wollen ja nur das Laden komplett im Hitergrund machen, wenn ich das Problem vermeiden will brauche ich nur der Load class einen skin spendieren und sie statt direkt mit session.open(...) aufrufen und schon überleben die Handler - weil die class eben bis zu einem self.close() nicht verlasen wird. NUR ist dann halt auch kein Zappen, etc. bis es fiertig ist, weil ich eben im Vordergrund lade.


    Nur genau das hätte ich gerne so, nämlich das man auf Blau im Extensions menu oder Zeigesteuert das laden auf der 7080 komplett im Hintergrund machen kann und selbst auf der 820 nur für die 30-40 Sekunden das Bild verliert wo es die EPG Daten vom Transponder ladet. Ausserhalb der Zeit obwohl noch minutenlang weiter die epg.db befüllt wird sollte die Box ganz normal zum TV gucken benutzbar sein. Das wäre dann einem DreamOS würdig :face_with_rolling_eyes:

    4 Mal editiert, zuletzt von Lost in Translation ()

  • Ich denke ich habe jetzt einen Weg gefunden wie man das halbwegs ohne Kopfstände lösen kann.


    Wenn man alle methoden der Load class mit @classmethod dekoriert kann man sie 'normal' verwenden (bei @staticmethod würde die class nicht mehr übergeben) und gleichzeitig überleben sie das Verlassen der Klasse - auch OHNE diese selbst global zu machen.


    Ich muss das noch ein bisschen testen und dann gibt es neuen kit - NUR hat mich das jetzt 3h Zeit gekostet alle Varianten durchzuprobieren bis ich eine hatte die eben ohne Kopfstände und grosse Codeanpassungen funktioniert :pinch:


    EDIT: die r2 ist jetzt bei OoZooN hochgeladen


    LG
    gutemine

    2 Mal editiert, zuletzt von Lost in Translation ()

  • Irgendwas ist da aber noch faul beim Tunerhandling. Seitdem wirklich im Hintergrund gestreamed wird um den EPG zu laden habe ich das selbe Problem wie bschaar wenn er vor dem starten des EPG Loadens für UK einen DVB-T sender schaut - das streamen failed. Ich habe zwar keinen DVB-T Tiuner in der box, aber schaue ich vor den laden mit recording einen Hotbird sender (Fashion TV HD ist da ideal, weil dort kein EPG gesendet wird) dann failed das laden des EPG weil das tunen failed. Schalte ich vorher auf einen Sender auf 28.8 so funktioniert es wunderbar.


    Mit Zappen geht es auch problemlos .... ist das ein BUG im Tunerhandling oder warum passiert das - das streaming muss doch genauso wie eine echte Aufnahme sich den Tuner holen können und das richtige DiseqC senden ?


    Ich könnte zwar als workaround einbauen das ich den sender kurz anzappe, dann auch noch den stream starte und wieder zurück auf den vorherigen Sender zappe - aber das ich doch wohl nicht der Sinn einer Box mit 4 Tuner ?


    PS: Ich kann dazu gerne mal ein log machen ...


    LG
    gutemine

  • Anbei das Log dazu - das Streaming funktioniert zwar wenn man auf einem 28.4 sender ist (bei mir im Log war es zuerst der Versuch mit Fashion TV HD der schiefgehr und dann mit True Movie der klappt) aber es sieht so aus wie wenn das der einzige Tuner wäre, weil der TV sender wird durch das Streaming gestopped.


    Kann das sein das da was durcheinander gekommen ist für den neuen rtsp Streamserver daemon ??? Und nein den habe ich derzeit noch nichtmal installiert.


    Und ja ich habe 4 SAT Tuner und alle gleich wie A1 eingestellt mit 4 SAT Kabeln vom Multischalter.


    Beim Entwicklen auf der 820 habe ich das ja nicht gemerkt, weil immer der LiveTV gestopped wird um mit dem einen Tuner streamen zu können :face_with_rolling_eyes:

    • Offizieller Beitrag

    Hi,


    ich verstehe nicht was du da tust.


    Laut Log wird da zu komplett unterschiedlichen Transpondern auf 28.2 bzw.. 28.4 getuned...


    immer wenn es nicht geht tunest du zu 11307000 Pol 1 SR 27500000 ... und immer wenn es geht ist es 11778000 Pol 1 SR 27500000


    Also einmal ist es low band .. einmal ein transponder im high band.. und laut DiSEqC ist das am switch der AA Port für 28.2/28.4?


    Also ich versteh nicht was du da tust :winking_face:


    cu

  • Ich weis nicht was da los war/ist - jetzt habe ich den Streamverver nachinstalliert und rebootet und jetzt geht es auf der 7080 wieder wie es eigentlich sollte, sprich ich kann ernn ich mit der r2 im Aufzeichnungsmodus über das Extensions Menu auf Blau den Download starte sofort weiterzappen und es wird im Hintergrund geladen ohne Tuning Fehler.


    Selbst bei laufendem PIP wenn schon 2 Tuner benutzt sind funktioniert es jetzt.


    Einfach Schlechtes Karma ?


    Und es wurde im Log in beiden Fällen genau die gleiche serviceref für den stream übergeben, der einzige Unterschied war das vorher schon 28.4 bzw. 28.2 lief wenn es geht und wenn es nicht ging war es hotbird.


    Aber aus irgend einem Grund hat er scheinbar keinen Tuner mehr gehabt - kann es sein das wenn man mehrmals den selben Tuner streamed und dann niur 1x stoppt das der trotzdem weiter als belegt genommen wird ?


    Wobei rebootet hatte ich schon vorher ...


    Und ja 28 Ost ist bei mir am DiseqC A, weil ich hatte mal eine Sky UK box da drann und die konnte kein DiseqC.


    Aber ich denke ich weis jetzt was da passiert ist: Auf der 820 lasse ich den code bewusst erstmal streamen probieren und dann wird wenn das failed der laiufende sender gestopped und nochmals versucht zu streamen.


    Auf der 7080 fällt er weil ja genug Tuner da sind gar nicht in den codepfad wo nochmals stream gestopped wird und neu gestartet weil ja kein laufender sender gestopped wird.


    Es kann jetzt aber sein das durch das nicht tunen der stream sozusagen ungetuned weiterlief und durch das immer wieder neu probieren dann das enigma2 durcheinaner kommt.


    Ich denke ich werde eine streaming.stop() auch in die fehlerpfade machen um sicher zu gehen das es nicht passieren kann das es sich so aufschaukelt dass es dann gar nicht mehr geht.


    Wahrscheinlich habe ich das durch die statischen methoden selber verursacht, weil sich bevor ich das hatte die variable zum streamservice sozusagen selber aufgeräumt hat wenn man die classe verliess.

    3 Mal editiert, zuletzt von Lost in Translation ()