Beiträge von Dr.Best

    Ihr habt das unter Kontrolle, dass es Leute gibt, die diesen Skin nicht verwenden, aber aufgrund dessen, was hier genau wegen diesem Skin gemacht hat, sich nun das Erscheinungsbild für die ändern?


    Also beispielsweise Kanalnummer mit Punkt direkt vor Kanalname...ich will das so definitiv nicht haben mit dem Skin meiner Wahl, aber es wird mir durch die individuelle Änderungen für einen Skin aufgedrängt, weil das dort (zweifelsohne) ganz gut aussieht.
    Versteht ihr, was ich meine? :smiling_face:

    @Sven H
    @Dr.Best meinte nicht weitere Einstellungen ins Menü bauen, vor allem nicht Code verbasteln der von Merlin stammt. :winking_face:


    Ach was, der Code ist ja bei DMM. Also was da gemacht wird in Zukunft ist mir egal, ansonsten würde ich ja so was nicht weitergeben. :smiling_face: Ghost beispielsweise hatte da ja auch noch mal einiges optimiert, indem er teilweise Sachen zurück nach c++ portiert hatte.


    Ich wollte Dir bestimmt auch nicht den Spass verderben, Sven. :smiling_face: Ich will Dich doch nur darauf hinweisen, dass nicht alles gut ist, nur weils funktioniert (und ich meine mit "gut" nicht deinen Source, sondern die Anwendbarkeit).
    Bevor Du da noch weitere Änderungen machen solltest, würde ich das an Deiner Stelle mit DMM absprechen. :winking_face:


    Manchmal glaubt man nämlich ganz tolle Ideen zu haben und man investiert Zeit, bis jemand dann zu einem sagt: "hm...das brauchen (oder wollen) wir (so) nicht" :grinning_face_with_smiling_eyes:


    Wir haben ein eigenes Image mit Merlin, wir können uns austoben mit allen Sachen, die bei uns im Kopf zu rumschwirren. :grinning_squinting_face: Aber deswegen klatscht DMM nicht immer in die Hände und fände das toll zu haben... :winking_face: (auch wenn schon viele, viele Ideen und Umsetzungen von uns den Weg ins offizielle Image gefunden haben. :winking_face: )


    Also noch mal: kläre solche Sachen am besten mit DMM ab und erzähle denen was Du vor hast und frag, ob die das so überhaupt übernehmen wollen... so würde ich das zumindest machen, wenn ich kein eigenes Image hätte, in dem ich Sachen releasen könnte.

    Also ich hab damals ja die Servicelist von aus dem enigma2-core (c++) nach Python gebaut, damit die Servicelist flexibler und einfacher anzupassen ist, so wie das nun Sven auf die Schnelle gemacht hat (vorher wäre das gar nicht möglich gewesen).
    Die Frage ist halt, ob man, wenn man noch mehr Möglichkeiten verwurschteln will, oder nicht noch einen Schritt weitergeht und ggf. das ggf. alles als Skin-Templates baut mit verschiedenen Modi, analog so wie das mit der Movielist passiert ist (Freiwillige vor(!), das ist alles über Python zu schaffen! :smiling_face: )


    Ich kann arki's Meinung nachvollziehen: sven, nur weil was auf "die Schnelle geht" muss es nicht zwangsläufig eine gute Lösung sein. :smiling_face:


    Ansonsten würde ich hier einfach mal abwarten, was DMM dazu meint.

    Sven: poste mal bitte noch die reinen Diff-Files, so ist ein Code-Review wesentlich einfacher, auch wenn das vermutlich bei Dir nur ein paar kleinere Zeilen sind.


    Allgemein könnt ihr im Merlin Image nicht einfach Python-Dateien austauschen, da wir einiges in unserem Image erweitert und verändert haben. Das ist dann klar, dass es zu einem Crash kommen kann.


    Übrigens, alles was im DMM Image landet ist natürlich auch bei uns auch im Image drin.

    Ich glaube Du begreifst nicht, was ich geschrieben habe. Lese Dir das noch mal aufmerksam durch.


    Beispiel:
    Dein Renderer holt sich (beipielsweise über eine Source) einen oder mehrere Texte.
    Du kannst die Size des Renderers (das entscheidet der Skinner!) ermitteln im Code, und berechnest, ob der Text in diesen Renderer reinpasst. Wenn ja, berechne, ob auch der zweite Text mit reinpasst oder sowas...
    wenn nein, mache irgendwas, damit das so aussieht wie Du magst.
    wenn ja, mache irgendwas anderes...


    Also ein Renderer ist ja nur ein Objekt, welches Du im Skin dann definieren kannst. In diesem Objekt kannst Du andere Objekte dynamisch aufbauen, wenn Du sowas implementierst.
    Das "kleiner Malen" ist dann, dass Du in dem Renderer beispielsweise in ein eLabel malst (so habe ich damals den Running-Text Renderer umgeschrieben, der war ja in seiner ursprünglichen Form gar nicht zu gebrauchen).

    Ein Renderer ist kein Plugin.
    Also ein Plugin sagt dem Renderer gar nichts. Dafür gibt es Converter/Sources.


    Wohin was wie wo hingemalt wird musst Du schon selber im Render entscheiden.
    Du willst es doch dynamisch haben ;), also musst Du das selber entscheiden und dafür was im Renderer programmieren.

    Wo genau beobachtest Du das denn, dass der Wert nicht stimmt?


    habe beobachtet, dass bei getPlayPosition ab und zu und intermittierend beim abspielen einer ts-aufnahme vom anfang an ein wert zurueckgegeben wird, der mitten im film liegt.
    nach ner kurzen zeit wird dann der richtige wert zurueckgegeben.
    ist das bekannt und gibt es dafuer einen workaround?
    danke.

    Code
    self.session.nav.playService(self.service)
    
    
    seek = self.getSeek()
    
    
    pos = seek.getPlayPosition()


    Dein Codebeispiel ist auf jeden Fall so, wie Du das hier gemacht hast, nicht in der Praxis anwendbar.


    Nur weil Du ein playService angestoßen hast, wird dieser nicht "sofort" abgespielt. Dafür gibt es Events, die Dich benachrichtigen, dass der Service auch wirklich abgespielt wird. Erst dann macht es Sinn, die Play-Position abzufragen.


    getPlayPosition gibt 2 Werte zurück, wie Du richtig erkannt hast, nämlich -1 (die Position ist nicht ermittelbar) oder 0 in der ersten Dimension, ggf. die Playposition, wenn Dim1 == 0 ist.
    Somit ist der Code an der Stelle, welcher Sven gepostet hat, richtig.



    Code
    if pos[0]:
      return 0
    return pos[1]


    Dieser Fall tritt ein, wenn -1 zurückgegeben wird, sprich die If-Anweisung zieht. In diesem Fall kann Enigma2 noch nicht die Position bestimmen (vielleicht wird das Video zu diesem Zeitpunkt noch nicht abgespielt), es wird also Playposition = 0 gesetzt in dem Code.


    Wenn die If-Anweisung nicht zieht ( also pos[0] == 0 ist :winking_face: ), dann wird die PlayPositon in pos[1] zurückgegeben.



    Es ist also alles in Ordnung, was Enigma2 da macht. Ich kann da keinen Bug erkennen.

    Also eigentlich ist es ganz einfach: es geht was Du willst, Du musst das nur selber implementieren. :winking_face:


    Es ist ganz einfach: Du erstellst Dir Deinen eigenen Renderer, welchen Du eine Position und eine Größe im Skin zuordnest. Diese Angaben solltest Du als Maximal-Werte verstehen, diese sind nicht dynamisch.
    Innerhalb dieses Widgets zeichnest Du, bezogen auf die Pos/Size, an die entsprechenden Stellen Deine Sachen, dort wo Du nichts zeichnest setzt Du beispielsweise einen transparenten Hintergrund. Und fertig wäre die "dynamische" Größe. Wohin Du innerhalb dieses Widgets malen willst musst Du natürlich dynamisch errechnen, auch das geht mit Enigma2 Befehlen, wenn Du beispielsweise Text ausgeben willst, denn Du kannst errechnen lassen, wie viel Pixel ein Text in Höhe/Breite einnimmt.


    Happy Coding! :smiling_face:

    Ich hab das auch manchmal bei Entwickeln, wenn ich Enigma2 neu starte.
    Allerdings reicht es bei mir einen kompletten Boxenneustart einzuleiten, so dass das Problem nicht mehr auftritt.
    Die Settings musste ich nicht neu einspielen.
    Ich war bisher zu faul da nach einem Fehler zu suchen. :grinning_squinting_face: Könnte ich mal machen, denn ich kann den Fehler reproduzieren :winking_face: , was ja die halbe Miete ist. :smiling_face:

    Die Frage verstehe ich nicht.
    Ohne Meta mit einer Servicereference werden die Sender nicht in der Movielilste angezeigt.
    Wenn Du diese Info in ein anderes File speichern willst (warum auch immer) musst Du Dir das im Python-Code bei Enigma2 an verschiedenen Stellen anpassen.

    wie funktioniert eigentlich dieses neue feature:


    Man kann zu jeder Video-Datei (beispielsweise TS, MKV, MP4 etc) nun eine txt-Datei anlegen, so dass die Daten daraus für das EventView genommen werden. :winking_face:
    D.h. du kannst beispielsweise für eine TS Aufnahme eine txt-Datei anlegen mit eigenen Daten (z.b. von tmdb / tvdb)...
    Auch für mkv/avi/mp4 etc., bei denen bisher gar keine EventView-Daten vorhanden waren (es sei denn, man hat mit einem eit-Editor sich eine eit-Datei erstellt) kann man nun schnell und einfach sich EventView Daten erstellen.


    Bei uns im Merlin-Image verwenden wir dafür unser Plugin EMIL, welches automatisch für ein Video eine txt-Datei mit TDMB-Daten erstellt, man kann das aber auch per TextEditor machen :winking_face: