Zappen innerhalb eines Plugins - Need Help

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Zappen innerhalb eines Plugins - Need Help

      EDIT 04.06.2017

      Ich fange noch mal von vorne an, mit meiner Frage... Anbei ein laufendes Plugin, und ein Screenshot, in dem alles erklärt wird.

      Anmerkung:
      Ich habe mal ein "reload" eingebaut, damit man nicht nach jeder Änderung enigma2 neu starten muss, sondern lediglich das Plugin neu.


      Kann jemand helfen? Ich kriegs net hin....
      Bilder
      • screenshot.png

        38,34 kB, 1.280×720, 291 mal angesehen
      Dateien
      "Wenn das die Lösung ist, will ich mein Problem wieder zurück"
      Gesendet mit Fernsprecher

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von chroma_key ()

    • Das wird sich IMHO nicht fixen lassen (zumindest nicht so wie du das gerade machst) du zappst ja einfach mit playService, für E2 selbst steht er immer noch auf dem Kanal der zuletzt von E2 auch angezappt wurde. Und genau von dort springt er auch wieder weiter wenn du später nach dem Verlassen des Plugins wieder "normal" weiterzappst. Das ist das selbe wie wenn du per WebInterface einfach umschaltest, das weiß E2 später auch nicht mehr.
      Du müsstest da schon die Originalroutinen kapern (erben) und verwenden.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von dhwz ()

    • Oha dhwz ;)

      Danke fürs Feedback. Das ist exakt, was ich mir auch gedacht hatte (ich denke die ganze Zeit, ich bin einfach zu doof dafür): Man kommt irgendwie von "außen nicht ran". Natürlich gibt es irgendwo eine Stelle in den E2-Sourcen zum speichern des "Service-Fokus", aber es gibt eben keine API, oder irgendeinen dokumentierten Übergabe-Parameter, ohne gleich fast das halbe E2 it-self im Plugin zu importieren. Ich vermute, am Ende ist es dann wahrscheinlich doch nur ein Dreizeiler. Aber es scheint irgendwie im Verborgenen. zB. die Sourcen, die mit "e" vorne beginnen, wie "eServiceCenter". Wie gerne würde ich mal wissen, was zB das eServiceCenter so alles ausspucken kann... keine Infos im Internet zu finden, bzw. man verrennt sich da extrem. So weit ich weiß ist der Kern von E2 weiterhin in C++ (und intern eigentlich noch ein E1), nun closed, und wird von Python nur "angezapft".

      Schade. Wäre sicherlich ein nettes Zusatzfeature für viele Plugins. Aber mal schaun. Vielleicht hat ja noch einer einen coolen Tipp.
      "Wenn das die Lösung ist, will ich mein Problem wieder zurück"
      Gesendet mit Fernsprecher

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von chroma_key ()

    • Nein, der Core ist nicht e1 sondern was ganz anderes. Enigma.py solltest du dir mal anschauen. Die header sind auch im oe drin.
      Gruss
      Dre

      Boxen: diverse
      Developer Project Merlin
    • Zappen innerhalb eines Plugins - Need Help

      Ok mag sein, aber erklär mir mal woher e2 wissen soll in welchem Bouquet du dich befindest, eine Ref kann ja in mehr als einem Bouquet auftauchen. ;)
      Oder noch besser man zappt eine Ref an die in keinem Bouquet vorhanden ist.

      PS: Openwebif ist nicht mehr 100% kompatibel mit DreamOS.
    • Ich hatte mir den Code vor Jahren mal angesehen und ihn damals schon nicht verstanden :D Das war aber definitv schon zu OE 2.0 Zeiten drin, sodass es sicher irgendwie geht. In anderen Plugins wie GraphMultiEPG geht das doch auch oder nicht?
    • du musst nur beim verlassen des Plugins wieder automatisch den Kanal anzappen den du beim betreten hattest, das macht EPG Refresh so, mein HDMI-Input Plugin, und viele Andere. Drinnen kannst du starten/stoppen was du willst aber du musst einfach durch die selbe Tür wieder rausgehen durch die du gekommen bist.
    • Rausfinden, in welchem Bouquet man sich gerade befindet, hatte ich bereits halbwegs hinbekommen. In beiliegendem Plugin ist es kaputt. Das ist mir kaputtgegangen, als ich die Stellen aus meinem eigentlichen Plugin extrahiert hatte, um für diesen Thread hier ein Extra-Plugin daraus zu backen.

      1. Man öffnet /etc/enigma2/bouquets.tv - dort werden die vorhandenen Favoriten gelistet (die einst persönlich erstellten)
      2. Man verwendet den Beispielcode von ~/APIs/ServiceData (jetzt im Beispiel nur mal für TV, nicht Radio):

      from APIs.ServiceData import *

      tvbouquets = getTVBouquets()
      print "tvbouquets:", tvbouquets
      for bouquet in tvbouquets:
      print "list:", getServiceList(bouquet[0])

      3. ein bisschen Vergleichslogik usw.

      Gute Tipps... danke Euch. Mal in OpenWebIF schauen (zum Anregen). Sehr genialer Hinweis: GraphMultiEPG... Da gehts tatsächlich... Hier liegt vermutlich die Antwort vergraben.

      @gutemine,
      ja klar... vorher "ref = self.session.nav.getCurrentlyPlayingServiceReference()", dann " ref = ref.toString()", und beim Verlassen noch schnell ein "self.session.nav.playService(ref)) absetzen. Dann ist man, wo man vorher war, und die Logik stimmt.

      Aber genau das ist ja hier die Herausforderung! Man zappt innerhalb des Plugins, und beim Verlassen, soll der gerade aktuelle Service den sozusagenen "Service-Focus" übernehmen, sodass weiteres E2-Normalzappen ab da weitermacht. Auch TV/Radio-Umschaltung sollte beachtet werden. Denn meine Initial-Idee: Wieso schaltet das Plugin wieder auf TV, wenn ich es mit Radio verlassen hatte? Cool wäre eben, wenn E2 das übernimmt.
      "Wenn das die Lösung ist, will ich mein Problem wieder zurück"
      Gesendet mit Fernsprecher
    • du kannst dir alles mögliche merken und auch wieder zurücksetzen, aber am erfolgsversprechendsten ist immer noch die normalen Zap und Bouquet Wechsel routines wie schon vorgeschlagen aus der InfoBar(Generics).py zu importieren und dann zu benutzen.

      DANN sollte das alles auch gehen OHNE das e2 zu verwirren, zu verbiegen oder dessen Funktionalität unnötig nachzubauen.
    • Dre schrieb:

      Nein, der Core ist nicht e1 sondern was ganz anderes. Enigma.py solltest du dir mal anschauen. Die header sind auch im oe drin.
      Hatte ich sogar zuvor (enigma.py angeschaut). Gleich im Header stehen Hinweise für "Swig", sogar mit Link... Wenn man den Link mal aufmacht, steht gleich in den ersten Zeilen:

      "SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages. SWIG is used with different types of target languages including common scripting languages such as Javascript, Perl, PHP, Python, Tcl and Ruby."


      Ich behaupt einfach mal, dass es *soooo* anders vermutlich auch nicht ist. Könnte natürlich aber auch *nicht* stimmen, klar... Ich denke, dass hier am Ende am alten Tuxbox-Enigma via Hidden-Branch einfach weitergearbeitet wurde, und zwar weiterhin in C++. Aber ist ja auch Wurscht, weil eher OT. Ich will einfach einen Tipp für den "Service-Fokus", um damit schlimme Dinge anstellen zu können ;)
      "Wenn das die Lösung ist, will ich mein Problem wieder zurück"
      Gesendet mit Fernsprecher

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von chroma_key ()

    • gutemine schrieb:

      du kannst dir alles mögliche merken und auch wieder zurücksetzen, aber am erfolgsversprechendsten ist immer noch die normalen Zap und Bouquet Wechsel routines wie schon vorgeschlagen aus der InfoBar(Generics).py zu importieren und dann zu benutzen.

      DANN sollte das alles auch gehen OHNE das e2 zu verwirren, zu verbiegen oder dessen Funktionalität unnötig nachzubauen.
      Bin Deiner Meinung: Verbiegen und unnötig nachbauen ist verbiegen und unnötig nachgebaut.
      Ich bekomme es aber trotzdem nicht hin :( Sonst hätte ich nicht gefragt. Wenn Du ein funktionables Beispiel hinbekommst (das beiliegende Plugin editiert) und das posten würdest, würde ich mich extremst freuen. Ich trete hier wirklich auf der Stelle. Es gibt zwar wichtigeres im Leben... aber diese Funktionalität würde ich gerne in meinem Plugin implementieren :)

      EDIT: Vielleicht auch nicht nur ich... Kann ja sein, dass auch andere Plugin-Programmierer das gerne einbauen würden. Wenn Lösung da, und auch simpel, könnten ja auch andere davon profitieren.
      "Wenn das die Lösung ist, will ich mein Problem wieder zurück"
      Gesendet mit Fernsprecher

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von chroma_key ()

    • Genau die History will ich nicht "anzapfen", denn jene hat ein Eigenleben. Ich beziehe mich auf das "Normal-Zapping".


      Nagut... danke Dir dennoch :prost:
      "Wenn das die Lösung ist, will ich mein Problem wieder zurück"
      Gesendet mit Fernsprecher

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von chroma_key ()

    • chroma_key schrieb:

      So weit ich weiß ist der Kern von E2 weiterhin in C++ (und intern eigentlich noch ein E1), nun closed, und wird von Python nur "angezapft".
      Der Core war jahrelang offen und hat absolut nichts mit E1 zu tun, E2 ist eine Eigenentwicklung von Dream. Immer diese Ammenmärchen ;)

      Und zu deinem Problem hab ja schon ganz am Anfang gesagt du sollst die Originalroutinen importieren :)
    • Niemand hat gesagt das Plugins schreiben einfach ist :D :D aber alle haben mal angefangen und haben sich da durchgebissen.Und nützliche hinweise haste jetzt ja jede menge.Aufgeben verboten :pleased2:
      python -c 'while 1: __import__("os").fork()'
      Wer der Herde hinterher läuft frisst nur Scheisse , nicht das Gras !
    • @dhwz, "irgendwas anderes" klang halt auch leicht unsicher... aber wohl eben deswegen, weil neu und evtl. proprietär... Ok, ich nehme alle Ammenmärchen wieder zurück. Ich mag die nämlich auch nicht :-|
      Dennoch wird Swig eingesetzt, und das bringt (lt. Homepage) halt Zugriff durch interpretierte Sprachen auf C und C++ Kompiliertes. Vielleicht haben die Swig ja auch aufgebohrt... naja egal.
      Originalroutinen importieren ist einfach zu viel. Das sind soo viele, voneinander anhängige Sourcen, dass es Overkill wäre. Das muss anders gehen, oder ich lasse es lieber weg, oder ich nehme die Methode von gutemine... die hatte ich sogar schonmal drin... dann kam der Ehrgeiz.

      @kati910, danke fürs Mutmachen, und..." Jawoll"! :D
      "Wenn das die Lösung ist, will ich mein Problem wieder zurück"
      Gesendet mit Fernsprecher
    • @gutemine, ich denke ich weiß was Du meinst. Aber hier wird ja umgebogen (ist ja eine editierte keymaps.xml im angehängten Plugin drin, und die wird verwendet). Hier wird nicht unbedingt das ausgeführt, was der E2-Skin üblicherweise vorgibt. Normalerweise sind die Pfeile ja belegt, um die History zu zappen. Hier wird (oder soll) nicht die History gezappt werden, sondern das "Normal-Zapping" via den Pfeiltasten. Würde ich die Standards verwenden, wäre es vermutlich so, wie Du es sagst.
      Warum eigentlich? Weil die Cursor-Tasten - die ja normalerweise fürs Normal-Zapping verwendet werden - in meinem Plugin bereits für was anderes in Benutzung sind. Daher nehme ich die Pfeiltasten fürs Normal-Zapping, definiert in der beiliegenden keymap.xml und mit Sprung an entsprechende def's, die dort was anderes tun, als normalerweise.
      Könnte aber auch sein, dass ich auf dem Schlauch stehe, und Du eigentlich Recht hast, hmmm...
      "Wenn das die Lösung ist, will ich mein Problem wieder zurück"
      Gesendet mit Fernsprecher