NBMrec/src/nbmrec.sh

86 lines
1.9 KiB
Bash
Raw Permalink Normal View History

2022-06-30 22:20:25 +02:00
#!/bin/bash
# NBMrec
# nocturnal bird migration recorder daemon
# by Samuel ORTION
RECORD_DIR="/mnt/DATA/media/records"
RECORD_DATE=$(date +"%Y-%m-%d")
PREFIX="nbmrec"
RECORD_FILENAME="${PREFIX}_$(date +"%Y%m%d_%H%M%S").wav"
RECORD_FILEPATH="${RECORD_DIR}/${RECORD_DATE}/${RECORD_FILENAME}" 
START_TIME="22:00"
END_TIME="06:00"
START_TIMESTAMP=$(date -d "$START_TIME" "+%s")
END_TIMESTAMP=$(date -d "$END_TIME + 1 day" "+%s")
RECORD_DURATION=$(( $START_TIMESTAMP - $END_TIMESTAMP ))
VERBOSE=false
# Load conf file if any
if [ -f /usr/local/etc/nbmrec/nbmrec.conf ]; then
source /usr/local/etc/nbmrec/nbmrec.conf
fi
RECORD_DURATION=$(( $(date -d "$END_TIME + 1 day" "+%s") - $(date -d "$START_TIME" "+%s") ))
2022-06-30 22:20:25 +02:00
usage() {
echo "Usage: $0 [ -d <duration> ] [ -f <filename> ]"
echo " -d <duration> : duration of the recording in seconds or 'night' for all night recording"
echo " -f <filename> : filename of the recording"
echo " -h : display this help"
echo " -v : switch to VERBOSE mode"
2022-06-30 22:20:25 +02:00
}
# Get command line options
while getopts ":hd:f:" opt; do
case $opt in
h)
usage
;;
d)
RECORD_DURATION=$OPTARG
if [ "$RECORD_DURATION" == "night" ]; then
RECORD_DURATION=32400
fi
;;
f)
RECORD_FILEPATH=$OPTARG
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
2022-06-30 22:20:25 +02:00
main() {
# Create output folder
if $VERBOSE
2022-06-30 22:20:25 +02:00
then
echo "Creating record output folder"
2022-06-30 22:20:25 +02:00
fi
mkdir -p "$RECORD_DIR/$RECORD_DATE/"
# Perform recording
if $VERBOSE
2022-06-30 22:20:25 +02:00
then
echo "Recording $RECORD_FILENAME"
2022-06-30 22:20:25 +02:00
fi
while [[ $(date "+%s") -le $END_TIMESTAMP ]]; do
rec -b 16 -r 48000 -c 1 -t w64 $RECORD_FILEPATH trim 0 $RECORD_DURATION > /tmp/nbmrec-rec.log
done
if $VERBOSE
2022-06-30 22:20:25 +02:00
then
echo "Done"
2022-06-30 22:20:25 +02:00
fi
}
main
exit 0