Refactored

This commit is contained in:
Alexandre
2025-01-16 12:12:14 +01:00
committed by GitHub
parent c4a25fc670
commit 92750c9882

View File

@@ -2,70 +2,41 @@
# shellcheck shell=bash # shellcheck shell=bash
set -e set -e
################# # Required Commands
# Migrate files # 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 if [ -f /data/birdnet.db ]; then
bashio::log.warning "Moving db to /config" bashio::log.warning "Moving db to /config"
mv /data/birdnet.db /config mv /data/birdnet.db /config
fi fi
###################### # Birdsongs Folder
# Birdsongs location #
######################
# Get current settings
CURRENT_BIRDSONGS_FOLDER="clips/" CURRENT_BIRDSONGS_FOLDER="clips/"
if [ -f /config/config.yaml ]; then for configloc in "${CONFIG_LOCATIONS[@]}"; do
CURRENT_BIRDSONGS_FOLDER="$(yq '.realtime.audio.export.path' /config/config.yaml)" if [ -f "$configloc" ]; then
CURRENT_BIRDSONGS_FOLDER="${CURRENT_BIRDSONGS_FOLDER//\"/}" CURRENT_BIRDSONGS_FOLDER="$(yq '.realtime.audio.export.path' "$configloc" | tr -d '\"')"
fi break
# If default, converts it to its default path fi
if [[ "$CURRENT_BIRDSONGS_FOLDER" == "clips/" ]]; then done
CURRENT_BIRDSONGS_FOLDER="/data/clips/" CURRENT_BIRDSONGS_FOLDER="${CURRENT_BIRDSONGS_FOLDER:-$DEFAULT_BIRDSONGS_FOLDER}"
fi
# Get new setting
BIRDSONGS_FOLDER="$(bashio::config "BIRDSONGS_FOLDER")" BIRDSONGS_FOLDER="$(bashio::config "BIRDSONGS_FOLDER")"
BIRDSONGS_FOLDER="${BIRDSONGS_FOLDER:-/config/clips}" BIRDSONGS_FOLDER="${BIRDSONGS_FOLDER:-/config/clips}"
BIRDSONGS_FOLDER="${BIRDSONGS_FOLDER%/}" BIRDSONGS_FOLDER="${BIRDSONGS_FOLDER%/}"
mkdir -p "$BIRDSONGS_FOLDER" || bashio::log.fatal "Warning, birdsongs folder $BIRDSONGS_FOLDER cannot be created" if ! mkdir -p "$BIRDSONGS_FOLDER"; then
bashio::log.info "... audio clips saved to $BIRDSONGS_FOLDER according to addon options" bashio::log.fatal "Cannot create $BIRDSONGS_FOLDER."
exit 1
# 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
fi fi
#################### # Volume Adjustment
# Correct defaults # current_volume="$(amixer sget Capture | grep -oP '\[\d+%\]' | tr -d '[]%' | head -1 2>/dev/null || echo "100")"
####################
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}"
if [[ "$current_volume" -eq 0 ]]; then if [[ "$current_volume" -eq 0 ]]; then
amixer sset Capture 70% amixer sset Capture 70%
bashio::log.warning "Microphone was off, volume set to 70%." bashio::log.warning "Microphone was off, volume set to 70%."