From 7cd299ebeb67c645e91bd4167b39086adc3c4fad Mon Sep 17 00:00:00 2001 From: Patrick McGuire Date: Wed, 6 Oct 2021 10:20:19 -0400 Subject: [PATCH] fixed a weirdness in the birdnet_stats.sh script --- Birders_Guide_Installer.sh | 9 +++- scripts/birdnet_analysis.sh | 2 + scripts/birdnet_stats.sh | 104 ++++++++++++++++++++---------------- 3 files changed, 66 insertions(+), 49 deletions(-) diff --git a/Birders_Guide_Installer.sh b/Birders_Guide_Installer.sh index bf8656a..b59ef51 100755 --- a/Birders_Guide_Installer.sh +++ b/Birders_Guide_Installer.sh @@ -116,8 +116,13 @@ stage_2() { echo "Follow the instructions to fill out the LATITUDE and LONGITUDE variables and set the passwords for the live audio stream. Save the file after editing and then close the Mouse Pad editing window to continue." - mousepad ${my_dir}/Birders_Guide_Installer_Configuration.txt &> /dev/null - while pgrep mouse &> /dev/null;do + if ( env | grep SSH_CONNECTION &> /dev/null );then + editor=nano + else + editor=mousepad + fi + $editor ${my_dir}/Birders_Guide_Installer_Configuration.txt &> /dev/null + while pgrep $editor &> /dev/null;do sleep 1 done source ${my_dir}/Birders_Guide_Installer_Configuration.txt || exit 1 diff --git a/scripts/birdnet_analysis.sh b/scripts/birdnet_analysis.sh index a7cc326..3f63802 100755 --- a/scripts/birdnet_analysis.sh +++ b/scripts/birdnet_analysis.sh @@ -150,6 +150,8 @@ run_birdnet() { run_analysis "${1}" } +date + if [ $(find ${RECS_DIR} -maxdepth 1 -name '*wav' | wc -l) -gt 0 ];then run_birdnet "${RECS_DIR}" fi diff --git a/scripts/birdnet_stats.sh b/scripts/birdnet_stats.sh index ec7c034..ddf9866 100755 --- a/scripts/birdnet_stats.sh +++ b/scripts/birdnet_stats.sh @@ -7,7 +7,7 @@ setterm --cursor off TMP_FILE="$(mktemp)" while true;do -cat << "EOF" + cat << "EOF" .+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+. ( _ ____ __ _ ) ) |_)o.__||\ ||_ |__(_ __|_ _ ._ _ |_) _ ._ _ .__|_ ( @@ -15,54 +15,64 @@ cat << "EOF" ) / | ( "+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+"+.+" EOF -if [ "$(find ${EXTRACTED} -name '*.wav' | wc -l)" -ge 1 ];then - a=$( find "${EXTRACTED}" -name '*.wav' \ - | awk -F "/" '{print $NF}' \ - | cut -d'-' -f1 \ - | sort -n \ - | tail -n1 ) -else - a=0 -fi -echo -if [ "${a}" -ge "1" ];then - SOFAR=$(($(wc -l ${IDFILE}| cut -d' ' -f1)/2)) -else - SOFAR=0 -fi -if [ $SOFAR = 1 ];then - verbage=detection -else - verbage=detections -fi -echo " -$a $verbage so far" -echo -echo " -$SOFAR species identified so far" -echo -if [ ${a} -ge 1 ];then -while read -r line;do - SPECIES="$(echo "${line}" | awk -F: '/Common Name/ {print $2}')" - SPECIES="${SPECIES// /_}" - SPECIES="$(echo ${SPECIES/_} | tr -d "'")" - [ -z ${SPECIES} ] && continue - - ALL_DETECTION_FILES="$(ls -1 ${EXTRACTED}/By_Date/*/${SPECIES})" - ALL_DETECTION_FILES="$(echo ${ALL_DETECTION_FILES[@]} | tr ' ' '\n')" - MAX_SCORE="$(echo "${ALL_DETECTION_FILES}"| awk -F% '{print $1}')" - MAX_SCORE="$(echo "${MAX_SCORE[@]}" | rev |cut -d"-" -f1|rev | sort -r | head -n1)" - - DETECTIONS="$(ls -1 ${EXTRACTED}/By_Date/*/${SPECIES} | wc -l)" - if [ ${DETECTIONS} = 1 ];then + if [ "$(find ${EXTRACTED} -name '*.wav' | wc -l)" -ge 1 ];then + a=$( find "${EXTRACTED}" -name '*.wav' \ + | awk -F "/" '{print $NF}' \ + | cut -d'-' -f1 \ + | sort -n \ + | tail -n1 ) + else + a=0 + fi + echo + if [ "${a}" -ge "1" ];then + SOFAR=$(($(wc -l ${IDFILE}| cut -d' ' -f1)/2)) + else + SOFAR=0 + fi + if [ $SOFAR = 1 ];then verbage=detection else verbage=detections fi - echo "${DETECTIONS} $verbage for ${SPECIES//_/ } | max conf ${MAX_SCORE}%" -done < "${IDFILE}" > ${TMP_FILE} -sort -rk1 -h "${TMP_FILE}" -fi -echo -echo -n "Listening since "${INSTALL_DATE}"" -sleep 20 -clear + echo " -$a $verbage so far" + echo + echo " -$SOFAR species identified so far" + echo + if [ ${a} -ge 1 ];then + while read -r line;do + + # Get species name + SPECIES="$(echo "${line}" | awk -F: '/Common Name/ {print $2}')" + SPECIES="${SPECIES// /_}" + SPECIES="$(echo ${SPECIES/_} | tr -d "'")" + [ -z ${SPECIES} ] && continue + + # Get all detection files + ALL_DETECTION_FILES="$(find ${EXTRACTED}/By_Date/*/${SPECIES} -name '*.wav')" + ALL_DETECTION_FILES="$(echo ${ALL_DETECTION_FILES[@]} | tr ' ' '\n')" + + # Parse highest confidence score + MAX_SCORE="$(echo "${ALL_DETECTION_FILES}"| awk -F% '{print $1}')" + MAX_SCORE="$(echo "${MAX_SCORE[@]}" | rev |cut -d"-" -f1|rev | sort -r | head -n1)" + + # Set noun-plurality agreement for grammar + DETECTIONS="$(ls -1 ${EXTRACTED}/By_Date/*/${SPECIES} | wc -l)" + if [ ${DETECTIONS} = 1 ];then + verbage=detection + else + verbage=detections + fi + + # Write results to temporary file + echo "${DETECTIONS} $verbage for ${SPECIES//_/ } | max conf ${MAX_SCORE}%" + done < "${IDFILE}" > ${TMP_FILE} + + # Print temporary file sorted by # of detections + sort -rk1 -h "${TMP_FILE}" + fi + echo + echo -n "Listening since "${INSTALL_DATE}"" + sleep 20 + clear done