Dateiname extrahieren

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ein API-Aufruf von Octoprint ergibt folgendes:

    {
     "job": {
       "averagePrintTime": null,
       "estimatedPrintTime": 9364.910044412876,
       "filament": {
         "tool0": {
           "length": 5443.96533203125,
           "volume": 13.094271143466216
         }
       },
       "file": {
         "date": 1729753992,
         "display": "Datei.gcode",
         "name": "Datei.gcode",
         "origin": "local",
         "path": "Datei.gcode",
         "size": 6676640
       },
       "lastPrintTime": null,
       "user": "pi"
     },
     "progress": {
       "completion": 28.97861798749071,
       "filepos": 1934798,
       "printTime": 2907,
       "printTimeLeft": 6381,
       "printTimeLeftOrigin": "genius"
     },
     "state": "Printing"
    }

    Ich versuche nun die Ausgabe nur auf den Dateinamen (Datei.gcode) zu beschränken aber alle meine Versuche mit Grep und Cut sind kläglich gescheitert. Es wäre super wenn mir jemand helfen könnte. Besten Dank vorab.

  • Go to Best Answer
  • Hallo, danke erst mal. Jetzt habe ich gedacht , die php-Lösung wäre das einfachste, aber ich bekomme nur einen Synthax-Fehler.

    Wenn ich versuche folgendes aufzurufen:

    curl -s '-X  GET  -H "Content-Type: application/json" -H "X-Api-Key":"4111"   http://192.168.x.x/api/connection' | 
    php -r '$v = ""; while($l = fgets(STDIN)) $v .= $l; $v = json_decode($v); echo $v->job->file->name;'

    bekomme ich folgende Meldung:

    curl: no URL specified!
    curl: try 'curl --help' or 'curl --manual' for more information
    PHP Notice:  Trying to get property 'job' of non-object in Command line code on line 1
    PHP Notice:  Trying to get property 'file' of non-object in Command line code on line 1
    PHP Notice:  Trying to get property 'name' of non-object in Command line code on line 1

    Wahrscheinlich stimm mein Aufruf schon nicht. Eine URL wird ja übergeben (mit richtiger IP)

    Der API-Befehl lautet so:

    curl -s -X GET  -H "Content-Type: application/json" -H "X-Api-Key":"4111"   http://192.168.x.x/api/connection > api.txt

    Das Ergebnis steht dann in der api.txt

    Jetzt wollte ich noch jq probieren aber das war auch nichts. Ich möchte doch nur, das in der api.txt nur der Dateiname steht :?:

  • bricewullis October 24, 2024 at 12:56 PM

    Selected a post as the best answer.
  • Hochkommas :)

    Falsch:

    Bash
    curl -s ' -X GET  -H "Content-Type: application/json" -H "X-Api-Key":"4111"   http://192.168.x.x/api/connection' |
    jq --raw-output .job.file.path

    Richtig:

    Bash
    curl -s -X GET -H 'Content-Type: application/json' -H 'X-Api-Key: 4111' 'http://192.168.x.x/api/connection' |
    jq --raw-output .job.file.path

    Edited 2 times, last by KKoPi (October 24, 2024 at 2:21 PM).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!