From 92750c988247244c00c5cc9cd892418cb47decb5 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Thu, 16 Jan 2025 12:12:14 +0100 Subject: [PATCH] Refactored --- .../rootfs/etc/cont-init.d/01-structure.sh | 75 ++++++------------- 1 file changed, 23 insertions(+), 52 deletions(-) diff --git a/birdnet-go/rootfs/etc/cont-init.d/01-structure.sh b/birdnet-go/rootfs/etc/cont-init.d/01-structure.sh index 2affe9856..b94db1ece 100755 --- a/birdnet-go/rootfs/etc/cont-init.d/01-structure.sh +++ b/birdnet-go/rootfs/etc/cont-init.d/01-structure.sh @@ -2,70 +2,41 @@ # shellcheck shell=bash set -e -################# -# Migrate files # -################# +# Required Commands +for cmd in yq amixer; do + command -v "$cmd" >/dev/null 2>&1 || { bashio::log.fatal "$cmd is required but not installed. Exiting."; exit 1; } +done + +# Default Variables +DEFAULT_BIRDSONGS_FOLDER="/data/clips/" +CONFIG_LOCATIONS=("/config/config.yaml" "/internal/conf/config.yaml") + +# Migrate Database if [ -f /data/birdnet.db ]; then bashio::log.warning "Moving db to /config" mv /data/birdnet.db /config fi -###################### -# Birdsongs location # -###################### - -# Get current settings +# Birdsongs Folder CURRENT_BIRDSONGS_FOLDER="clips/" -if [ -f /config/config.yaml ]; then - CURRENT_BIRDSONGS_FOLDER="$(yq '.realtime.audio.export.path' /config/config.yaml)" - CURRENT_BIRDSONGS_FOLDER="${CURRENT_BIRDSONGS_FOLDER//\"/}" -fi -# If default, converts it to its default path -if [[ "$CURRENT_BIRDSONGS_FOLDER" == "clips/" ]]; then - CURRENT_BIRDSONGS_FOLDER="/data/clips/" -fi +for configloc in "${CONFIG_LOCATIONS[@]}"; do + if [ -f "$configloc" ]; then + CURRENT_BIRDSONGS_FOLDER="$(yq '.realtime.audio.export.path' "$configloc" | tr -d '\"')" + break + fi +done +CURRENT_BIRDSONGS_FOLDER="${CURRENT_BIRDSONGS_FOLDER:-$DEFAULT_BIRDSONGS_FOLDER}" -# Get new setting BIRDSONGS_FOLDER="$(bashio::config "BIRDSONGS_FOLDER")" BIRDSONGS_FOLDER="${BIRDSONGS_FOLDER:-/config/clips}" BIRDSONGS_FOLDER="${BIRDSONGS_FOLDER%/}" -mkdir -p "$BIRDSONGS_FOLDER" || bashio::log.fatal "Warning, birdsongs folder $BIRDSONGS_FOLDER cannot be created" -bashio::log.info "... audio clips saved to $BIRDSONGS_FOLDER according to addon options" - -# Migrate data if different -if [[ "$CURRENT_BIRDSONGS_FOLDER" != "$BIRDSONGS_FOLDER" ]]; then - bashio::log.warning "The birdsongs folder was changed from $CURRENT_BIRDSONGS_FOLDER to $BIRDSONGS_FOLDER" - # Migrate files - if [[ -d "$CURRENT_BIRDSONGS_FOLDER" ]] && [[ "$(ls -A "$CURRENT_BIRDSONGS_FOLDER")" ][; then - bashio::log.warning "... audio clips found in $CURRENT_BIRDSONGS_FOLDER, migrating to $CURRENT_BIRDSONGS_FOLDER. Previous files will be kept in place with the folder renamed to $CURRENT_BIRDSONGS_FOLDER_migrated" - cp -rnf "$CURRENT_BIRDSONGS_FOLDER"/* "$BIRDSONGS_FOLDER"/ - mv "$CURRENT_BIRDSONGS_FOLDER" "$CURRENT_BIRDSONGS_FOLDER"_migrated - fi - # Adapt config file - echo "... adapting config.yaml" - for configloc in /config/config.yaml /internal/conf/config.yaml; do - if [ -f "$configloc" ]; then - yq -i -y ".realtime.audio.export.path = \"$BIRDSONGS_FOLDER/\"" "$configloc" - fi - done +if ! mkdir -p "$BIRDSONGS_FOLDER"; then + bashio::log.fatal "Cannot create $BIRDSONGS_FOLDER." + exit 1 fi -#################### -# Correct defaults # -#################### -bashio::log.info "Correct config for defaults" - -# Database location -echo "... database location is /config/birdnet.db" -for configloc in /config/config.yaml /internal/conf/config.yaml; do - if [ -f "$configloc" ]; then - yq -i -y ".output.sqlite.path = \"/config/birdnet.db\"" "$configloc" - fi -done - -# If default capture is set at 0%, increase it to 50% -current_volume="$(amixer sget Capture | grep -oP '\[\d+%]' | tr -d '[]%' | head -1)" 2>/dev/null || true -current_volume="${current_volume:-100}" +# Volume Adjustment +current_volume="$(amixer sget Capture | grep -oP '\[\d+%\]' | tr -d '[]%' | head -1 2>/dev/null || echo "100")" if [[ "$current_volume" -eq 0 ]]; then amixer sset Capture 70% bashio::log.warning "Microphone was off, volume set to 70%."