Bestimmtes KODI-Profil per Batch starten

  • Hallo Community,

    kann ich ein bestimmtes Profil in KODI per Batchdatei starten?
    Normalerweise startet bei mir immer das JUNIOR-Profil, weil meine Kids direkt Zugriff haben sollen.

    Am späten Abend würde ich aber gerne das SENIOR-Profil direkt starten, ohne über das andere Profil zu müssen (schnellerer Start).
    Kann ich daher eine Verknüpfung anlegen, der ich als Parameter gleich noch das Profil mitgebe?


    Gruß diddi

    Das Leben ist zu kurz für RTL II (WG)

  • oooh....das klingt nach Spaß und ich glaube ich habe mein erstes Projekt für ein eigenes Add-on gefunden.

    Wenn du Geduld hast, würde ich mir das mal anschauen. Es gibt auf jeden Fall die Möglichkeit direkt aus dem bestehenden Profil ein Add-on aufzurufen, was per Tastendruck direkt das andere (ein anderes) Profil startet.

    Kann natürlich sein, dass es bei mir zu lange dauert und mir jemand zuvor kommt, aber ich werde mich auf jeden Fall drum kümmern.

    Edit:

    Wobei das ja auch nicht das ist, was du möchtest. Du müsstest dafür zuerst das Kids Profil starten (was ja von Haus aus startet) und dann das Add-on starten. Dieses würde dir ggf eine Liste aller verfügbaren Profile geben aus denen du dann das entsprechende auswählen würdest.

    Man könnte auch eine autoexec.py verwenden und diese nach der aktuellen Uhrzeit checken lassen. Wenn es vor 20 Uhr ist, dann starte das Kids Profil, wenn es nach 20 Uhr ist, starte das Erwachsenen-Profil. Das wäre sogar recht schnell möglich.

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

    Einmal editiert, zuletzt von DaVu (9. Januar 2018 um 07:38)

  • eine entsprechende autoexec.py könnte ggf. so aussehen:

    ACHTUNG: Der Code funktioniert so nicht!!

    Beim obigen Beispiel wir die lokale Zeit erstellt und in der Variable "time_now" gespeichert. Das ganze wird in einer Art Tabelle gespeichtert (ein sogenanten "Touple"). Um gewisse Bereiche dieser Tabelle erreichen zu können brauchen wir die komischen [3] und [4], die sich mit den entsprechenden Daten aus 'time.localtime()' ergeben. Das findet in einer bestimmten Struktur statt, die ich hier nicht weiter erläutern möchte um es nicht unnötig kompliziert zu machen.

    Immer wenn du Kodi startest, wird die autoexec.py ausgeführt. Das heißt in der "time_now" Variable wird die aktuelle Zeit als Touple gespeichert. Dann machen wir nichts anderes als Zahlen vergleichen:

    In der Variable "hour_now" speichern wir die Zahl der aktuellen Stunde aus dem Touple, die an Position 3 steht und in der Variablen "minute_now" die aktuelle Zahl der Minute, die an Position 4 in dem Touple steht.

    Wenn Stunde kleiner als 20 (also von 0 - 19) und!!!! Minute kleiner als 30 (also 0 - 29) dann starte das Kids Profil. Beide Bedingungen müssen zutreffen, damit der nachfolgende Befehl ausgeführt wird. Ansonsten geht es mit "elif" weiter.

    Das wäre der Fall, wenn deine Kids spätestens bis 19:29 Uhr im Bett sein müssen ;)

    Alles nach dieser Uhrzeit startet das Erwachsenen-Profil.

    Das einzige, was du noch anpassen musst, ist der Name des Profils, welches bei dir natürlich völlig anders heißen kann.

    Man könnte auch eine Abfrage nach einer entsprechenden Uhrzeit machen und dann aufgrund der Abfrage entscheiden, welches Profil gestartet werden soll.... á la:

    Wenn nach 19:30, dann starte Abfrage (z. B. eine Liste aller verfügbaren Profile)....wenn Abfrage mit "k" (für Kids) beantwortet wird, dann starte Kids, wenn "a" dann Adult. Diese Abfrage kann man auch so steuern, dass sie erst ab einer gewissen Uhrzeit kommt und vorher immer direkt das Kids Profil gestartet wird. Du brauchst auch keine Tastatur dafür. Man kann das ganze über einen Dialog machen, den du mit der Fernbedienung auswählen kannst...

    Je nachdem, wie du es brauchst.

    Immer noch nicht ganz das, was du genau gesucht hast, aber vielleicht ein brauchbarer Workaround.

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

    3 Mal editiert, zuletzt von DaVu (9. Januar 2018 um 18:46)

  • Dank an @ClaudiaF für den netten Hinweis, das meine Logik oben (gelinde gesagt) unsinn ist, habe ich mir das nochmal angesehen und sogar noch was eleganteres gefunden:

    Code
    import time
    import xbmc
    time_now = time.strftime('%H:%M') 
    start_adult_time = '19:30' 
    if time_now < start_adult_time: 
      xbmc.executebuiltin('LoadProfile(Kids)') 
    else:
      xbmc.executebuiltin('LoadProfile(Kids)')


    Viel weniger code und (soweit ich das beurteilen kann) ein zuverlässiges Ergebnis. Das erste Beispiel oben hätte bei Zeiten wie 18:45 oder 20:15 fehl geschlagen. Ich habe verschiedene Szenarien durchgespielt und so sollte es nun passen.

    Ich lasse das obige dennoch stehen, schreibe aber dazu, dass es blödsinn ist ;)

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

  • Hallo DaVu,

    finde ich irre, dass Du Dich so meines Problems annimmst. Herzlichen Dank dafür.
    Kannst Du mir noch sagen, wohin ich diese autoexec.py speichern müsste, damit diese abgefragt wird?

    Dann könnte ich mich sofort ans testen machen ... ;)


    Gruß diddi

    Das Leben ist zu kurz für RTL II (WG)

  • @diddi8

    Du musst nur eines Bedanken. Die Kids-Zeit wäre dann von 00:00 bis 19:30. Das heißt, wenn du um 01:00 Kodi startest (oder irgendwann nach 23:59), dann startet sich automatisch das Kids-Profil. Man könnte jetzt noch sowas wie:

    Code
    if time_now > '09:00' and time_now < start_adult_time:
      xbmc.executebuiltin('LoadProfile(Kids)')
    else:
      xbmc.executebuiltin('LoadProfile(Adult)')


    Dann würde sich zwischen 9 Uhr und 19:30 immer das Kids Profil starten. Je nachdem, wann deine Kids halt Kodi benutzen können.

    Sicher ist das nicht und wenn du es ganz sicher machen möchtest, dann verwendest du noch ein Passwort für das Adult Profil. Das Passwort musst du aber manuell eingeben. Dafür muss dann auch für das Adult-Profil das Laden so aussehen:

    Code
    if time_now > '09:00' and time_now < start_adult_time:
      xbmc.executebuiltin('LoadProfile(Kids)')
    else:
      xbmc.executebuiltin('LoadProfile(Adult, prompt)')

    das prompt muss hinzugefügt werden, wenn eine Passwortabfrage erfolgen soll (also sich ein Dialog mit der Eingabe des Passwortes öffnet). Fehlt das, kommt der Dialog nicht und du kannst dich nicht einloggen.

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

  • Also folgendes Problem:

    In KODI habe ich hinterlegt, dass standardmäßig das Kids-Profil starten soll. Wenn ich das das Senior-Profil starten will, habe ich ein Tastenkürzel auf meine FB gelegt, die mich nach dem Passwort für das Senior-Profil fragt und schaltet dann um.

    Wenn ich nun die autoexec.py in den Userfolder lege, dann startet trotzdem ganz normal das Kids-Profil. Und wenn ich dann umschalte, dann kommt die PW-Abfrage in einer Art Dauerschleife.
    Nun bin ich hergegangen und habe KODI gesagt, er soll das Senior-Profil standardmäßig starten. Dann kommt nach dem Start auch die PW-Abfrage, aber eben auch in einer Dauerschleife.

    Wie kann ich diese Dauerschleife umgehen?

    Das Leben ist zu kurz für RTL II (WG)

  • Jetzt bin ich hergangen und habe die autoexec.py ins Junior-Profil kopiert, da dieses als erstes gezogen wird.
    Nach dem Start von KODI im Junior-Profil kommt nun die Passwort-Abfrage und ich komme ins Senior-Profil.

    Wenn ich die Zeit aber so ändere, dass er eigentlich im Junior-Profil sein müsste, dann kommt hier wieder eine Dauerschleife, d.h. KODI möchte dauernd das Junior-Profil neu laden.

    Was muss ich im System verschlüsseln, damit KODI rein das Profil startet, welches im die autoexec.py vorgibt?

    Das Leben ist zu kurz für RTL II (WG)

  • Das einzige, was ich mir vorstellen könnte ist, dass er die autoexec.py nach der eingabe des Passworts startet und somit in die Schleife kommt. Mal schauen, wie man das unterbindet.

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

  • Mögliche Ansätze wenn nur 2 Profile benutzt werden.

    1.)
    Eines als default setzen unter Settings->Profiles

    und das andere über das Skript starten wenn die Voraussetzungen geschaffen sind.

    Wichtig ist nur, dass nur das Profile das default ist auch eine autoexec.py hat und eben in dieser nur das andere Profile geladen werden kann.

    2. )
    Über __file__ ermitteln welches autoexec.py gerade ausgeführt wird und dementsprechend handeln.

    Cheers
    Claudia

  • So...manchmal sieht man den Wald vor lauter Bäumen nicht....

    Also so wie Claudia es schon sagte:

    - Kids-Profil als default start-profil setzen (das Kids Profil muss dabei das zusätzlich angelegte sein!!)
    - Adult Profil (das Profil, welches von Haus aus schon gestand) mit Passwort sichern

    Dann die folgende autoexec.py in den Ordner des Kids Profils einfügen...
    unter Windows ist das: %appdata%\Kodi\userdata\profiles\<profil_name>
    unter Ubuntu: ~/.kodi/userdata/profiles/<profil_name>
    unter LibreELEC: /storage/.kodi/userdata/profiles/<profil_name>

    Python
    import time
    import xbmc
    time_now = time.strftime('%H:%M') 
    start_adult_time = '20:30' 
    if time_now > '09:00' and time_now < start_adult_time:
    	quit()
    else:
    	xbmc.executebuiltin('LoadProfile(adult, prompt)', True)

    Somit startet Kodi bei jedem Start das Kids Profil und anhand der autoexec.py checkt es ob es zwischen 09:00 und 20:30 Uhr ist. Wenn das der Fall, dann mach nichts (quit() und wenn das nicht der Fall ist (also alles vor 09:00 und nach 20:30), dann lade das adult-profil, welches ja mit Passwort geschützt ist.

    Das Adult profil braucht in dem Fall keine autoexec.py. Es ist 1. durch ein passwort geschützt und 2. startet es sich auch nur in einer gewissen Zeit automatisch.

    Vorteil: Wenn die Kids außer Haus sind, kann ich als Erwachsener manuell in das Adult-Profil wechseln und brauche mich da auch nicht mehr um eine gewisse Zeit kümmern. Beim nächsten Start startet ja ohnehin das Kids Profil.

    Ich hatte im letzten Posting ganz wild mit InfoLabels rumgespielt um zu checken, welches Profil gerade gestartet wird und dann entsprechend zu handeln. Dann mit Funktionen gearbeitet, die entsprechend aufgerufen werden etc... alles gar nicht nötig meiner Meinung nach. Denn wenn ich in beiden Profilordnern eine autoexex.py habe, die nach Zeiten checken und dann automatisch das Profil wechseln, kann ich in einer gewissen Zeit nicht mehr in manuell in das andere Profil wechseln.

    ----------------------------------------------------------------------------------------------------
    So sah der andere Quark aus, den ich vorher geschrieben habe:

    Achtung, nur bei interesse lesen...nicht verwirren lassen. Ist nur ein Beispiel:

    Bei diese Konstellation hatte ich in Kodi eingestellt, dass das zuletzt geladene Profil wieder gestartet werden soll und die autoexec.py checkt welches Profil das ist, und dann entsprechend handelt.


    Diese autoexec.py hatte ich in beide Profi-Ordner eingefügt und das funktionierte grundsätzlich auch. Problem war halt, dass ich in der Zeit von 09:00 bis 20:30 nicht manuell in das Adult profil gelangt bin, da auch dort diese autoexec geladen wurde und ich wieder zurück ins kids-profil gelangt bin. Wieder eine Schleife ;) .

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

  • Hallo DaVu,

    wow, das ist ja mal so richtig klasse. Vielen herzlichen Dank für diese Lösung und vor allem für die Zeit, die Du hineingesteckt hast.
    Die Zeit hab ich von 9:00 bis 20:00 Uhr eingeschränkt, danach gehören die Kids einfach ins Bett ... ;)

    Gruß diddi

    Das Leben ist zu kurz für RTL II (WG)

Jetzt mitmachen!

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