Kodi / JSON / curl / Wie exportiere ich korrekt?

  • Vielleicht hat irgendwer eine Idee wie ich das Exportieren mit Windows und curl hinbekomme, die Syntax macht mir etwas zum schaffen.

    Clean und Update funktioniert so:

    Code
    curl.exe -i -X POST -d "{\"jsonrpc\": \"2.0\", \"method\": \"VideoLibrary.Clean\", \"id\": \"mybash\"}" -H "content-type:application/json" http://kodi:@localhost:8080/jsonrpc
    curl.exe -i -X POST -d "{\"jsonrpc\": \"2.0\", \"method\": \"VideoLibrary.Scan\", \"id\": \"mybash\"}" -H "content-type:application/json" http://kodi:@localhost:8080/jsonrpc

    Für exportieren müsste ich irgendwie die Parameter reinbekommen:

    Code
    curl.exe -i -X POST -d "{\"jsonrpc\": \"2.0\", \"method\": \"VideoLibrary.Export\", \"id\": \"mybash\"}", ??????????????????  -H "Content-Type: application/json" http://kodi:@localhost:8080/jsonrpc
    
    
    Das habe ich als denkansatz gefunden, nur wie bekomme ich es mit der korrekten Syntax oben rein?
    { "jsonrpc": "2.0", "method": "VideoLibrary.Export", "params": { "options": { "overwrite": false, "actorthumbs": false, "images": true} }, "id": 1 }

    Vielleicht weis wer wie es korrekt funktioniert

  • curl.exe -i -X POST -d "{\"jsonrpc\": \"2.0\", \"method\": \"VideoLibrary.Export\", \"params\": { \"options\": { \"overwrite\": false, \"actorthumbs\":true, \"images\":true } }, \"id\": \"mybash\"}" -H "Content-Type: application/json" http://kodi:@localhost:8080/jsonrpc
    wäre meine Idee.

    --------------
    Guides nicht mehr verfügbar wegen Youtube unvermögen guten von schlechten Kodi Videos zu unterscheiden.

    Einmal editiert, zuletzt von SkyBird1980 (12. Januar 2019 um 18:20)

  • Bash
    curl -i -X POST -d "{\"jsonrpc\": \"2.0\", \"method\": \"VideoLibrary.Export\", \"params\": {\"options\": {\"overwrite\": true, \"actorthumbs\":true, \"images\":true } }, \"id\": 1 }" -H "content-type:application/json" http://name:pw@192.168.178.99:8080/jsonrpc > NUL 2>&1

    Das habe ich bei mir gerade ausprobiert und es funktionierte. Bei @SkyBird1980 fehlte nur ein Escape vorm Anführungszeichen bei params.

  • S P I T Z E @steff, hilft mir richtig weiter :thumbup: :thumbup: :thumbup:
    Kodi Exportiert schon !

    Weist du zufällig auch das bedeutet:

    Code
    > NUL 2>&1

    Edit:
    Wenn ich die Parameter auf false setze werden alle Parameter trotzdem mit true genommen, vielleicht hat da die aktuelle kodi18 RC5 ein Problem. hm...
    Er legt z.b. immer die actors an.

  • Weist du zufällig auch das bedeutet:

    Code
    > NUL 2>&1

    Meldungen der Ausgabe und Fehlermeldungen gehen ins Nirvana (NUL) anstatt auf die Konsole.

    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

  • > = ein redirekt

    Wenn du zum Beispiel dem Computer ein Kommando übergibst: "Zeige mir den Inhalt eines Ordners"
    Dann wird dir der Ordner gelistet ("dir" in Windows und "ls" in Linux). Jetzt möchtest du den Kram, der dort steht aber in einer Datei haben...

    dir > ausgabte.txt

    Somit dient der ">" als Umlenkung für die Ausgabe nicht auf deinen Bildschirm sondern in dem Fall in die Datei "ausgabe.txt"

    2>&1 :

    Das ist ein wenig trickreicher ;). Die Standardausgabe (stdout), also wenn ein Kommando korrekt ausgeführt wurde, ist 1 oder &1.

    Die Fehlerausgabe (stderr), also wenn ein Fehler bei der Ausführung eines Kommandos auftrit, ist 2

    In dem Fall 2>&1 möchtest du alle Ausgaben nach "stdout" umleiten und somit alles auf deinem Bildschirm sehen. Das ist ohnehin Standard. Wenn du per Kommandozeile versuchst eine Datei zu löschen, die es nicht gibt, bekommst du eine Fehlermeldung:


    Code
    davu@davu-Laptop-E-series:~$ rm 1.txt
    rm: das Entfernen von '1.txt' ist nicht möglich: Datei oder Verzeichnis nicht gefunden
    davu@davu-Laptop-E-series:~$


    Die Datei 1.txt existiert bei mir nicht.

    So...jetzt nervt mich aber diese Fehlermeldung und ich möchte sie nicht sehen. Da kommt dann NUL ins Spiel. "Nul" ist das Datengrab bei Windows (bei Linux ist es "/dev/null"). Da kannst du alles reinwwerfen, was du nicht brauchst. Jegliche Information wird direkt verworfen und nirgendwo gespeichert. Möchte ich also diese komische Fehlermeldung nicht sehen, gehe ich wie folgt vor:

    Code
    davu@davu-Laptop-E-series:~$ rm 1.txt 2>/dev/null 
    davu@davu-Laptop-E-series:~$

    Zack, und schon habe ich keine Rückmeldung mehr. Ich weiß aber auch nicht, ob die Datei nun gelöscht worden ist, oder ob es sie nicht gegeben hat. Üblicherweise lässt man sich eher die Fehlermeldungen anzeigen, anstelle die Bestätigungen. Denn man möchte ja über einen Fehler informiert werden.

    Möchte ich eine korrekte Ausgabe nicht sehen (da ich ja davon ausgehe, dass mein Script korrekt läuft und mich alles was stimmt vielleicht nicht interessiert):

    Code
    davu@davu-Laptop-E-series:~/testing$ ls
    LE
    davu@davu-Laptop-E-series:~/testing$

    Da lasse ich mir den Ordner "LE" anzeigen ^^

    Code
    davu@davu-Laptop-E-series:~/testing$ ls 1>/dev/null 
    davu@davu-Laptop-E-series:~/testing$


    Da leite ich die Standardausgabe ins Datengrab um ^^.

    Code
    davu@davu-Laptop-E-series:~/testing$ ls 2>/dev/null 
    LE
    davu@davu-Laptop-E-series:~/testing$

    Da habe ich versucht die Fehlerausgabe nach /dev/null zu leiten. Da der Befehl aber keine Fehlerausgabe macht, wird in dem Fall auch nichts umgeleitet. Und da die Ausgabe auf "1" (stdout) erfolgt, wird es mir auch angezeigt.

    Jetzt direkt zur Verwendung von > NUL 2>&1
    Die Standardausgabe (stdout) des oben genannten Befehls sollte eigentlich keine auf dem Bildschirm sein (kann sein, dass ich mich da irre). . Wenn aber doch, dann wird das nach NUL geworfen (> NUL). Das ist der erste Teil.

    Die Fehlerausgabe (stderr) wird in dem Fall auf die Standardausgabe (stdout) umgeleitet (2>&1) und verschwindet dann auch im Datengrab.

    Ich hoffe es ist verständlich. Manchmal schweife ich zu weit aus ;)

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

    Einmal editiert, zuletzt von DaVu (12. Januar 2019 um 16:47)

  • Ohne Optionen exportieren funktioniert auch:

    Code
    curl.exe -i -X POST -d "{\"jsonrpc\": \"2.0\", \"method\": \"VideoLibrary.Export\", \"id\": 1 }" -H "content-type:application/json" http://kodi:@localhost:8080/jsonrpc > NUL 2>&1

    Nur mit Images fehlt mir noch und eben overwrite und ohen actors.

  • Die Frage ist ob man nicht die Klammern auch noch escaped.
    Versuch mal das hier:
    curl.exe -i -X POST -d "\{\"jsonrpc\": \"2.0\", \"method\": \"VideoLibrary.Export\", \"params\": \{ \"options\": \{ \"overwrite\":\"false\", \"actorthumbs\":\"true\", \"images\":\"true\" \} \}, \"id\": \"mybash\"\}" -H "Content-Type: application/json" http://kodi:@localhost:8080/jsonrpc

    --------------
    Guides nicht mehr verfügbar wegen Youtube unvermögen guten von schlechten Kodi Videos zu unterscheiden.

  • Öh, darf ich mich da mit einer Frage dran hängen?

    Ich Spiele ein Video aus einem Win Programm (c#) mit Player.open ab (http POST) und will einfach das nächste in die Playlist dran hängen. Mit Playlist.add oder .insert kommt immer Parse error zurück, egal welche Playlist oder player Id ich übergebe. Die Doku ist ja sehr sparsam...

    string = "{ \"jsonrpc\":\"2.0\",\"method\":\"Player.Open\",\"params\":{ \"item\":{ \"file\":\"" + VIDEOFILE + "\"} },\"id\":0}"; //das funktioniert

    Muss ich irgendwas vorher machen wie playlist id auslesen oder Item nummer? Stehe im Moment im Wald.

    Danke!

    Up: Fehler gefunden, eine Klammer war im String falsch gesetzt.

Jetzt mitmachen!

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