#!/bin/bash ## # Import your sport activities from tapiriik.com to cartoco.com. # # Prerequisistes: # - rclone # - curl # - jq # - xsqlproc # # @copyright 2021, Steffen Vogel # @license http://www.gnu.org/licenses/gpl.txt GNU Public License # @author Steffen Vogel # @link https://www.steffenvogel.de ## CARTODB_API_KEY=$(pass apis/cartodb) CARTODB_USER=stv0g CARTODB_EP="https://${CARTODB_USER}.carto.com/api/v2/sql?api_key=${CARTODB_API_KEY}" TCXDIR=~/Tracks STYLESHEET=$(mktemp) JQFILTER=$(mktemp) cat << EOF > ${JQFILTER} if has("error") then "Error: " + .error[0] else "Success: Rows added: " + (.total_rows|tostring) end EOF cat << EOF > ${STYLESHEET} q=INSERT INTO laps (number, starttime, averageheartratebpm, maximumheartratebpm, calories, distancemeters, intensity, totaltimeseconds, the_geom) VALUES ( , TIMESTAMP '', , , , , '', , ST_SetSRID(ST_GeomFromText('MULTILINESTRING(( , ))'), 4326) ), ; EOF FILES_BEFORE=$(ls -1 -d ${TCXDIR}/*.tcx) echo "##### Starting download from Dropbox #####" rclone sync drpbx:/Apps/tapiriik/ ${TCXDIR} FILES_AFTER=$(ls -1 -d ${TCXDIR}/*.tcx) FILES_NEW=$(comm -23 <(echo "${FILES_AFTER}") <(echo "${FILES_BEFORE}")) echo echo "##### Starting import to CartoCB / PostGIS #####" echo "${FILES_NEW}" | while read FILE; do TEMPFILE=$(mktemp) xsltproc -o "${TEMPFILE}" "${STYLESHEET}" "${FILE}" printf "%s %-64s" "$(date +'%Y/%m/%d %H:%M:%S')" "$(basename "${FILE}"):" if [ -s ${TEMPFILE} ]; then curl -sSX POST --data @${TEMPFILE} ${CARTODB_EP} | jq -rf ${JQFILTER} else echo "Note: There are no trackpoints. Skipped" fi done rm ${STYLESHEET} ${JQFILTER}