firefly-iii-auto-importer/importer.sh

66 lines
2.4 KiB
Bash
Raw Normal View History

2020-05-25 09:55:28 +02:00
#!/bin/bash
## author : Dryusdan
## date : 30/09/2019
## description : A CSV importer to Firefly III
2020-05-25 10:39:08 +02:00
## usage : ./importer.sh [interactive]
2020-05-25 09:55:28 +02:00
## Import require config ##############################
source utils/config
source utils/color
source utils/logger
#######################################################
2020-05-25 10:06:46 +02:00
info "Starting importer"
2020-05-25 10:39:08 +02:00
2020-05-25 10:45:31 +02:00
if [ $# -eq 0 ]
2020-05-25 10:39:08 +02:00
then
INTERACTIVE=false
2020-05-25 10:45:31 +02:00
else
INTERACTIVE=true
2020-05-25 10:39:08 +02:00
fi
2020-05-25 10:06:46 +02:00
info "Create transaction folder"
2020-05-25 09:55:28 +02:00
mkdir -p ${TRANSACTION_PATH}
2020-05-25 10:06:46 +02:00
info "Get accounts"
2020-05-25 10:41:45 +02:00
for bank in $(cat accounts.json | jq --raw-output ".accounts[] | @base64")
2020-05-25 09:55:28 +02:00
do
2020-05-25 10:06:46 +02:00
id=$(echo ${bank} | base64 --decode | jq --raw-output ".id")
2020-05-25 09:55:28 +02:00
backend=$(echo ${bank} | base64 --decode | jq --raw-output ".backend")
importconfig=$(echo ${bank} | base64 --decode | jq --raw-output ".importconfig")
outputname=$(echo ${bank} | base64 --decode | jq --raw-output ".outputname")
minfetch=$(echo ${bank} | base64 --decode | jq --raw-output ".minfetch")
maxfetch=$(echo ${bank} | base64 --decode | jq --raw-output ".maxfetch")
2020-05-25 10:39:08 +02:00
needinteract=$(echo ${bank} | base64 --decode | jq --raw-output ".needinteract")
2020-05-25 09:55:28 +02:00
2020-05-25 10:06:46 +02:00
info "Run boobank and extract csv"
2020-05-25 10:50:53 +02:00
if [ ${needinteract} == "true" ] && [ ${INTERACTIVE} = true ]
2020-05-25 10:39:08 +02:00
then
2020-05-26 09:21:07 +02:00
info "Unlock with 2fa"
${BOOBANK_BIN} -b ${backend} list
2020-05-25 10:41:15 +02:00
${BOOBANK_BIN} -b ${backend} history ${id} -n ${minfetch} -f csv -O ${TRANSACTION_PATH}/${outputname}
2020-05-25 10:39:08 +02:00
else
2020-05-25 10:50:53 +02:00
if [ ${needinteract} == "true" ] && [ ${INTERACTIVE} = false]
2020-05-25 10:39:08 +02:00
then
warning "${backend} need interative. Pass"
else
${BOOBANK_BIN} -b ${backend} history ${id} -n ${minfetch} -f csv -O ${TRANSACTION_PATH}/${outputname}
fi
fi
done
info "Import csv into Firefly-III"
2020-05-25 10:56:21 +02:00
for bank in $(cat accounts.json | jq --raw-output ".accounts[] | @base64")
2020-05-25 10:39:08 +02:00
do
2020-05-25 10:46:34 +02:00
cd ${FIREFLY_CSV_IMPORTER_PATH}
2020-05-25 10:39:08 +02:00
id=$(echo ${bank} | base64 --decode | jq --raw-output ".id")
backend=$(echo ${bank} | base64 --decode | jq --raw-output ".backend")
importconfig=$(echo ${bank} | base64 --decode | jq --raw-output ".importconfig")
outputname=$(echo ${bank} | base64 --decode | jq --raw-output ".outputname")
minfetch=$(echo ${bank} | base64 --decode | jq --raw-output ".minfetch")
maxfetch=$(echo ${bank} | base64 --decode | jq --raw-output ".maxfetch")
/usr/bin/php artisan csv:import ${TRANSACTION_PATH}${outputname} ${IMPORT_CONFIG_PATH}${importconfig}
2020-05-25 09:55:28 +02:00
done