#!/bin/bash LOCK_DIR=/var/lock SIM_EXAMPLE_FILE=./res/test.wav #Laenge der WAV Dateien in Sekunden REC_FILE_TIME=360 #Ordner, ind dem die WAV Dateien abgelegt werden #wenn der Ordner nicht existiert, wird er angelegt REC_DIR=./recordings #Dateiname der WAV Dateien # sums-01.wav, sums-02.wav, ... REC_PREFIX=sums #Ordner in dem die MP3 Dateien abgelegt werden #wenn der Ordner nicht existiert, wird er angelegt UPL_DIR=./upqueue #Dateiname der MP3 Dateien # 20210130101112-sumsi.mp3, 20210130101120-sumsi.mp3, ... UPL_SUFFIX=sumsi usage() { echo "Usage: $0 [-h] (-s|-r|-t) [-C ]" 1>&2; echo -e '\t-h Usage' echo -e '\t-s Simulation' echo -e '\t-r Aufnahme' echo -e '\t-c Konvertierung' echo -e '\t-C ssss' exit 1; } while getopts ":hsrcC:" options; do case "${options}" in h) usage ;; "s" | "r" | "c") #simulate mode=${options} ;; C) config=${OPTARG} if [ -f ${config} ]; then . ${config} else echo "file not found: ${config}" exit fi ;; *) echo "unknown option" usage ;; esac done check_var_exists() { local var_name=$1 if [[ ! -v ${var_name} ]]; then echo "${var_name} not set" exit 1 fi } set_lockfile() { local BASENAME=$(basename "$0") local LOCK_FILE="${LOCK_DIR}/${BASENAME}" local RANDOM_FILE=$(mktemp --tmpdir=${LOCK_DIR}) echo $$ > ${RANDOM_FILE} mv -n ${RANDOM_FILE} ${LOCK_FILE} if [ -e ${RANDOM_FILE} ] ; then false else true fi } del_lockfile() { local BASENAME=$(basename "$0") local LOCK_FILE="${LOCK_DIR}/${BASENAME}" rm ${LOCK_FILE} } simulate() { check_var_exists "REC_DIR" check_var_exists "REC_PREFIX" check_var_exists "SIM_EXAMPLE_FILE" local COUNTER=0 mkdir -p ${REC_DIR} echo "Press [CTRL+C] to stop.." while : do sleep 1 COUNTER=$[$COUNTER +1] dst_fn="${REC_DIR}/${REC_PREFIX}-${COUNTER}.wav" cp ${SIM_EXAMPLE_FILE} ${dst_fn} done exit 0 } record() { check_var_exists "REC_DEVICE" check_var_exists "REC_FILE_TIME" check_var_exists "REC_PREFIX" check_var_exists "REC_DIR" mkdir -p ${REC_DIR} arecord --format=cd --device=${REC_DEVICE} --max-file-time ${REC_FILE_TIME} ${REC_DIR}/${REC_PREFIX}.wav exit 0 } convert() { check_var_exists "REC_DIR" check_var_exists "UPL_DIR" check_var_exists "UPL_SUFFIX" check_var_exists "REMOTE_DIR" if set_lockfile; then mkdir -p ${REC_DIR} mkdir -p ${UPL_DIR} #Alle WAV Files ausser das letzte File. #Das letzte File wird gerade recorded und wird beim naechsten Durchlauf verarbeitet local FILES=$(ls -tr ${REC_DIR} |head -n -1) for F in ${FILES} do #Ermittle ctime des WAV Files local CTIME=$(date -r "${REC_DIR}/${F}" +"%Y%m%d%H%M%S") ffmpeg -i "${REC_DIR}/${F}" -acodec mp3 "${UPL_DIR}/${CTIME}_${UPL_SUFFIX}.mp3" rm "${REC_DIR}/${F}" done rsync -avzh --remove-source-files ${UPL_DIR} ${REMOTE_DIR} del_lockfile exit 0 else echo "LOCK error" exit 1 fi } case ${mode} in s) #Simulation simulate exit ;; r) #Aufnahme record ;; c) #Konvertierung convert ;; *) echo "mode not set" exit 1 ;; esac