diff --git a/.gitignore b/.gitignore index f2714c4..10d94e5 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ *.webm *.mkv test_svg -test_png \ No newline at end of file +test_png +draw.sqlite +.env \ No newline at end of file diff --git a/common.sh b/common.sh index cabe5fa..3b8bbc8 100644 --- a/common.sh +++ b/common.sh @@ -22,6 +22,10 @@ hashStr () { echo -n "${1}" | sha256sum | awk '{print $1}' } +hashFile () { + sha256sum "${1}" | awk '{print $1}' +} + uuid () { uuidgen | tr "[:upper:]" "[:lower:]" } @@ -38,15 +42,6 @@ askContinue () { fi } -log () { - read loglines - file=$(echo "${loglines}" | grep 'FILE:' | awk -F'FILE:' '{print $2}') - drawn=$(echo "${loglines}" | grep 'Length of path drawn' | awk -F': ' '{print $2}' | awk '{print $1}') - moved=$(echo "${loglines}" | grep 'Total distance moved' | awk -F': ' '{print $2}' | awk '{print $1}') - #echo "${loglines}" - echo "$file,$drawn,$moved" -} - axdraw () { file=$(realpath "${1}") echo "FILE:${file}" diff --git a/draw.sh b/draw.sh index 7580c93..10db5d5 100644 --- a/draw.sh +++ b/draw.sh @@ -15,6 +15,8 @@ if [[ "${1}" == "" ]]; then exit 1 fi +dbSetup + FRAMES=$(realpath "${1}")/ END=-1 @@ -48,6 +50,7 @@ for svg in "${FRAMES}"*.svg ; do i=$((i+1)) continue fi + filename=`basename "${svg}"` name=`echo "${filename}" | cut -d'.' -f1` num=`echo "${name}" | awk -F'_' '{print $(NF)}'` @@ -57,7 +60,7 @@ for svg in "${FRAMES}"*.svg ; do number=`mktemp`.svg node ./numbers/ -n "${num}" -o "${number}" ax "${number}" - ax "${svg}" + axdraw "${svg}" | bash ./log.sh rm -f "${number}" bash position.sh reset diff --git a/log.sh b/log.sh new file mode 100644 index 0000000..a9d2094 --- /dev/null +++ b/log.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +source ./common.sh + +loglines="$(cat /dev/stdin)" +id=$(uuid) +file=$(echo "${loglines}" | grep 'FILE:' | awk -F'FILE:' '{print $2}') +starttime=$(echo "${loglines}" | grep 'START:' | awk -F':' '{print $2}') +endtime=$(echo "${loglines}" | grep 'END:' | awk -F':' '{print $2}') +pen=$(echo "${loglines}" | grep 'PEN:' | awk -F':' '{print $2}') +drawn=$(echo "${loglines}" | grep 'Length of path drawn' | awk -F':' '{print $2}' | awk '{print $1}') +moved=$(echo "${loglines}" | grep 'Total distance moved' | awk -F':' '{print $2}' | awk '{print $1}') +hash=$(hashFile "${file}") +info=$(svginfo "${file}") +paths=$(echo "$info" | grep -m 1 'number of paths' | awk -F': ' '{print $2}') +total=$(echo "$info" | grep 'total path length' | awk -F': ' '{print $2}') +ratio=$(echo "$info" | grep 'pen move ratio' | awk -F': ' '{print $2}') +bboxclean=$(echo "$info" | grep 'bbox' | awk -F ')' '{print $1}' | awk -F'(' '{print $2}') +xmin=$(echo "$bboxclean" | awk -F', ' '{print $1}') +xmax=$(echo "$bboxclean" | awk -F', ' '{print $2}') +ymin=$(echo "$bboxclean" | awk -F', ' '{print $3}') +ymax=$(echo "$bboxclean" | awk -F', ' '{print $4}') + +if [[ "${pen}" != "" ]]; then + pen="'${pen}'" +else + pen=null +fi + +query="INSERT OR IGNORE INTO svg (id, file, drawn, moved, starttime, endtime, pen, hash, paths, total, ratio, xmin, xmax, ymin, ymax) VALUES (\ + '$id', \ + '$file',\ + $drawn,\ + $moved,\ + $starttime,\ + $endtime,\ + $pen,\ + '$hash',\ + $paths,\ + $total,\ + $ratio,\ + $xmin,\ + $xmax,\ + $ymin,\ + $ymax +);" + +db "${query}" + +echo "${loglines}" \ No newline at end of file diff --git a/sql/setup.sql b/sql/setup.sql index e192fa0..181facf 100644 --- a/sql/setup.sql +++ b/sql/setup.sql @@ -5,5 +5,13 @@ CREATE TABLE IF NOT EXISTS svg ( endtime INTEGER, drawn REAL, moved REAL, - pen TEXT + paths INTEGER, + total REAL, + ratio REAL, + xmin REAL, + xmax REAL, + ymin REAL, + ymax REAL, + pen TEXT, + hash TEXT ); \ No newline at end of file