Jq stuff

From SoftwareGuy
Jump to navigation Jump to search

Using jq

Parsing

Command to return the id number of the last scan:

cnt=$(jq '.lastVehicleRecord.scans | length' heartbeat)

Fancy way to find the scanId of a selected system via bash and jq

if [ -z $1 ]; then whichIE="uvx"; else whichIE=$1; fi
printf ".lastVehicleRecord.scans[] | select(.type | endswith(\""$whichIE"\"))\n" > parms.jq

wget -qO heartbeat http://$ip/heartbeat
cnt=$(jq '.lastVehicleRecord.scans | length' heartbeat)

id=$(jq -f parms.jq heartbeat | jq '.id')
if [ ! -z $id ]; then
    wget -qO $id.orig.tiff http://$ip/requestImage/?scanId=$id
fi

More interesting jq examples:

"plateCoordinates":[898, 210, 144, 44] "plateCoordinatesRelative":[898, 210, 144, 44],

jq ".plateCoordinates | .[1]" upload_test/2023-05-12_12:08:07.txt

Tiff info parsing

Parsing examples of .tiff files extracing meta data from the headers.

tiffinfo 2023-05-07\ 13_57_17_evx_left_3845.tiff | grep 65001 | sed 's/  Tag 65001: //' | sed 's/\\//'g | jq

tiffinfo 2023-05-07\ 13_57_17_evx_left_3845.tiff | grep 65001 | sed 's/  Tag 65001: //' | sed 's/\\//'g | jq '.timestamp'

tiffinfo 2023-05-07\ 13_57_17_evx_left_3845.tiff | grep 65001 | sed 's/  Tag 65001: //' | sed 's/\\//'g | jq '.renderData.type'

Remove stderr from stream

tiffinfo 189.tiff 2>/dev/null | grep 65001 | sed 's/  Tag 65001: //' | sed 's/\\//'g | jq '.renderData.type'

LPR parsing (Axis P1455)

The camera should be set to "save full frame".

Parsing the json from the axis camera:

jq ".ImageArray[0].BinaryImage" /home4/Events/upload_test/2023-06-15_15:27:01.txt > image.b64

Next remove the quotes in the image.b64 file, or:

jq --raw-output ".ImageArray[0].BinaryImage" /home4/Events/upload_test/2023-06-15_15:27:01.txt > image.b64

Then:

base64 -d image.b64 > image.jpg

Now to get the lpr image:

jq ".imagesURI[0]"  /home4/Events/upload_test/2023-06-15_15:27:01.txt

then use that url to pull the license plate image. You may have to trim the returned url to just include "getImage&name=3", not the full url...

Alternatively you could just grab the plate coordinates from the json and clip the image, presumably.

jq ".plateCoordinates"  /home4/Events/upload_test/2023-06-15_15:27:01.txt

Service Log parsing

As of July 25, 2023, the services logs have issues with quotes and backslashes.

Basic parsing of the log is done like this:

jq ".[0].message" getServiceLogs.json

provides just the first message element.

I edit the file and remove the quote around the contents of the "message" element. (in emacs macro search for message, space forward to the starting quote, now search for }" then search for dateLong and end macro. Next I am removing the /, both of these in emacs.