Automatischer Datenbank Export beim herunterfahren

  • Hi,

    ich möchte gerne, dass meine Watched-States automatisiert in meine am NAS liegenden nfo-Files geschrieben werden. Als Trigger bietet sich dafür jeder Reboot, Halt und Shutdown an.

    Also habe ich /storage/.config/shutdown.sh angelegt und da diese Action reingeschrieben:

    Bash
    kodi-send -a "exportlibrary(video,true,false,true,false)"


    Das Problem ist, dass das erst KODI beendet wird, dann das Skript ausgeführt und dann heruntergefahren wird. Das heißt sämtliche kodi-send Befehle machen in dem Skript keinen Sinn, da KODI sie gar nicht mehr verarbeiten kann.

    Hat jemand:

    - eine alternative Idee, die watched states automatisch in die nfo-Files zu schreiben?
    - eine alternative Idee, diesen Befehl automatisch beim Reboot/Shutdown/Halt auszuführen, wenn KODI noch läuft?
    - eine alternative Idee für einen anderen Trigger? (z.B. immer dann, wenn eine Mediendatei fertig wurde mit abspielen)

    Die hässliche Idee wäre noch, automatisch Nachts um 3 Uhr Morgens den HTPC hochzufahren, um 3:05 Uhr einen cron-Job aufzusetzen und dann den HTPC wieder runterfahren. Aber das wär nur meine letzten Notlösung.

    Danke

    KODI 21.0 Omega Release | Nvidia SHIELD TV Pro (2019) | DENON AVR X-4400H

  • An einen cron dachte ich auch im ersten Moment.

    Lass mich mal ne Nacht drüber schlafen

    Wie wäre es denn nach dem Kodi gestartet wurde...mit einer autoexec.py?

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

  • Wie wäre es denn nach dem Kodi gestartet wurde...mit einer autoexec.py?

    Genau daran arbeite ich gerade.

    Aber erstens: Beim Start ist das weniger schön, weil das dauert ja einige Sekunden und beim Start will man ja gleich loslegen.
    Zweitens: Ich hab leider keine Ahnung, wie man über python KODI steuert :( Wie müsste die code line aussehen, um "exportlibrary(video,true,false,true,false)" auszuführen?
    Drittens: Wenn das geht, kann man das "silent" machen, dass man in der GUI davon nichts sieht?

    Bisher hätte ich das, aber geht das auch eleganter?

    Python
    import os
    os.system('kodi-send -a "exportlibrary(video,true,false,true,false)"')

    KODI 21.0 Omega Release | Nvidia SHIELD TV Pro (2019) | DENON AVR X-4400H

  • Bisher hätte ich das, aber geht das auch eleganter?

    Ja, geht es. ;)

    Die autoexec.py started ja erst dann wenn Kodi schon gestartet ist und greift dann auf die sogenannten "in-built functions" zu...bzw. kann es das. Das gleiche machst du ja mit kodi-send nur, das du es direkt in Kodi ausführen kannst.

    Python
    import xbmc
    
    
    xbmc.executebuiltin('(exportlibrary(video,true,false,true,false)')

    https://kodi.wiki/view/Autoexec.py

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

  • Das heißt sämtliche kodi-send Befehle machen in dem Skript keinen Sinn, da KODI sie gar nicht mehr verarbeiten kann

    Weiter darfst du nicht vergessen...falls deine Daten auf einem NAS liegen wird beim Beenden von Kodi und beim Runterfahren des Geräts auch der Netzwerk-Service sehr schnell abgeschaltet. Selbst wenn Kodi also noch die Befehle empfangen könnte oder du anderweitig die Datenbank abfragst, bekommst du die Sachen nicht mehr auf das NAS, da das Gerät keine Verbingung mehr haben wird.

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

  • Dankeschön für eure Hilfe, die Lösung würde jetzt erst mal funktionieren, ist aber eigentlich nicht mein primäres Ziel gesehen.

    Hat niemand Ideen, wie man das an den Shutdown koppeln kann und sicherstellen kann, dass er so lange wartet, bis es auch abgeschlossen ist?

    KODI 21.0 Omega Release | Nvidia SHIELD TV Pro (2019) | DENON AVR X-4400H

  • Ich habe ja gesagt...lass mich mal ne Nacht drüber schlafen:

    https://github.com/xbmc/xbmc/blob…enu.xml#L25-L29

    Dieser Bereich führt vom Skin her nachher den Shutdown aus Shutdown()

    Das kann man ja entsprechend ersetzen und anstelle dessen ein Script triggern. Das kann dann entweder ein Shellscript sein, welches den kodi-send.... ausführt und somit die Bibliothek exportiert und dann im nachhinein auch das System runter fährt: shutdown -h now

    Falls du Estuary als Skin verwendest ist das nicht so ganz leicht zu bearbeiten. Dafür müsstest du dir den bestehenden Skin an eine andere Stelle kopieren, die Skin-ID etc. ändern und den "neuen Mod" dann entsprechend als Skin verwenden.

    Vielleicht kann @sualfred auch noch einen heißen Tip geben was bei einem "onclick" noch so alles möglich ist und ob man Kommandos kombinieren kann. Sowas wie <onclick>exportlibrary(video,true,false,true,false) + Shutodwn()</onclick> und ob dann erst die Bibliothek komplett exportiert wird bevor der Shutdown ausgeführt wird.

    Ist ein wenig "hacky", aber sollte eigentlich klappen.

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

  • wenn dann geht nur:
    <onlick>Action1</onclick>
    <onlick>Action2</onclick>

    Und die werden dann direkt nacheinander ausgeführt.
    Ob der Kodi Core mit dem Shutdown dann wartet, bis diese Aktion abgeschlossen ist, kann ich nicht sagen.

    Ist nicht genau das hier sowas was du eigetnlich brauchst?
    https://kodi.wiki/view/Add-on:WatchedList

    "I don't caretaker"

    SKIN: Embuary - Donate: HIER de Hoibe bestellen, merci :thumbup:

    Devices: Nvidia Shield + Fire TV 4k --- NAS: i3 6100 | 8GB | 15tb | OMV4 | Emby --- TV: Sony 55" XF9005 + LG 47" LM640S | 114x Adalight | Yamaha 683

  • Python
    import xbmc
    
    
    xbmc.executebuiltin('(exportlibrary(video,true,false,true,false)')

    https://kodi.wiki/view/Autoexec.py


    Traceback (most recent call last):
    File "autoexec.py", line 1, in <module>
    import xbmc
    ImportError: No module named xbmc

    Das scheint es irgendwie wie aktuellen nightly milhouse build von librelec 9.0 nicht mehr zu geben.

    Ich hab einfach mal das probiert

    Python
    import kodi
    kodi.executebuiltin('(exportlibrary(video,true,false,true,false)')

    Da geht zwar der Import, aber der zweite Befehl geht dann nicht:

    Traceback (most recent call last):
    File "autoexec.py", line 2, in <module>
    kodi.executebuiltin('(exportlibrary(video,true,false,true,false)')

    AttributeError: 'module' object has no attribute 'executebuiltin'

    KODI 21.0 Omega Release | Nvidia SHIELD TV Pro (2019) | DENON AVR X-4400H

  • Also eigentlich sollte das mit "import xbmc" ohne weiteres funktieren.

    In welchem Ordner hast du die autoexec.py erstellt?

    Bitte daran denken, dass du das Script nicht von der Kommandozeile her aufrufen kannst. Es wird von Kodi automatisch beim Start von Kodi ausgeführt.

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

  • Bash
    HTPC:~ # cat .kodi/userdata/autoexec.py 
    import xbmc
    xbmc.executebuiltin('(exportlibrary(video,true,false,true,false)')
    
    
    HTPC:~ # python .kodi/userdata/autoexec.py 
    Traceback (most recent call last):
      File ".kodi/userdata/autoexec.py", line 1, in <module>
        import xbmc
    ImportError: No module named xbmc

    Beim KODI Start passiert nichts..
    Mit meinem Umweg über kodi-send geht es

    KODI 21.0 Omega Release | Nvidia SHIELD TV Pro (2019) | DENON AVR X-4400H

    Einmal editiert, zuletzt von pipsen (20. September 2018 um 16:17)

  • Wie gesagt, du kannst das Script nicht per Kommandozeile aufrufen. Das geht so nicht.


    Beim KODI Start passiert nichts..

    Das ganze wird im Hintergrund passieren. Du musst mal ins Kodi [definition='1','0']log[/definition] schauen oder dir mal die NFO Dateien anschauen, ob die einen neuen Zeitstempel bekommen haben. Wenn nicht, dann aktiviere in LibreELEC mal "Wait for network" wenn deine Daten auf einem NAS liegen. Vielleicht kann Kodi noch keine Daten auf das NAS schreiben, wenn da Script ausgeführt wird

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

  • 1. kein [definition='1','4']Debuglog[/definition]:

    16:40:35.104 T:140027046848640 NOTICE: Disabled [definition=12,0]debug[/definition] [definition=12,9]logging[/definition] due to GUI setting. Level 0.

    2. es steht was im Log:

    16:40:38.358 T:140026109216512 WARNING: SplitParams(exportlibrary(video,true,false,true,false) - end of string while searching for ) or "


    3. ich habe einen Schreibfehler :D


    Versuche:

    Python
    import xbmc
    xbmc.executebuiltin('exportlibrary(video,true,false,true,false)')

    Es war eine ( zu viel

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

  • Mein Gott.. ich habs mir leider nicht genau angeschaut, das hätte ich auch selbst sehen können. Also jetzt gehts :)

    Gibts eine Möglichkeit das "silent" zu machen, dass man das in der GUI nicht sieht?

    KODI 21.0 Omega Release | Nvidia SHIELD TV Pro (2019) | DENON AVR X-4400H

  • Nein

    Nur ein Datenbank-Update kann man "silent" machen.

    Man könnte ein setting hinzufügen und/oder ein wenig am Core-Code basteln. Beides hätte aber zur Folge, dass du LibreELEC selbst danach komplieren müsstest.

    Von daher muss ich dich in dem Fall enttäuschen.

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

Jetzt mitmachen!

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