From 611acb32f3f5670c68317d4d37abe193ad3767ed Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Tue, 18 Nov 2025 16:39:31 +0100 Subject: [PATCH 1/4] Update language setup and remove tphakala model handling --- .../etc/cont-init.d/81-modifications.sh | 38 +++++-------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh b/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh index 38f8003cf..0048b501c 100755 --- a/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh +++ b/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh @@ -42,27 +42,6 @@ fi # General elements ################## -# Use tphakala model v2 if enabled -if [[ -f "$HOME/BirdNET-Pi/model/BirdNET_GLOBAL_6K_V2.4_MData_Model_V2_FP16.tflite2" ]]; then - mv "$HOME/BirdNET-Pi/model/BirdNET_GLOBAL_6K_V2.4_MData_Model_V2_FP16.tflite2" "$HOME/BirdNET-Pi/model/BirdNET_GLOBAL_6K_V2.4_MData_Model_V2_FP16.tflite" -fi -if [[ -d "$HOME/BirdNET-Pi/model/labels_nm2" ]]; then - mv "$HOME/BirdNET-Pi/model/labels_nm2" "$HOME/BirdNET-Pi/model/labels_nm" -fi -if false && bashio::config.true 'Use_tphakala_model_v2'; then - echo "... applying tphakala model v2" - if [[ -f "$HOME/BirdNET-Pi/model/BirdNET-Go_classifier.tflite" ]] && [[ -d "$HOME/BirdNET-Pi/model/labels_go" ]]; then - # Move labels - mv "$HOME/BirdNET-Pi/model/labels_nm" "$HOME/BirdNET-Pi/model/labels_nm2" || bashio::log.warning "Failed to move labels_nm" - mv "$HOME/BirdNET-Pi/model/labels_go" "$HOME/BirdNET-Pi/model/labels_nm" || bashio::log.warning "Failed to move labels_go" - # Move model - mv "$HOME/BirdNET-Pi/model/BirdNET_GLOBAL_6K_V2.4_MData_Model_V2_FP16.tflite" "$HOME/BirdNET-Pi/model/BirdNET_GLOBAL_6K_V2.4_MData_Model_V2_FP16.tflite2" || bashio::log.warning "Failed to move base model" - mv "$HOME/BirdNET-Pi/model/BirdNET-Go_classifier.tflite" "$HOME/BirdNET-Pi/model/BirdNET_GLOBAL_6K_V2.4_MData_Model_V2_FP16.tflite" || bashio::log.warning "Failed to move Go classifier" - else - bashio::log.fatal "model or labels not found, skipping" - fi -fi - # Avoid updates echo "... modifying the config to silence update indicators" # Remove if two lines @@ -75,15 +54,16 @@ sed -i 's/"\.\$updatediv\.\"//g' "$HOME"/BirdNET-Pi/homepage/views.php # Correct language labels according to birdnet.conf echo "... adapting labels according to birdnet.conf" if export "$(grep "^DATABASE_LANG" /config/birdnet.conf)"; then - export "$(grep "^MODEL" /config/birdnet.conf)" bashio::log.info "Setting language to ${DATABASE_LANG:-en}" - if [ "$MODEL" == "BirdNET_GLOBAL_6K_V2.4_Model_FP16" ]; then - BASEDIR=labels_nm - else - BASEDIR=labels_l18n - fi - label_file_name="labels_${DATABASE_LANG}.txt" - ln -sf "$HOME/BirdNET-Pi/model/${BASEDIR}/${label_file_name}" "$HOME/BirdNET-Pi/model/labels.txt" || bashio::log.warning "Failed to update language labels" + python3 - <<'PY' +import os +from scripts.utils.maintainer import create_language + +database_lang = os.environ.get("DATABASE_LANG", "en") + +print(f"Creating translations for {database_lang}") +create_language(database_lang) +PY else bashio::log.warning "DATABASE_LANG not found in configuration. Using default labels." fi From b4c2bee078fc0f38fe3931b0d9f66c89a287954d Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Tue, 18 Nov 2025 17:02:00 +0100 Subject: [PATCH 2/4] Handle maintainer import path for translations --- .../etc/cont-init.d/81-modifications.sh | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh b/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh index 0048b501c..97b670ee1 100755 --- a/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh +++ b/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh @@ -55,15 +55,33 @@ sed -i 's/"\.\$updatediv\.\"//g' "$HOME"/BirdNET-Pi/homepage/views.php echo "... adapting labels according to birdnet.conf" if export "$(grep "^DATABASE_LANG" /config/birdnet.conf)"; then bashio::log.info "Setting language to ${DATABASE_LANG:-en}" - python3 - <<'PY' + + if [[ -f "$HOME/BirdNET-Pi/scripts/utils/maintainer.py" ]]; then + PYTHONPATH="$HOME/BirdNET-Pi:$HOME/BirdNET-Pi/scripts:$HOME/BirdNET-Pi/scripts/utils:${PYTHONPATH:-}" \ + python3 - <<'PY' +import importlib.util import os +import sys + +home = os.environ.get("HOME", "/home/pi") +birdnet_root = os.path.join(home, "BirdNET-Pi") +for path in (birdnet_root, os.path.join(birdnet_root, "scripts"), os.path.join(birdnet_root, "scripts", "utils")): + if path not in sys.path: + sys.path.insert(0, path) + +if importlib.util.find_spec("scripts.utils.maintainer") is None: + print("Language maintainer module not found; skipping translation generation.") + raise SystemExit(0) + from scripts.utils.maintainer import create_language database_lang = os.environ.get("DATABASE_LANG", "en") - print(f"Creating translations for {database_lang}") create_language(database_lang) PY + else + bashio::log.warning "Language maintainer script not found; skipping translation generation." + fi else bashio::log.warning "DATABASE_LANG not found in configuration. Using default labels." fi From 4e5499c6d8394e214702302677242d6e74afd287 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Wed, 19 Nov 2025 09:22:47 +0100 Subject: [PATCH 3/4] Improve language export and error handling Refactor language handling and error messages in the script. --- .../rootfs/etc/cont-init.d/81-modifications.sh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh b/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh index 97b670ee1..96675c1f3 100755 --- a/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh +++ b/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh @@ -53,30 +53,31 @@ sed -i 's/"\.\$updatediv\.\"//g' "$HOME"/BirdNET-Pi/homepage/views.php # Correct language labels according to birdnet.conf echo "... adapting labels according to birdnet.conf" -if export "$(grep "^DATABASE_LANG" /config/birdnet.conf)"; then +if grep -q '^DATABASE_LANG=' /config/birdnet.conf; then + export "$(grep -m1 '^DATABASE_LANG=' /config/birdnet.conf)" bashio::log.info "Setting language to ${DATABASE_LANG:-en}" if [[ -f "$HOME/BirdNET-Pi/scripts/utils/maintainer.py" ]]; then PYTHONPATH="$HOME/BirdNET-Pi:$HOME/BirdNET-Pi/scripts:$HOME/BirdNET-Pi/scripts/utils:${PYTHONPATH:-}" \ - python3 - <<'PY' + python3 - <<'PY' 1>/dev/null import importlib.util import os import sys home = os.environ.get("HOME", "/home/pi") birdnet_root = os.path.join(home, "BirdNET-Pi") -for path in (birdnet_root, os.path.join(birdnet_root, "scripts"), os.path.join(birdnet_root, "scripts", "utils")): +for path in (birdnet_root, + os.path.join(birdnet_root, "scripts"), + os.path.join(birdnet_root, "scripts", "utils")): if path not in sys.path: sys.path.insert(0, path) if importlib.util.find_spec("scripts.utils.maintainer") is None: - print("Language maintainer module not found; skipping translation generation.") - raise SystemExit(0) + raise RuntimeError("Language maintainer module not found; skipping.") from scripts.utils.maintainer import create_language database_lang = os.environ.get("DATABASE_LANG", "en") -print(f"Creating translations for {database_lang}") create_language(database_lang) PY else From 643e571a97e7fc4e1c07d467765e188e7458a532 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Wed, 19 Nov 2025 09:23:45 +0100 Subject: [PATCH 4/4] Update config.yaml --- birdnet-pi/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/birdnet-pi/config.yaml b/birdnet-pi/config.yaml index 32335a748..0c19fc071 100644 --- a/birdnet-pi/config.yaml +++ b/birdnet-pi/config.yaml @@ -116,5 +116,5 @@ tmpfs: true udev: true url: https://github.com/alexbelgium/hassio-addons/tree/master/birdnet-pi usb: true -version: 2025.11.07 +version: 2025.11.08 video: true