erweiterte Funktionen im PermanentTimeshift-Plugin

  • Kommando zurück :winking_face:


    Hatte im TimeshiftState-Screen noch eine überflüssige Zeile drin.
    Nun startet das Plugin durch :thumbs_up:


    Jetzt muss ich natürlich nochmal alle Punkte durchgehen und testen, ob die Kopplung mit der nomalen Infobar jetzt erhalten bleibt :winking_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Da sind ja gleich zwei Fehler oben. Warum übergibst du den Namen des Screens? Kannst du da nicht einfach PVRState nehmen? Jedenfalls scheint der schon mal None zu sein. Ich weiss jetzt grad auch nicht, ob screen als Variablennamen nicht Probleme machen könnte. Nenn die sonst mal screenName oder so.


    Edit: da hat sich was überschnitten

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Das ganze scheint jetzt zu funktionieren :winking_face:


    Wenn ich allerdings die interne PTS-InfoBar aktiviere (im Setup) und später wieder deaktiviere, wird der TimeshiftScreen wieder mit instantiateDialog neu gesetzt und dann hab ich wieder das gleiche Problem mit der Entkopplung. :winking_face:
    Aber ok, so oft wechselt man die InfoBar ja nicht und nach einem Neustart, passt es ja wieder.
    Und wer sollte diese interne PTS Infobar jetzt noch nutzen, wenn die neue Standard PTS Infobar besser ist :winking_face:


    Vielleicht entferne ich die Option im Setup ganz, dann hat man gar keine Probleme.


    Beim GUI-Neustart kommt aber noch folgender Fehler:

    Wüsste jetzt nicht, was man da irgendwo noch setzen muss ???

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Meine Verwmutung wäre, dass versucht wird, den bereits gelöschten Screen zu schliessen

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • In der originalen Class InfoBarPVRState gibt es ja noch diese Zeile:
    self.onClose.append(self.__delPvrState)



    Wenn wir nun diese Class intern neu aufrufen, wird der pvrStateDialog ja schon beim Schließen vom PTS gelöscht.
    Dann versucht wohl die originale Class nochmal diesen Dialog zu löschen, was dann nicht klappt.


    Kann man diese originale Instance des InfoBarPVRState bzw. des originalen InfoBarTimeshiftState löschen.
    Bzw. nach dem neuen InfoBarTimeshifState.__init__ in der PTS-Infobar dieses self.onClose.append(self.__delPvrState) für die originale Class löschen/zurücksetzen?

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Kannst ja abfragen:

    Python
    if self.pvrStateDialog is not None:
        self.session.deleteDialog(self.pvrStateDialog)
        self.pvrStateDialog = None

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Du meinst in der PTS InfoBar Class bevor ich InfoBarTimeshiftState.__init__(self, self) aufrufe ??
    Das klappt irgendwie nicht. Da kann ich keine Taste mehr drücken. Die InfoBar scheint irgendwie blockiert.
    Da kommt immer das Symbol für eine unzulässige Taste



    Python
    class InfoBar(InfoBarOrg, InfoBarTimeshiftState):
    	def __init__(self, session):
    		print "=== pts InfoBar__init__"
    		InfoBarOrg.__init__(self, session)
    		InfoBarOrg.instance = self
    		if self.pvrStateDialog is not None:
    			self.session.deleteDialog(self.pvrStateDialog)
    			self.pvrStateDialog = None
    		InfoBarTimeshiftState.__init__(self, self)

    Ginge es, den delete-Befehl von self.onClose.append(self.__delPvrState) wieder zu entfernen?
    self.pvrStateDialog.onClose.remove(self.pvrStateDialog.__delPvrState)


    Mit der Zeile geht es jedenfalls nicht :winking_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • es knallt ja nicht in der __delPvrState im PTS-Code, sondern in der InfoBarGenerics.
    Aber da kann ich ja schlecht den Code ändern :winking_face:


    Hab jetzt einfach mal die Zeile self.onClose.append(self.__delPvrState) in der InfoBarPVRState Class im PTS deaktiviert.
    Dann passt es. Dann wird der Dialog wohl sauber über die InfoBarGenerics gelöscht :winking_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • @dre
    Danke nochmal für den Denkanstoß zum InfoBarTimeshiftState im class InfoBar(InfoBarOrg, InfoBarTimeshiftState): :thumbs_up:


    Nach zig Tests mit allen möglichen Varianten sieht man irgendwann den Wald vor lauter Bäumen nicht.
    Ich war der Meinung, dass ich auch diese Variante schon mehrfach probiert hatte.
    Aber wer weiß, was da an anderer Stelle nicht gestimmt hat :winking_face:


    Ich denke, so ist die Lösung etwas sauberer, als wen man das Ein-/Ausblenden im Code händisch nachkorrigieren muss :winking_face:
    Konnte somit schon einige Code-Passagen wieder entfernen :winking_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Frage an alle:


    Man sieht ja jetzt in der neuen PTS-InfoBar und im Display die echte Restlaufzeit inklusive des Live-TV-Fortschritts (gelb) während des Timeshiftens (blau).
    Es gibt da nur einen optischen Bruch bei der Sendungslänge, wenn man Timeshift startet, aber nicht seit Sendungsbeginn im Hintergrund vom PTS aufgezeichnet wurde (z.B. bei Senderwechsel und die Sendung lief schon 30min).


    Sollte man hier evtl. den Fortschrittsbalken um eine 3. Farbe ergänzen (z.B. rot, man könnte es aber auch mit gelb machen), so dass am Anfang der vergangene Sendungsteil - den man per Timeshift nicht aufgenommen hat - zusätzlich angezeigt wird ?


    Dann würde es beim Wechsel vom Live-TV zum Timeshift keinen optischen Bruch des Sendungsfortschrittbalkens im Display geben :winking_face:
    Und man würde sehen, welcher Anteil vom Anfang nicht im Timeshift enthalten ist.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Ich bin schon ein Stück weitergekommen :winking_face:


    Jetzt wird die komplette Sendung als PTS Zeitbalken angezeigt - inklusive der bereits vergangenen Sendungszeit vor dem Aufzeichnen durch das PTS (z.B. wenn man den Sender wechselt und die Sendung bereits 30min lief).
    Der nicht durch das PTS erfasste Bereich wird jetzt in "grau" dargestellt.
    "blau" ist der im PTS bereits abgespielte Zeitraum
    "gelb" ist der Sendungsfortschritt der weiterlaufenden Live-Sendung, den man im PTS bereits abspielen kann


    Dadurch gibt es jetzt auch keinen Sprung des Zeitbalkens im Display mehr, wenn man vom Live-TV in den PTS Timeshiftmodus wechselt.
    (da ändern sich ggf. nur die Farben des Balkens, die Länge sollte identisch sein)


    Jetzt ist hoffentlich nur noch etwas Feintuning und Testen angesagt.



    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • So, dann hier noch die neue Version 1.5e :winking_face:


    Änderungen in 1.5e:

    • neu: die PTS Infobar zeigt jetzt einen echten Zeitbalken an (inkl. Zeit vor dem PTS, abgespielter PTS-Bereich, fortgeschrittener Live-Bereich und Zukunft)
    • fix: manchmal gab es einen Crash wenn man in der Filmliste ein Video abgespielt hat und dann zum Live-TV zurückkehrte
    • fix: ignoriere die Keys "2", "5", "8", "0", "<" und ">" während des Timeshiftens (bisher wurde dann ein Kanalwechsel gestartet)
    • fix: Optimierung der PTS InfoBar im Zusammenspiel mit der normalen InfoBar (insbesondere beim Ein-/Ausblenden)
    • fix: bei STOP-Taste wird die PTS-InfoBar jetzt für 1 Sekunde mit dem STOP-Status als bessere optische Rückmeldung eingeblendet

    Info:Die Files aus der zip gelten dabei als Ergänzung zum bereits installierten PTS 1.5Die neuen Plugin-Files sowie die neue Source und die drei neuen Converter aus der zip müssen dabei ebenfalls auf die Box kopiert werden.
    Der Ausgangspfad auf der Box befindet dafür auf "/usr/lib/enigma2/python".
    (die neue Ordnerstruktur in der zip ist dabei dann selbsterklärend)
    Nach dem Kopieren der Files muss nur noch ein GUI-Neustart erfolgen.

  • Ich hab da noch ne Verständnisfrage.


    Die neuen Screens (TimeshiftStateScreen und/oder DisplayScreen) greifen ständig über die Converter auf die Funktionen für get...Position() und getLength() zu, also auch, wenn die Screens gar nicht sichtbar sind (also wenn sie mit .hide() ausgeblendet sind).


    Ist das richtig so?
    Hab jetzt noch gar nicht geprüft, ob die normale InfoBar das auch so macht.


    Muss man da noch irgendwas deaktivieren, damit ein ausgeblendeter Screen nicht ständig die Daten über den/die Converter abfragt?


    Da das jetzt keine komplexen Funktionen sind, sollte das die Box jetzt nicht wirklich unnötig belasten, aber interessant wäre es doch schon mal :winking_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Oh, Danke. Könntest du mir da mal etwas auf die Sprünge helfen?
    Das sagt mir gar nichts. Hab auch nichts derartiges finden können.


    self.pvrStateDialog.disconnect() klappt leider nicht.
    "Attribute disconnect nicht vorhanden"


    Hast du dazu irgendeinen Link oder ein Beispiel, wo man sieht, wo das hingehört?

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Ich hab jetzt herausgefunden, dass das mit dem ständigen Abfragen der Converter nur nach dem GUI-Neustart passiert. Da ist ja nur der normale TV-Modus und der Timeshiftstate-Screen ist ausgeblendet, dennoch fragen die Converter aus diesem ständig ab.
    Sobald ich aber das aktive Timeshift starte und dann wieder stoppe, hört das ständige Abfragen der Converter sofort auf :thinking_face:


    Hab da jetzt keine spezielle Funktion gefunden, die das dann wirklich stoppt.
    Hatte nach dem InfoBarTimeshiftState__init__ direkt mal ein self.pvrStateDialog.hide() ausgeführt, das hat leider auch nicht geholfen.


    Wenn ich aber direkt nach dem InfoBarTimeshiftState.__init__ erst ein self.pvrStateDialog.show() und dann direkt ein self.pvrStateDialog.hide() mache, dann gibt es auch direkt nach dem GUI-Neustart kein ständiges Abfragen der Converter mehr :winking_face:


    Komische Sache.
    Fehlt da evtl. was im Code beim Initialisieren des TimeshiftState-Screens?
    erweiterte Funktionen im PermanentTimeshift-Plugin

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    Einmal editiert, zuletzt von Sven H ()