Wer hat Python-Kenntnisse und kann helfen?

  • Edit: Habs nach langem Gewurschtel hinbekommen :) die Version in Zeile 4 der addon.xml Datei hab ich einfach zu 3.0.0 geändert. In der addon.py Datei habe ich die letzte Zeite verändert zu:

    Python
    exec='retroarch'
    
    
    os.system(exec)

    (für Linux)

    Bei Windows nimmt man cmd statt exec. Habs da aber nur mit dem Beispiel 'notepad' hinbekommen (war als Bsp. auf einer Seite aufgeführt), mit retroarch hat das nicht funktioniert. Keine Ahnung, wie diese Kurzbefehle zustandekommen.

    Hier die überarbeitete Zip-Datei: script.retroarch edit.zip

    ------------------------------------------------------------------

    Ursprünglicher Post:

    Es geht nur darum, ein paar Zeilen Code zu überprüfen.

    Ich würde gern ein externes Programm (Firefox) in mein Kodi-Hauptmenü einbinden. Dabei ist mir eingefallen, dass jemand im Kodi-Forum mal ein Mini-Addon geschrieben hat, um genau das zu machen. Damals ging es darum, ein Skript für Retroarch auszuführen, weil Retroarch im LE-Build von 5schatten außerhalb des Estuary-Skins keinen eigenen Menüpunkt hatte (und somit quasi nur innerhalb von Estuary gestartet werden konnte).
    Das Addon macht also nichts anderes, als ein Skript auszuführen und ich denke, dass man das Addon genauso gut auch für andere Programme/Skripte nutzen kann, wenn man einfach nur den Pfad der auszuführenden Datei anpasst.

    Mein einziges Problem ist, dass das damals Python 2 war und heute Python 3. Kann da mal kurz wer drüber gucken und sagen, ob der Code noch passt, oder ob sich an irgendeiner Stelle was verändert hat? Und auch hier in der xml-Datei welche Version in Zeile 4 eingetragen werden muss?

    Python: addon.py
    import xbmcaddon
    import xbmcgui
    addon       = xbmcaddon.Addon()
    addonname   = addon.getAddonInfo('name')
    import xbmc
    import os, sys
    
    
    os.system("/storage/downloads/retroarch.start")


    Hier das gesamte Addon als Zip-Datei: script.retroarch.zip

    @Shadow128 @namtih Bin bei der Recherche über euren Thread gestolpert und denke, dass das auch für euch interessant sein könnte.

  • Bei Windows nimmt man cmd statt exec.

    cmd oder exec ist eigentlich völlig egal, da es in dem Fall nur ein Variablenname ist. exec sollte man aber nie verwenden, weil das in Python eine eingebaute Funktion ist, die du somit umdefinierst. Ob man den Pfad zur ausführbaren Datei in einer Variable speichert oder direkt in den Funktionsaufruf schreibt ist in dem Fall auch egal. Der Originalcode müsste eigentlich nach der Änderung in der addon.xml (xbmc.python 3.0.0) auch funktionieren (wenn der Pfad stimmt bzw. angepasst wurde).

    Habs da aber nur mit dem Beispiel 'notepad' hinbekommen (war als Bsp. auf einer Seite aufgeführt), mit retroarch hat das nicht funktioniert. Keine Ahnung, wie diese Kurzbefehle zustandekommen.

    notepad ist in einem Verzeichnis in der globalen Pfad-Variable, retroarch wohl nicht. Gib einfach den vollständigen Pfad zur entsprechenden .exe an. Ich benutze aber kein Windows, weiß also nicht wie der lauten könnte.

  • Die Imports sind (bis auf os) nutzlos, da Du diese bzw. deren Funktionalitäten nicht verwendest. Das gesamte Addon kann man so auf einen Zweizeiler zusammenkürzen:

    Python
    import os
    os.system("/storage/.kodi/userdata/addon_data/script.games.rom.collection.browser/scriptfiles/retroarch.start")

    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

  • Hab jetzt mal alle eure Vorschläge ausprobiert (auf Lubuntu und Windows), aber nichts davon hat bei mir funktioniert. Nur die Begriffe exec bzw. cmd gingen bei mir. Andere Begriffe nicht. Und mit dem Pfad hat es bei mir auch nicht funktioniert.
    Beim Versuch das Addon zu installieren sagt er immer: "Die Installation des Addons aus der ZIP-Datei [...] ist fehlgeschlagen. Der Dateiinhalt hat nicht die korrekte Struktur."

  • Die Pfade, die mit /storage/... beginnen sind Pfade aus einer LibreElec-Installation, die gibt es unter Windows/Lubuntu so nicht...

    Beim Versuch das Addon zu installieren sagt er immer: "Die Installation des Addons aus der ZIP-Datei [...] ist fehlgeschlagen. Der Dateiinhalt hat nicht die korrekte Struktur."

    Welche Zip meinst Du? Die mit dem "edit" im Dateinamen? Da ist ein Leerzeichen im Dateinamen. Ansonsten ist da nichts auffälliges.

    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, die Pfade hab ich an meine Windows- bzw. Lubuntuinstallation angepasst, hat bei mir aber trotzdem nicht funktioniert.
    Ja, genau die Zip-Datei, nur hab ich die halt mehrfach verändert. Mal mit anderen Begriffen für exec und cmd, mal mit Pfadnamen, mal gekürzt.. hat alles nicht funktioniert.
    Am Dateinamen kanns auch nicht liegen, der hieß während meiner tests nur "bla.zip". Außerdem hab ich es ja mit dem vorherigen Skript auch so probiert und da ging es. Ich hab wirklich immer nur eine Sache verändert, um andere Fehlerquellen auszuschließen.

  • Also ich kann die angehängte zip in Kodi 19 unter Archlinux problemlos installieren und es startet Firefox einwandfrei, sobald ich das Addon ausführe.
    Ich hab nur in der Original zip in der addon.xml die xbmc.python Version angepasst, die addon.py quasi wie @PvD geschrieben hatte und nach dem zippen die zip-Datei in bla.zip umbenannt. Weiß nicht wo dein Problem liegen könnte.

  • Ja, stimmt die Zip-Datei funktioniert auch bei mir. Wenn ich jetzt aber die Tags forum, source, website, email und news raus lösche, funktioniert es nicht mehr.
    Und das obwohl ich das bei meiner anderen Zip-Datei auch gemacht hab und dort hat es keine Probleme gemacht.
    Versteh das wer will...

  • Wenn ich jetzt aber die Tags forum, source, website, email und news raus lösche, funktioniert es nicht mehr.

    Hänge mal hier eine nicht funktionierende Zip an... Kann ja nur sein, das was an der xml-Struktur zerschossen wird.

    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

  • Hänge mal hier eine nicht funktionierende Zip an... Kann ja nur sein, das was an der xml-Struktur zerschossen wird.


    Ok, als ich eine nicht funktionierende Zip-Datei erstellen wollte, hat es auf einmal funktioniert. Auch wenn ich echt nicht weiß, was dieses mal anders gewesen sein soll.
    Dafür gibt es jetzt einen anderen Fehler (nur unter Windows). Es ist quasi dieselbe Zip-Datei wie unter Lubuntu, nur dass ich in der .xml Datei platform von linux zu windows geändert hab (was aber vermutlich eh nur rein informativ ist und keinen Einfluss hat?) und eben den Pfad. Und der Pfad scheint laut Log-Datei auch das Problem zu sein. Er sagt etwas von Syntaxerror, wenn ich versuche, das Addon zu starten:

    Code
    2021-04-08 22:01:34.241 T:1428    ERROR <general>: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                                        - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                                       Error Type: <class 'SyntaxError'>
                                                       Error Contents: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape (addon.py, line 2)
                                                         File "C:\Users\Jan\AppData\Roaming\Kodi\addons\script.retroarch\addon.py", line 2
                                                           os.system("C:\Users\Jan\Desktop\Emulatoren\Dolphin-x64\Dolphin.exe")
                                                                     ^
                                                       SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
                                                       -->End of Python script error report<--
    2021-04-08 22:01:34.256 T:1428     INFO <general>: Python interpreter stopped


    Ich hab zum Test eine Anwendung genommen, die nicht im Programmeordner liegt, weil ich mir nicht sicher war, ob dann noch die Adminrechte eine Rolle spielen könnten.

    ich würde mal einfach den Ordner mit den Dateien per rechtsklick > "komprimierten ordner erstellen" (oder wie das heißt) zu ner zip machen.

    Wie machst du es in Lubuntu?


    Lubuntu ist das OS auf meiner TV Box, die ich mit einem Mini-Keyboard bediene. Dort eine Zip-Datei zu erstellen wäre etwas aufwendig, deshalb mach ich das am Windows PC und schieb mir die Datei dann einfach übers Netzwerk auf den Lubuntu Desktop. Aber jetzt hat es ja auch funktioniert... warum auch immer... ich kapier es echt nicht, ich hab während dem Testen bestimmt gefühlte 30 Zip-Dateien erstellt mit allen möglichen Tests. Und auf einmal gehts, ohne dass ich gefühlt etwas anders gemacht hätte

  • Es war wohl mal so, dass wenn der Fehler von wegen "fehlerhafte Struktur" kam, man Kodi neu starten musste, sonst kam der auch bei ner eigentlich korrekten zip. Vielleicht ist das immer noch so.


    Und der Pfad scheint laut Log-Datei auch das Problem zu sein. Er sagt etwas von Syntaxerror, wenn ich versuche, das Addon zu starten:

    Der Backslash "\" wird als escape character interpretiert, nimm einfach nen normalen Schrägstrich "/".

  • Yes, das war es, danke :) Wär ich nicht drauf gekommen, da ich den Pfad ja aus der Adresszeile rauskopiert hab und der Pfad noch dazu in Anführungszeichen stand.
    Nur Retroarch öffnet immer noch nicht, ich vermute das liegt an den Adminrechten. Gibt es für Windows so etwas wie sudo für Linux? Und falls ja, könnte ich das überhaupt in das Pythonscript reinschreiben, oder müsste das irgendwie in ein anderes Skript ausgelagert werden?

Jetzt mitmachen!

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