[GELÖST] Übergabe vom View an Python Script oder View auslesen ?

  • Hi Leute
    ich plane gerade eine Zeitleiste für Livestreams die einen review unterstützen, nur bin ich noch etwas planlos

    wie kann ich aus einem eigenen View im Skin, Daten von einem Edit Control,Spin Control und Slider an ein Pythonscript übergeben
    oder aus einem Pythonscript den View auslesen

    finde im Wiki nur das erstellen der Controls aber nichts über die Datenübergabe
    im Anhang habe ich mal den groben View reingestellt

    Gruß und Danke Gerhard

    DIE LÖSUNG:
    im Skin die Anfrage ans PythonScript stellen

    Code
    <onclick>RunPlugin($INFO[container.folderpath]/?halliehallo)</onclick>


    im Python Script verarbeiten

  • Ich habe mich zwar jetzt nicht durch deinen Code gewühlt, aber im allgemeinen kann man das so machen... Hier mal ein kleines Beispiel an einem Slider...


    In Python kann man sich dann den Wert dann zB so holen oder setzen...

    Code
    import xbmc
    import xbmcgui
    
    
    class Klasse( xbmcgui.WindowXMLDialog ):
    	def onClick( self, controlID ):
        	 	  if controlID == 1313:
            	p = self.getControl( controlID ).getPercent()
            	       	xbmc.[definition='1','0']log[/definition]('%s' %(str(p)) )


    Alle verfügbaren Methoden der einzelnen Controls findest du ja in der XBMC-Python-Api Dokumentation im xbmcgui Modul

  • alles klar ist soweit verständlich, die Api habe ich auch schon gefunden
    wie rufst du dann das Python Script auf aus dem Skin/View, mit nem OK Button
    oder gibts da ein Addon / Script wo man mal reinschauen kann

    nochmal ne gaaaaanz dumme Frage, ein gestartetes Addon läuft das als Thread im Hintergrund weiter oder macht es nur einen Durchlauf
    ich z.B. habe in der Hauptschleife zum Schluss immer ein "xbmcplugin.endOfDirectory(int(sys.argv[1]))"

  • Ein Script kann man idR über RunScript(...) aufrufen. Ein (installiertes) Addon dann über RunAddon(AddonID)... Eine dieser builtin functions kann man dann auf ein onclick eines Buttons legen...

    Normalerweise macht ein Script/Addon nur einen Durchlauf und wird anschließend beendet. Wenn man dies verhindern wollte, habe ich bislang immer ein...
    while not xbmc.abortRequested:
    ----xbmc.sleep(1000)
    ... für Scripts oder Addons genutzt. Welcher Weg da nun besser oder schlechter ist kann ich dir nicht sagen, weil ich gerade den wirklichen Nutzen der endOfDirectory-Funktion im Zusammenhang eines Plugins nicht so richtig verstehe...

  • irgendwie habe ich noch ein Problem beim Import/Zugriff, habe schon x Codes getestet
    wenn ich auf die Klasse zugreife bekomme ich immer ein - Error Contents: 'module' object has no attribute 'getCon'
    bei einer def außerhalb der Klasse gibts kein Prob

    Code
    import resources.lib.feedparser as feedparser
    import resources.lib.iptvxtra as iptvxtra <- datei der Klasse
    import resources.lib.requests as requests
  • normalerweise sollte doch mit 'from resources.lib.iptvxtra import *' alles importiert werden
    und mit 'test.getCon()' rufe ich die Procedure in der Klasse auf
    doch ich bekomme diese Fehlermeldung
    TypeError: unbound method getCon() must be called with test instance as first argument (got nothing instead)
    die einzelne Procedure 'getConx()' funktioniert wieder
    eine leere __init__.py ist im Verzeichnis

    warum bekomme ich keinen Zugriff auf die Proce in der Klasse ???

  • ich bekomme immer die Fehlermeldung - EXCEPTION: Non-Existent Control 1313 - das Control ist aber eindeutig vorhanden
    dann noch eins
    wie kann ich aus dem View den Pfad des Addons setzen - mit $INFO[container.folderpath] bekomme ich nur plugin://... und nicht den special Pfad

    ich verzweifle langsam

  • die Verzweiflung wird weniger
    jetzt fehlt nur noch dies:
    wie kann ich aus dem View den Pfad des Addons setzen - mit $INFO[container.folderpath] bekomme ich nur plugin://... und nicht den special Pfad
    es geht darum das Skript aus dem Addon aufzurufen, ohne das bekannt ist, welches Addon gestartet ist

    durch die Verwendung der Klasse wird das falsche objekt ermittelt und so gehts 1a und ist wesentlich einfacher

    Code
    xel = xbmcgui.Window(xbmcgui.getCurrentWindowId())
    print xel.getControl(1313).getPercent()
    
    
    <__main__.Klasse object at 0x0E011AE0> Ergebnis der Klasse
    ERROR: EXCEPTION: Non-Existent Control 1313
    <xbmcgui.Window object at 0x0E095428> Ergebnis aus dem oberen Code
    NOTICE: 71.9555511475
  • ne ich wollte ein Script das im Addonordner liegt starten, ohne den Ordner explizip anzugeben,
    RunScript(special://home/addons/plugin.video.iptvxtra-de/resources/lib/iptvxtra.py) -> RunScript(blablabla/resources/lib/iptvxtra.py)

    ich mache es jetzt aber anders, ich sende alles an mein bestehendes Addon und verarbeite es dort weiter
    RunPlugin($INFO[container.folderpath]/?timeline)

    das einzige Problem das ich habe ist der Slider, der geht nur von 0 - 100, der Tag hat aber 1440 Minuten
    so könnte ich nur alle 14,4 Minuten einklicken, in den Settings gibts nen anderen Slider bei dem man alles einstellen kann
    gibts aber nicht in Skinning, denke ich
    für das Prob eröffne ich nen eigenen Thread

    Gruß und Danke für die Tips
    Gerhard

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!