kodi beim Start programmieren

  • ich würde gerne wissen ob es möglich ist beim Start von KODi eigene befehle ablaufen zu lassen?

    Ich habe KODi auf dem Raspberry Pi 3 laufen mittels libreelec. Ich würde gerne nun beim Start generell
    1 Datenbank bereinigen
    2 Datenbank exportieren separat
    3 Artwork Downloader
    4 Datenbank aktualisieren
    5 Radio m3u starten
    Und das alles am im Hintergrund.

    Ist sowas generell möglich?

    Mit Python müsste das doch möglich sein oder?

    Ich bin über jede Hilfe dankbar
    Grüße HarmUb

    RasPi 3, LibreElec 8.2.5, Kodi 17.6

  • Ja, ist es....da ich aber gleich ins Bett will nur mal ganz schnell und ganz grob was zusammen gestrickt:

    http://kodi.wiki/view/List_of_built-in_functions

    zu 1: CleanLibrary(database) [database musst du mit der Datenbank ersetzen, die du bereinigen möchtest: Video oder Music]

    zu 2: exportlibrary(video,true,thumbs,overwrite,actorthumbs) [selbsterklärend]

    zu 3: verstehe ich nicht, was du da willst?! Kannst du das genauer erklären?
    zu 4: UpdateLibrary(database,[path]) [den [path] kannst du weg lassen...für "database" wieder die Datenbank nehmen, die du updaten willst.]
    zu 5: PlayMedia(media[,isdir][,1],[playoffset=xx])

    Erklärung zu 5:

    Plays the media. This can be a playlist, music, or video file, directory, plugin or a url. The optional parameter ",isdir" can be used for playing a directory. ",1" will start a video in a preview window, instead of fullscreen. If media is a playlist, you can use playoffset=xx where xx is the position to start playback from.


    Das ganze kannst du ganz einfach in eine autoexec.py packen, die du in deinen userdata Ordner erstellst: /storage/.kodi/userdata


    Der Inhalt der Datei KÖNNTE so aussehen...wie gesagt, ich will in die Kiste und daher nur schnell und ungetestet:



    Wie und ob das ganze im Hintergrund läuft kann ich dir nicht sagen. Es wird aber alles bei jedem Start von Kodi ausgeführt. Die Fortschrittbalken bei der Bereinigung der Datenbank wirst du aber bestimmt noch sehen. Ebenso auch den prompt rechts oben in der Ecke, wenn die Datenbank aktualisiert wird. Also so völlig unbemerkt wird es vielleicht nicht gehen.

    Hoffe, dass es hilft

    Gruß und gute Nacht ;)

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • @DaVu

    klappt teilweise...

    "
    import xbmc
    xbmc.executebuiltin('CleanLibrary(video)') # -> klappt
    xbmc.executebuiltin('UpdateLibrary(video)') # -> klappt
    xbmc.executebuiltin('PlayMedia(ArtworkDownloader)') # -> Siehe oben 3.) würde gerne das Plugin Artwork downloader starten...
    xbmc.executebuiltin('exportlibrary(video,true,thumbs=true,overwrite=false,actorthumbs=false)') # -> denke das das so klappt wie ich es haben will
    xbmc.executebuiltin('PlayMedia(/storage/downloads/HitRadioAntenne.m3u)') # -> Klappt iwie nicht, Falsche Pfadangabe?
    "

    Problem was ich bei den Befehlen die bisher klappen festgestellt habe. Es wird immer nur einer der Befehle durchgeführt! Woran kann das liegen?

    Erstmal Danke für deine bisherige Hilfe!

    Grüße

    RasPi 3, LibreElec 8.2.5, Kodi 17.6

  • Es wird immer nur einer der Befehle durchgeführt!

    Wie meinst du das? Wenn du das Script so nimmst, wie ich es geschrieben habe, wird nur einer der Befehle ausgeführt, aber der Rest wird ignoriert/nicht ausgeführt? Das würde mich in der Tat wundern. Vielleicht muss man noch was einbauen, was irgendwie triggert, dass der erste Befehl fertig ausgeführt wurde und dann den nächsten nimmt. Ich mach mich mal schlau.


    xbmc.executebuiltin('PlayMedia(/storage/downloads/HitRadioAntenne.m3u)') # -> Klappt iwie nicht, Falsche Pfadangabe?

    Das weißt du besser als ich ;) . Liegt die m3u denn in dem Pfad?

    Ansonsten...alles was nicht funktioniert, steht auch nachher im [definition=9,2]kodi.[definition='1','0']log[/definition][/definition]. Wenn du magst und Zeit hast, kannst du das ja mal posten.


    xbmc.executebuiltin('PlayMedia(ArtworkDownloader)') # -> Siehe oben 3.) würde gerne das Plugin Artwork downloader starten...

    Hehe...das kann so nicht gehen ;)

    Ein Add-on ist kein "Media". "Media" sind Mediendateien....mkv, jpg, m3u, ISO, etc... Ein Add-on ist ein Add-on. Schau dir nochmal den Link an: http://kodi.wiki/view/List_of_built-in_functions

    Du möchtest ein Add-on ausführen/starten. Also könnte man nach "run", "start" oder auch "addon" auf der oben genannten Seite suchen ;) . Du wirst foldendes finden:

    RunAddon(id) - Runs the specified plugin/script


    für id musst du die ID des Add-ons angeben. Als ID wird der Name des Add-ons genommen, so wie er in /storage/.kodi/addons  vorliegt. Als Beispiel mal das Youtube Plugin: plugin.video.youtube


    Somit muss der Scriptteil wie folgt aussehen:


    xbmc.executebuiltin('RunAddon(plugin.video.youtube)')


    Das musst du halt jetzt nur noch für deinen Artwork Downloader anpassen.

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

    Einmal editiert, zuletzt von DaVu (14. Dezember 2017 um 09:19)

  • Warte bitte noch ein wenig mit dem testen des Scripts....könnte sein, dass ich da nen groben Denkfehler drin habe, der deine Bibliothek löschen könnte.

    Das Problem ist, dass wenn du ein "clean library" beim start ausführst, deine Netzwerkverbindung zu deinem NAS aber noch nicht besteht, alle Einträge deiner Library entfernt werden weil Kodi denkt, die Einträge sind nicht mehr korrekt.

    Kodi wird beim Clean checken ob der Pfad existiert. Wenn du ein NAS verwendest und/oder die Netzwerkverbindung zu dem Host (NAS, Windows PC, whatever) nicht besteht, ist der Pfad nicht existent. Somit sagt Kodi "Ok, der Pfad existiert so nicht...also Eintrag entfernen.". Somit bitte nochmal warten. Kann sein, dass das Script wesentlich länger aussehen muss.

    Weiter gibt es für "Update Library" auch ein Kodi setting, welches die Aktualisierung bei jedem Start durchführt. Rein theoretisch könnte man sich diese Zeile also auch sparen.

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • ok..noch schnell eine Antwort...warte bitte noch ein wenig. Ich hexe zu Hause mal was zusammen und werde dann berichten. Bis dahin ist obiges Script mit Vorsicht zu genießen. Es macht nicht wirklich was kaputt, könnte aber unschöne Auswirkungen haben. Von daher warte doch bitte, bis ich was handfestes habe.

    Bringt ja nichts, wenn ich dich irgendwelchen Mist ausführen lasse ;)

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Das wäre auch eine Option. Somit würde man mit dem Update 2 Fliegen mit einer Klappe schlagen.

    Dann noch das Setting hier dazu einschalten:

    und man kann sich :

    xbmc.executebuiltin('CleanLibrary(video)') # -> klappt
    xbmc.executebuiltin('UpdateLibrary(video)') # -> klappt

    komplett sparen

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Moin

    habe es nun angepasst

    Python
    import xbmc
    xbmc.executebuiltin('CleanLibrary(video)')
    xbmc.executebuiltin('UpdateLibrary(video)')
    xbmc.executebuiltin('RunAddon(script.artwork.downloader)')
    xbmc.executebuiltin('exportlibrary(video,true,thumbs=true,overwrite=false,actorthumbs=false)')
    xbmc.executebuiltin('PlayMedia(/storage/downloads/HitRadioAntenneStream.m3u)')

    Zu 2: funktioniert -> Warte aber noch auf deine Anmerkungen. Sind momentan bei mir mit # auskommentiert -> Löuft allerdings auch im Vordergrund
    zu 3: funktioniert
    zu 4: Funktioniert
    zu 5: funktioniert -> Läuft allerdings im Vordergrung
    zu 6: funktioniert

    Zitat von DeVu

    Das weißt du besser als ich . Liegt die m3u denn in dem Pfad?


    Ansonsten...alles was nicht funktioniert, steht auch nachher im kodi.[definition='1','0']log[/definition]
    . Wenn du magst und Zeit hast, kannst du das ja mal posten.

    Hat sich tatsächlich geklärt. War ein Fehler im Pfad. Dachte erst die Pfad angabe oder iwie die "/" sind falsch gesetzt. Kenn mich mit linux nicht gut aus


    Wie meinst du das? Wenn du das Script so nimmst, wie ich es geschrieben habe, wird nur einer der Befehle ausgeführt, aber der Rest wird ignoriert/nicht ausgeführt? Das würde mich in der Tat wundern. Vielleicht muss man noch was einbauen, was irgendwie triggert, dass der erste Befehl fertig ausgeführt wurde und dann den nächsten nimmt. Ich mach mich mal schlau.

    Ja es funktionierte nur einer der Befehle. Mittlerweile habe ich den Code angepasst und es funktionieren mehrere Befehle aber zum Teil alle gleichzeitig... Ich vermute Kodi führt alle Befehle aus. In verschiedenen Threads laufen dann die einzelnen Befehle durch. Läuft aber ein Befehl im Vordergrund, hebelt er weitere aus. Zum Beispiel fängt er mit CleanLibrary an und weil das ne weile dauert starten die anderen nicht und werden ignoriert. also ist es wahrscheinlich am besten wenn man die einzeln nacheinander ablaufen lässt. Nur keine ahnung wie man das umsetzt.


    Finde die Lösung das in einem Skript zu haben besser, sodass ich nicht die Lösung der einstellung in den Settings nehme. Aber Danke für die Hinweise!

    Gibt es noch eine Lösung die Befehle alle im Hintergrund ablaufen zu lassen? Und wie bereits beschrieben halt nacheinander?

    Grüße HarmUb

    RasPi 3, LibreElec 8.2.5, Kodi 17.6

  • jemand aus dem team kodi hat mir vorhin ein paar tips gegeben, die ich aber selbst gern erst noch testen würde. Hab bitte noch ein Geduld. Habe gerade viel um die Ohren und komme daher im Moment nur selten dazu um ich um solchen Spaß (und ja...es ist wirklich Spaß ;) ) zu kümmern. Ich denke spätestens am WE habe ich was für dich.

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Ohne das ich @DaVu den Spaß nehmen will und habe auch nicht komplett den Thread gelesen, aber wenn es Dir um eine Art
    Batchverarbeitung geht, dann kannst Du dem executebuiltin einen 2ten Werte True übergeben.
    Dieser sorgt, lt. Doku, dafür das gewartet wird bis diese Fuktion fertig ist.
    Standardmässig ist False aktiv - was deine Erfahrungen belegen.

    Also etwa

    xbmc.executebuiltin('CleanLibrary(video)', True)

    Cheers
    Claudia

  • Batchverarbeitung geht, dann kannst Du dem executebuiltin einen 2ten Werte True übergeben.
    Dieser sorgt, lt. Doku, dafür das gewartet wird bis diese Fuktion fertig ist.

    Ganz genau das :thumbup:

    Das konnte ich bisher aber noch nicht testen und kannte es bisher auch noch nicht. Aber ja, das ist, was ich meinte.

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Hmmm, klappt nicht so richtig... es wird immer noch mehreres gleichzeitig gestartet, bzw es läuft zumindest gleichzeitig ab... Evlt. heißt das ja nur das abgewartet wird bis der Befehl gestartet/ angenommen wurde?

    Aber ich bin schon ziemlich weit mit dem was ich wollte. Kann man das ganze eigentlich auch in einen menüpunkt packen? Wäre auch ganz hilfreich anstatt beim Starten von Kodi.

    Grüße

    RasPi 3, LibreElec 8.2.5, Kodi 17.6

  • Ich habe aktuell keinen Zugriff auf eine Kodi-Installation, RPi verliehen an einen Freund
    und Rock64 muss sich gerade im Auto beweisen.
    Am Wochenende SOLL ich den RPi wieder bekommen, wenn Du also bis dato
    keine Lösung hast kann ich mir das gerne mal anschauen.

    Cheers
    Claudia

Jetzt mitmachen!

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