OpenElec Pythonskript: no module named xbmc

  • Moin Zusammen,

    hier einmal mein erster Post in diesem Board.

    Ich versuche über ein Python Skript das TakeScreenshot builtin auszuführen doch leider ohne Erfolg. Als Hilfestellung habe ich das Tutorial benutzt http://kodi.wiki/view/Autoexec.py

    Python
    #!/usr/bin/python
    import xbmc
    xbmc.executebuiltin("xbmc.TakeScreenshot")

    Die Fehlermeldung ist folgende:

    Code
    OpenELEC:~/.config # ./script.py
    Traceback (most recent call last):
      File "./script.py", line 2, in <module>
        import xbmc
    ImportError: No module named xbmc

    Auf dem Raspberry Pi 2 läuft gerade OpenElec 14.2 Helix mit der Python Version 2.7.3.

    Laut der Wiki steht das XBMC Modul ab der Pythonversion 2.6 bereit http://kodi.wiki/view/Python_libraries

    Hat jemand ein Plan wie ich die Fehlermeldung beheben kann?

    Gruß,
    Burny

  • Über den Kodi send Befehl habe ich es auch schon geschafft. Mir geht es aber darum die Builtin-Commands per Python Skript auszuführen.

    Oder kann es sein das die builtins veraltet sind?

  • Das xbmc-modul steht nur innerhalb der Laufzeitumgebung von XBMC/Kodi zur Verfügung und funktioniert daher auch nur über einen Aufruf aus XBMC/Kodi heraus. Willst Du von aussen auf XBMC/KODI zugreifen musst du JSON/RPC o.ä. benutzen.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • wie gesagt, kannst du das nur über kodi ausführen und nicht ausserhalb.

    Code
    xbmc.executebuiltin('TakeScreenshot')
  • Der Witz ist ja das ich mein oben genanntes Skript in Kodi ausführe. Um genau zu sein unter storage/.config/script.py. Daher verstehe ich eure Antwort nicht, dass ich execute in der Entwicklungsumgebung ausführen muss. Handelt es sich bei dem Pfad nicht um die Entwicklungsumgebung?

  • Die Module xbmc, xbmcgui, xbmcplugin, xbmcaddon und xbmcvfs können nur aus Kodi heraus angesprochen werden. Python selbst kennt diese Module nicht. Du führst Dein Skript garantiert nicht in Kodi aus, maximal unter dem Nutzer Kodi. Das sind zwei verschiedene Paar Schuhe.

    Unter/in Kodi bedeutet: Addon -> Programme -> DeinSkript oder welche Struktur Du in der addon.xml auch immer vorgibst.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Okay, das sehe ich ein. Um also ein eigenes Pythonskript in Kodi ausführen zu können muss ich das Skript als Addon einbinden?

    Mal schauen was ich hier in den HOW TO Sektionen darüber finde.

  • Habe mich eben zum JSON RPC eingelesen und bin auf folgenden Beispielcmd gestoßen.

    Code
    curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"GUI.ShowNotification","params":{"title":"Hello World","message":"This is the body of the message"},"id":1}' http://i3c.pla.lcl:8080/jsonrpc

    Dieser sendet eine Notification an XBMC. Um einen Screenshot auszuführen muss dementsprechend die Methode GUI.ShowNotification mit TakeScreenshot ersetzt werden. Dann stellt sich mir aber noch die Frage ob die URL

    Code
    http://i3c.pla.lcl:8080/jsonrpc


    eine Standard URL ist oder ob ich dort die Zieladresse von meinem XBMC Center angeben muss. Sprich:

    Code
    http://192.168.1.107:8080/jsonrpc

    Daher würde ich folgende Befehlskette kommen:

    Code
    curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"TakeScreenshot","id":1}' http://192.168.1.107:8080/jsonrpc

    Würde das funktionieren wenn ich diesen Befehl von einem PC an XBMC sende?

Jetzt mitmachen!

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