From 32171a9e7794ebc4e36167b4a261757cab164efb Mon Sep 17 00:00:00 2001
From: Alexandre <44178713+alexbelgium@users.noreply.github.com>
Date: Thu, 29 Aug 2024 14:31:32 +0200
Subject: [PATCH] Replace birdnet-pi with BattyBirdNET-Analyzer
---
battybirdnet-pi/Dockerfile | 12 ++--
.../rootfs/custom-services.d/02-caddy.sh | 4 +-
.../rootfs/custom-services.d/30-monitoring.sh | 10 +--
.../rootfs/etc/cont-init.d/01-structure.sh | 12 ++--
.../rootfs/etc/cont-init.d/31-checks.sh | 4 +-
.../rootfs/etc/cont-init.d/33-mqtt.sh | 18 ++---
.../rootfs/etc/cont-init.d/71-newfeatures.sh | 72 +++++++++----------
.../etc/cont-init.d/81-modifications.sh | 30 ++++----
.../etc/cont-init.d/91-nginx_ingress.sh | 4 +-
.../rootfs/etc/cont-init.d/92-ssl.sh | 4 +-
.../rootfs/etc/cont-init.d/99-run.sh | 12 ++--
.../rootfs/helpers/birdnet_to_mqtt.py | 6 +-
.../rootfs/helpers/spectral_analysis.sh | 2 +-
13 files changed, 95 insertions(+), 95 deletions(-)
diff --git a/battybirdnet-pi/Dockerfile b/battybirdnet-pi/Dockerfile
index 6b5ae0733..e00428436 100644
--- a/battybirdnet-pi/Dockerfile
+++ b/battybirdnet-pi/Dockerfile
@@ -25,8 +25,8 @@ ENV DEBIAN_FRONTEND="noninteractive" \
PGID=1000 \
HOME="/home/pi" \
XDG_RUNTIME_DIR="/run/user/1000" \
- PYTHON_VIRTUAL_ENV="/home/pi/BirdNET-Pi/birdnet/bin/python3" \
- my_dir=/home/pi/BirdNET-Pi/scripts
+ PYTHON_VIRTUAL_ENV="/home/pi/BattyBirdNET-Analyzer/birdnet/bin/python3" \
+ my_dir=/home/pi/BattyBirdNET-Analyzer/scripts
# Global LSIO modifications
ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_lsio.sh" "/ha_lsio.sh"
@@ -58,7 +58,7 @@ RUN \
git config --global --add safe.directory '*' && \
\
# Download installer
- curl -f -L -s -S "https://raw.githubusercontent.com/rdz-oss/BattyBirdNET-Pi/main/newinstaller.sh" -o /newinstaller.sh && \
+ curl -f -L -s -S "https://raw.githubusercontent.com/rdz-oss/BattyBattyBirdNET-Analyzer/main/newinstaller.sh" -o /newinstaller.sh && \
chmod 777 /newinstaller.sh && \
\
# Use installer to modify other scripts
@@ -67,10 +67,10 @@ RUN \
sed -i "1a /./newinstallermod.sh" /newinstaller.sh && \
echo '#!/bin/bash' >> /newinstallermod.sh && \
# Remove all instances of sudo from all other scripts
- echo 'for file in $(grep -srl "sudo" $HOME/BirdNET-Pi/scripts); do sed -i "s|sudo ||" "$file"; done' >> /newinstallermod.sh && \
- echo 'for file in $(grep -srl "my_dir" $HOME/BirdNET-Pi/scripts); do sed -i "s|\$my_dir|/config|" "$file"; done' >> /newinstallermod.sh && \
+ echo 'for file in $(grep -srl "sudo" $HOME/BattyBirdNET-Analyzer/scripts); do sed -i "s|sudo ||" "$file"; done' >> /newinstallermod.sh && \
+ echo 'for file in $(grep -srl "my_dir" $HOME/BattyBirdNET-Analyzer/scripts); do sed -i "s|\$my_dir|/config|" "$file"; done' >> /newinstallermod.sh && \
# Disable pulseaudio
- echo 'for file in $(grep -srl "pulseaudio --start" $HOME/BirdNET-Pi/scripts); do sed -i "/pulseaudio --start/d" "$file"; done' >> /newinstallermod.sh && \
+ echo 'for file in $(grep -srl "pulseaudio --start" $HOME/BattyBirdNET-Analyzer/scripts); do sed -i "/pulseaudio --start/d" "$file"; done' >> /newinstallermod.sh && \
# Set permission
chmod +x /newinstallermod.sh && \
\
diff --git a/battybirdnet-pi/rootfs/custom-services.d/02-caddy.sh b/battybirdnet-pi/rootfs/custom-services.d/02-caddy.sh
index 511299480..bf8f8a086 100755
--- a/battybirdnet-pi/rootfs/custom-services.d/02-caddy.sh
+++ b/battybirdnet-pi/rootfs/custom-services.d/02-caddy.sh
@@ -12,10 +12,10 @@ done
chown caddy:caddy /run/php/php*-fpm.sock
sed -i "s|/run/php/php-fpm.sock|$sockfile|g" /helpers/caddy_ingress.sh
sed -i "s|/run/php/php-fpm.sock|$sockfile|g" /etc/caddy/Caddyfile
-sed -i "s|/run/php/php-fpm.sock|$sockfile|g" "$HOME"/BirdNET-Pi/scripts/update_caddyfile.sh
+sed -i "s|/run/php/php-fpm.sock|$sockfile|g" "$HOME"/BattyBirdNET-Analyzer/scripts/update_caddyfile.sh
# Update caddyfile with password
-/."$HOME"/BirdNET-Pi/scripts/update_caddyfile.sh &>/dev/null || true
+/."$HOME"/BattyBirdNET-Analyzer/scripts/update_caddyfile.sh &>/dev/null || true
echo "Starting service: caddy"
/usr/bin/caddy run --config /etc/caddy/Caddyfile
diff --git a/battybirdnet-pi/rootfs/custom-services.d/30-monitoring.sh b/battybirdnet-pi/rootfs/custom-services.d/30-monitoring.sh
index 71356aca0..736ef6957 100755
--- a/battybirdnet-pi/rootfs/custom-services.d/30-monitoring.sh
+++ b/battybirdnet-pi/rootfs/custom-services.d/30-monitoring.sh
@@ -28,7 +28,7 @@ chmod -R 755 "$ingest_dir"
function apprisealert() {
# Set failed check so it only runs once
- touch "$HOME"/BirdNET-Pi/failed_servicescheck
+ touch "$HOME"/BattyBirdNET-Analyzer/failed_servicescheck
NOTIFICATION=""
STOPPEDSERVICE="
Stopped services: "
services=(birdnet_analysis
@@ -49,10 +49,10 @@ function apprisealert() {
NOTIFICATION+="
System: ${SITE_NAME:-$(hostname)}"
NOTIFICATION+="
Available disk space: $(df -h "$(readlink -f "$HOME/BirdSongs")" | awk 'NR==2 {print $4}')"
if [ -n "$BIRDNETPI_URL" ]; then
- NOTIFICATION+="
Access your battybirdnet-pi"
+ NOTIFICATION+="
Access your battyBattyBirdNET-Analyzer"
fi
TITLE="BirdNET-Analyzer stopped"
- "$HOME"/BirdNET-Pi/birdnet/bin/apprise -vv -t "$TITLE" -b "${NOTIFICATION}" --input-format=html --config="$HOME/BirdNET-Pi/apprise.txt"
+ "$HOME"/BattyBirdNET-Analyzer/birdnet/bin/apprise -vv -t "$TITLE" -b "${NOTIFICATION}" --input-format=html --config="$HOME/BattyBirdNET-Analyzer/apprise.txt"
}
while true; do
@@ -65,7 +65,7 @@ while true; do
latest="$(cat "$ingest_dir"/analyzing_now.txt)"
if [[ "$latest" == "$analyzing_now" ]]; then
echo "$(date) WARNING no change in analyzing_now for 10 iterations, restarting services"
- /."$HOME"/BirdNET-Pi/scripts/restart_services.sh
+ /."$HOME"/BattyBirdNET-Analyzer/scripts/restart_services.sh
fi
counter=10
analyzing_now=$(cat "$ingest_dir"/analyzing_now.txt)
@@ -83,7 +83,7 @@ while true; do
bashio::log.red "$(date) WARNING too many files in queue, pausing $srv"
sudo systemctl stop "$srv"
sudo systemctl restart birdnet_analysis
- if [ -s "$HOME/BirdNET-Pi/apprise.txt" ]; then apprisealert; fi
+ if [ -s "$HOME/BattyBirdNET-Analyzer/apprise.txt" ]; then apprisealert; fi
elif [[ "$state" != "active" ]]; then
bashio::log.yellow "$(date) INFO started $srv service"
sudo systemctl start $srv
diff --git a/battybirdnet-pi/rootfs/etc/cont-init.d/01-structure.sh b/battybirdnet-pi/rootfs/etc/cont-init.d/01-structure.sh
index 13ba4e2de..85adf8703 100755
--- a/battybirdnet-pi/rootfs/etc/cont-init.d/01-structure.sh
+++ b/battybirdnet-pi/rootfs/etc/cont-init.d/01-structure.sh
@@ -13,7 +13,7 @@ bashio::log.info "Ensuring the file structure is correct :"
echo "... creating default files"
touch /config/include_species_list.txt # Should be null
for files in apprise.txt exclude_species_list.txt IdentifiedSoFar.txt disk_check_exclude.txt confirmed_species_list.txt blacklisted_images.txt whitelist_species_list.txt; do
- if [ ! -f /config/"$files" ]; then
+ if [ ! -f /config/"$files" ]; then
echo "" > /config/"$files"
fi
done
@@ -58,22 +58,22 @@ chown -R pi:pi /config /etc/birdnet "$BIRDSONGS_FOLDER" /tmp
chmod -R 755 /config /config /etc/birdnet "$BIRDSONGS_FOLDER" /tmp
# Save default birdnet.conf to perform sanity check
-cp "$HOME"/BirdNET-Pi/birdnet.conf "$HOME"/BirdNET-Pi/birdnet.bak
+cp "$HOME"/BattyBirdNET-Analyzer/birdnet.conf "$HOME"/BattyBirdNET-Analyzer/birdnet.bak
# Symlink files
echo "... creating symlink"
-for files in "$HOME/BirdNET-Pi/birdnet.conf" "$HOME/BirdNET-Pi/scripts/whitelist_species_list.txt" "$HOME/BirdNET-Pi/blacklisted_images.txt" "$HOME/BirdNET-Pi/scripts/birds.db" "$HOME/BirdNET-Pi/BirdDB.txt" "$HOME/BirdNET-Pi/scripts/disk_check_exclude.txt" "$HOME/BirdNET-Pi/apprise.txt" "$HOME/BirdNET-Pi/exclude_species_list.txt" "$HOME/BirdNET-Pi/include_species_list.txt" "$HOME/BirdNET-Pi/IdentifiedSoFar.txt" "$HOME/BirdNET-Pi/scripts/confirmed_species_list.txt"; do
+for files in "$HOME/BattyBirdNET-Analyzer/birdnet.conf" "$HOME/BattyBirdNET-Analyzer/scripts/whitelist_species_list.txt" "$HOME/BattyBirdNET-Analyzer/blacklisted_images.txt" "$HOME/BattyBirdNET-Analyzer/scripts/birds.db" "$HOME/BattyBirdNET-Analyzer/BirdDB.txt" "$HOME/BattyBirdNET-Analyzer/scripts/disk_check_exclude.txt" "$HOME/BattyBirdNET-Analyzer/apprise.txt" "$HOME/BattyBirdNET-Analyzer/exclude_species_list.txt" "$HOME/BattyBirdNET-Analyzer/include_species_list.txt" "$HOME/BattyBirdNET-Analyzer/IdentifiedSoFar.txt" "$HOME/BattyBirdNET-Analyzer/scripts/confirmed_species_list.txt"; do
filename="${files##*/}"
if [ ! -f /config/"$filename" ]; then
- if [ -f "$files" ]; then
+ if [ -f "$files" ]; then
echo "... copying $filename" && sudo -u pi mv "$files" /config/
else
touch /config/"$filename"
fi
fi
if [ -e "$files" ]; then rm "$files"; fi
- sudo -u pi ln -fs /config/"$filename" "$HOME/BirdNET-Pi/$filename" || bashio::log.fatal "Symlink creation failed for $filename"
- sudo -u pi ln -fs /config/"$filename" "$HOME/BirdNET-Pi/scripts/$filename" || bashio::log.fatal "Symlink creation failed for $filename"
+ sudo -u pi ln -fs /config/"$filename" "$HOME/BattyBirdNET-Analyzer/$filename" || bashio::log.fatal "Symlink creation failed for $filename"
+ sudo -u pi ln -fs /config/"$filename" "$HOME/BattyBirdNET-Analyzer/scripts/$filename" || bashio::log.fatal "Symlink creation failed for $filename"
sudo -u pi ln -fs /config/"$filename" /etc/birdnet/"$filename" || bashio::log.fatal "Symlink creation failed for $filename"
done
diff --git a/battybirdnet-pi/rootfs/etc/cont-init.d/31-checks.sh b/battybirdnet-pi/rootfs/etc/cont-init.d/31-checks.sh
index 47ffa5b77..bdc4535c1 100755
--- a/battybirdnet-pi/rootfs/etc/cont-init.d/31-checks.sh
+++ b/battybirdnet-pi/rootfs/etc/cont-init.d/31-checks.sh
@@ -10,8 +10,8 @@ echo " "
bashio::log.info "Checking your birndet.conf file integrity"
# Set variables
-configcurrent="$HOME"/BirdNET-Pi/birdnet.conf
-configtemplate="$HOME"/BirdNET-Pi/birdnet.bak
+configcurrent="$HOME"/BattyBirdNET-Analyzer/birdnet.conf
+configtemplate="$HOME"/BattyBirdNET-Analyzer/birdnet.bak
# Extract variable names from config template and read each one
grep -o '^[^#=]*=' "$configtemplate" | sed 's/=//' | while read -r var; do
diff --git a/battybirdnet-pi/rootfs/etc/cont-init.d/33-mqtt.sh b/battybirdnet-pi/rootfs/etc/cont-init.d/33-mqtt.sh
index 38726d645..493930dcd 100755
--- a/battybirdnet-pi/rootfs/etc/cont-init.d/33-mqtt.sh
+++ b/battybirdnet-pi/rootfs/etc/cont-init.d/33-mqtt.sh
@@ -12,15 +12,15 @@ common_steps () {
sed -i "s|%%mqtt_port%%|$MQTT_PORT|g" /helpers/birdnet_to_mqtt.py
sed -i "s|%%mqtt_user%%|$MQTT_USER|g" /helpers/birdnet_to_mqtt.py
sed -i "s|%%mqtt_pass%%|$MQTT_PASS|g" /helpers/birdnet_to_mqtt.py
-
+
# Copy script to the appropriate directory
- cp /helpers/birdnet_to_mqtt.py "$HOME"/BirdNET-Pi/scripts/utils/birdnet_to_mqtt.py
- chown pi:pi "$HOME"/BirdNET-Pi/scripts/utils/birdnet_to_mqtt.py
- chmod +x "$HOME"/BirdNET-Pi/scripts/utils/birdnet_to_mqtt.py
-
+ cp /helpers/birdnet_to_mqtt.py "$HOME"/BattyBirdNET-Analyzer/scripts/utils/birdnet_to_mqtt.py
+ chown pi:pi "$HOME"/BattyBirdNET-Analyzer/scripts/utils/birdnet_to_mqtt.py
+ chmod +x "$HOME"/BattyBirdNET-Analyzer/scripts/utils/birdnet_to_mqtt.py
+
# Add hooks to the main analysis script
- sed -i "/load_global_model, run_analysis/a from utils.birdnet_to_mqtt import automatic_mqtt_publish" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i '/write_to_db(/a\ automatic_mqtt_publish(file, detection, os.path.basename(detection.file_name_extr))' "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
+ sed -i "/load_global_model, run_analysis/a from utils.birdnet_to_mqtt import automatic_mqtt_publish" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py
+ sed -i '/write_to_db(/a\ automatic_mqtt_publish(file, detection, os.path.basename(detection.file_name_extr))' "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py
else
bashio::log.fatal "MQTT connection failed, it will not be configured. Error message :"
mosquitto_pub -h "$MQTT_HOST" -p "$MQTT_PORT" -t "$TOPIC" -m "test" -u "$MQTT_USER" -P "$MQTT_PASS" -q 1 -d --will-topic "$TOPIC" --will-payload "Disconnected" --will-qos 1 --will-retain
@@ -30,7 +30,7 @@ common_steps () {
# Check if MQTT service is available and not disabled
if bashio::services.available 'mqtt' && ! bashio::config.true 'MQTT_DISABLED'; then
bashio::log.green "---"
- bashio::log.blue "MQTT addon is active on your system! Birdnet-pi is now automatically configured to send its output to MQTT"
+ bashio::log.blue "MQTT addon is active on your system! BattyBirdNET-Analyzer is now automatically configured to send its output to MQTT"
bashio::log.blue "MQTT user : $(bashio::services "mqtt" "username")"
bashio::log.blue "MQTT password : $(bashio::services "mqtt" "password")"
bashio::log.blue "MQTT broker : tcp://$(bashio::services "mqtt" "host"):$(bashio::services "mqtt" "port")"
@@ -52,7 +52,7 @@ if bashio::services.available 'mqtt' && ! bashio::config.true 'MQTT_DISABLED'; t
elif bashio::config.has_value "MQTT_HOST_manual" && bashio::config.has_value "MQTT_PORT_manual"; then
bashio::log.green "---"
bashio::log.blue "MQTT is manually configured in the addon options"
- bashio::log.blue "Birdnet-pi is now automatically configured to send its output to MQTT"
+ bashio::log.blue "BattyBirdNET-Analyzer is now automatically configured to send its output to MQTT"
bashio::log.green "---"
bashio::log.blue "Data will be posted to the topic : 'birdnet'"
bashio::log.blue "Json data : {'Date', 'Time', 'ScientificName', 'CommonName', 'Confidence', 'SpeciesCode', 'ClipName', 'url'}"
diff --git a/battybirdnet-pi/rootfs/etc/cont-init.d/71-newfeatures.sh b/battybirdnet-pi/rootfs/etc/cont-init.d/71-newfeatures.sh
index b4fbae83a..5fb600569 100755
--- a/battybirdnet-pi/rootfs/etc/cont-init.d/71-newfeatures.sh
+++ b/battybirdnet-pi/rootfs/etc/cont-init.d/71-newfeatures.sh
@@ -11,53 +11,53 @@ bashio::log.info "Adding optional features"
# Denoiser
#if bashio::config.true "DENOISER_ANALYSIS_ENABLED"; then
-# sed -i "s|ar 48000|ar 48000 -af \"arnndn=m=sample.rnnn\"|g" "$HOME"/BirdNET-Pi/scripts/birdnet_recording.sh
-# sed -i "s|ar 48000|ar 48000 -af afftdn=nr=30:nt=w:om=o|g" "$HOME"/BirdNET-Pi/scripts/birdnet_recording.sh
+# sed -i "s|ar 48000|ar 48000 -af \"arnndn=m=sample.rnnn\"|g" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_recording.sh
+# sed -i "s|ar 48000|ar 48000 -af afftdn=nr=30:nt=w:om=o|g" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_recording.sh
#fi
# Enable the Processed folder
#############################
-if bashio::config.true "PROCESSED_FOLDER_ENABLED" && ! grep -q "processed_size" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py; then
+if bashio::config.true "PROCESSED_FOLDER_ENABLED" && ! grep -q "processed_size" "$HOME"/BattyBirdNET-Analyzer/scripts/birdnet_analysis.py; then
echo "... Enabling the Processed folder : the last 15 wav files will be stored there"
# Adapt config.php
- sed -i "/GET\[\"info_site\"\]/a\ \$processed_size = \$_GET\[\"processed_size\"\];" "$HOME"/BirdNET-Pi/scripts/config.php
- sed -i "/\$contents = file_get_contents/a\ \$contents = preg_replace\(\"/PROCESSED_SIZE=\.\*/\", \"PROCESSED_SIZE=\$processed_size\", \$contents\);" "$HOME"/BirdNET-Pi/scripts/config.php
- sed -i "/\"success\"/i
" "$HOME"/BirdNET-Pi/scripts/config.php
- sed -i "/\"success\"/i Processed folder management" "$HOME"/BirdNET-Pi/scripts/config.php - sed -i "/\"success\"/i " "$HOME"/BirdNET-Pi/scripts/config.php - sed -i "/\"success\"/i \"/>" "$HOME"/BirdNET-Pi/scripts/config.php - sed -i "/\"success\"/i |
| " "$HOME"/BirdNET-Pi/scripts/config.php
- sed -i "/\"success\"/i Processed is the directory where the formerly 'Analyzed' files are moved after extractions, mostly for troubleshooting purposes. " "$HOME"/BirdNET-Pi/scripts/config.php - sed -i "/\"success\"/i This value defines the maximum amount of files that are kept before replacement with new files. " "$HOME"/BirdNET-Pi/scripts/config.php - sed -i "/\"success\"/i |
" "$HOME"/BattyBirdNET-Analyzer/scripts/config.php
+ sed -i "/\"success\"/i Processed folder management" "$HOME"/BattyBirdNET-Analyzer/scripts/config.php + sed -i "/\"success\"/i " "$HOME"/BattyBirdNET-Analyzer/scripts/config.php + sed -i "/\"success\"/i \"/>" "$HOME"/BattyBirdNET-Analyzer/scripts/config.php + sed -i "/\"success\"/i |
| " "$HOME"/BattyBirdNET-Analyzer/scripts/config.php
+ sed -i "/\"success\"/i Processed is the directory where the formerly 'Analyzed' files are moved after extractions, mostly for troubleshooting purposes. " "$HOME"/BattyBirdNET-Analyzer/scripts/config.php + sed -i "/\"success\"/i This value defines the maximum amount of files that are kept before replacement with new files. " "$HOME"/BattyBirdNET-Analyzer/scripts/config.php + sed -i "/\"success\"/i |