add sumsel.sh (all in one)
This commit is contained in:
188
sumsel.sh
Executable file
188
sumsel.sh
Executable file
@@ -0,0 +1,188 @@
|
|||||||
|
#!/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 <configfile>]" 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 <configfile> 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
|
||||||
|
|
||||||
|
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() {
|
||||||
|
if [[ ! -v REC_DIR ]]; then
|
||||||
|
echo "REC_DIR not set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ! -v REC_PREFIX ]]; then
|
||||||
|
echo "REC_PREFIX not set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ! -v SIM_EXAMPLE_FILE ]]; then
|
||||||
|
echo "SIM_EXAMPLE_FILE not set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
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() {
|
||||||
|
if [[ ! -v REC_DEVICE ]]; then
|
||||||
|
echo "REC_DEVICE not set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ! -v REC_FILE_TIME ]]; then
|
||||||
|
echo "REC_FILE_TIME not set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ! -v REC_PREFIX ]]; then
|
||||||
|
echo "REC_PREFIX not set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ! -v REC_DIR ]]; then
|
||||||
|
echo "REC_DIR not set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p ${REC_DIR}
|
||||||
|
arecord --format=cd --device=${REC_DEVICE} --max-file-time ${REC_FILE_TIME} ${REC_DIR}/${REC_PREFIX}.wav
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
convert() {
|
||||||
|
if [[ ! -v REC_DIR ]]; then
|
||||||
|
echo "REC_DIR not set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ! -v UPL_DIR ]]; then
|
||||||
|
echo "UPL_DIR not set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ! -v UPL_SUFFIX ]]; then
|
||||||
|
echo "UPL_SUFFIX not set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ! -v REMOTE_DIR ]]; then
|
||||||
|
echo "REMOTE_DIR not set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if set_lockfile;
|
||||||
|
then
|
||||||
|
#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
|
||||||
Reference in New Issue
Block a user