InstallAddon(id) funktioniert nicht

  • Hallo Nerds,

    ich versuche verzweifelt durch die Funktion InstallAddon(id) ein Addon durch ein Python script zu Installieren, allerdings endet dieser Versuch immer mit einem Fehler. Im Log sieht dieser so aus.


    Code
    ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                                 - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                                Error Type: <type 'exceptions.NameError'>
                                                Error Contents: name 'InstallAddon' is not defined
                                                Traceback (most recent call last):
                                                  File "/usr/share/kodi/addons/service.test/install.py", line 100, in <module>
                                                    InstallAddon(weather.yahoo)
                                                NameError: name 'InstallAddon' is not defined
                                                -->End of Python script error report<--

    Im Script rufe ich den Befehl einfach mit InstallAddon(weather.yahoo) auf, wie es auch für mich aus der List of built-in functions ersichtlich ist. Ich verstehe nicht, wieso Kodi meldet das es so nicht funktioniert, bzw. sagt das keine definition existiert.

    Muss ich nochmal extra eine definition für diese funktion schreiben oder muss es vielleicht anders eingebunden werden? Stehe gerade echt auf´m Schlauch. Leider finde ich auch kein HowTo oder ähnliches was mir das ganze erklärt. bekomme immer nur Videos und andere Anleitungen wie es per Addonmanager zu installieren ist.


    Gruss Thiel

  • Hallo membrane,

    Naja, ein grosser Sinn steckt eigendlich nicht dahinter. Ich versuche mich nur intensiever mit der Materie auseinander zu setzen und bin auf diese funktion gestossen. Hatte es auch schon in dem ein oder anderen Addon mal gesehen, z.B. beim fusion installer.
    Ich wollte es jetzt einfach nur mal selbst versuchen und da es nicht funktioniert und ich nicht verstehe wieso, hoffte ich das mir vielleicht hier das ganze mal erklären könnte. Wie gesagt so wirklich fündig bin ich bisher durch google und diverse Foren nicht geworden.


    Gruß Thiel

  • Code
    xbmc.executebuiltin(InstallAddon(id.des.zu.installierenden.Addons))

    Die ID des zu Installierenden Addons findet man in der dazugehörenden addon.xml.

    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

  • Hallo BJ1,

    danke für die Antwort. Leider funktioniert das auch nicht. Wenn ich es so scheibe

    Python
    xbmc.executebuiltin(InstallAddon(weather.yahoo))


    bekomme ich folgenden Fehler in den Log

    Code
    ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                                 - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                                Error Type: <type 'exceptions.NameError'>
                                                Error Contents: name 'InstallAddon' is not defined
                                                Traceback (most recent call last):
                                                  File "/storage/install.py", line 102, in <module>
                                                    xbmc.executebuiltin(InstallAddon(weather.yahoo))
                                                NameError: name 'InstallAddon' is not defined
                                                -->End of Python script error report<--

    schreibe ich es so

    Python
    xbmc.executebuiltin("InstallAddon(weather.yahoo)")

    passiert einfach überhaupt nichts. Noch nicht einmal ein [definition='1','0']log[/definition] Eintrag, außer das übliche


    Code
    WARNING: CPythonInvoker(12): Script invoked without an addon. Adding all addon modules installed to python path as fallback. This behaviour will be removed in future version.

    Was für mich das schlimmste ist, ich verstehe nicht wo der Fehler liegt, oder was der Fehler sein soll. Meiner meinung nach ist es richtig, vorallem wo ich mir jetzt mit dem Stichwort "xbmc.executebuiltin" andere Beispiele angesehen habe. Allerdings habe ich keines mit InstallAddon gefunden.


    Gruß Thiel

  • Das Skript, welches Du startest (also welches das executebuiltin(InstallAddon(blabla)) ausführt), lässt sich nur aus Kodi heraus starten. Außerhalb von Kodi sind die Bibliotheken xbmc, xbmcaddon, xbmcgui, xbmcplugin nicht bekannt und können daher auch nicht genutzt werden. Du brauchst aber mindestens xbmc (import xbmc), da executebuiltin eine Methode des xbmc-Objektes ist (xbmc.executebuildin(...).

    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

  • Ja das ist klar, starte das skript beginnt mit den import funktionionen

    Python
    import xbmc, xbmcgui, xbmcvfs, xbmcaddon


    aufrufen tue ich die Datei über einen link im Menü, da ich öfters sowas ausprobiere um zu wissen wie es funktioniert. Das Script wird per

    XML
    <onclick>RunScript(/storage/install.py)</onclick>

    aus der Home.xml aufgerufen.


    Gruß Thiel

  • Achso, deswegen meckert Kodi, weil ein Skript ohne Addon-Struktur gestartet wird. Evtl. bekommst Du was raus, wenn Du in Kodi mal den Debug-Modus einschaltest. Da wird das Log dann gesprächiger.

    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

  • Hallo,
    Ich würde das anders machen.
    addon.xml
    <requires>
    <import addon="xbmc.python" version="2.20.0" />
    <import addon="script.module.pyxbmct" version="1.1.7"/>
    </requires>

    Damit wird, wenn es verfügbar ist script.module.pyxbmct i(repo) nstaliert wenn nicht, läßt sich das Addon auch nicht instalieren da es die Requrement nicht erfüllt, und gibt das aus

  • @BJ1
    OK, dann werde ich mal schnell ein Addon drum herum bauen, werde berichten...

    @root2
    Danke, gut zu wissen ;)

    @L0RE
    Mir geht es nicht darum, die Addon installation per abhängigkeiten zu realisieren, eher darum evtl. ein Script/Addon zu haben, welches vorinstalliert ist, z.B. in OpenELEC, LibreElec oder der gleichen, welches dann eine Setup Routine startet, sowas wie ein Erststart/Installationsscript welches alle benötigten Addons mit einem klick installiert. Würde einiges vereinfachen. In erster Linie versuche ich allerdings die Funktion zu verstehen...

    Gruß Thiel

Jetzt mitmachen!

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