diff --git a/scripts/advanced.php b/scripts/advanced.php index 7a077af..dab6339 100644 --- a/scripts/advanced.php +++ b/scripts/advanced.php @@ -5,9 +5,18 @@ error_reporting(E_ERROR); require_once "scripts/common.php"; $home = get_home(); $config = get_config(); +$user = get_user(); ensure_authenticated(); +if (isset($_GET['run_species_count'])) { + echo ""; + } + if(isset($_GET['submit'])) { $contents = file_get_contents('/etc/birdnet/birdnet.conf'); $restart_livestream = false; @@ -307,14 +316,15 @@ $newconfig = get_config();

Defines how full the disk should be before the purge operations occur.
Note: This variable is still active if Keep is set. This means that the servies will be stopped at the purge threshold.


- + - If different than 0 (keep all), defines the maximum number of files to be kept for each species, with priority give to files with highest confidence. - This value does not take into account the last 7 days (protected by default). + If different than 0 (keep all), defines the number of files to keep for each species, with priority given to files with higher confidence. This value does not include files from the last 7 days, these new files are protected against auto-deletion. Note only the spectrogram and audio files are deleted, the obsevation data remains in the database. The files protected through the "lock" icon are also not affected. +
+
diff --git a/scripts/disk_species_count.sh b/scripts/disk_species_count.sh new file mode 100755 index 0000000..2f15a7d --- /dev/null +++ b/scripts/disk_species_count.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +# Get default values +source /etc/birdnet/birdnet.conf +base_dir="$(readlink -f "$HOME/BirdSongs/Extracted/By_Date")" +cd "$base_dir" || exit 1 + +# Function to format numbers to k if ≥1000 +format_k() { + local value=$1 + if [ "$value" -ge 1000 ]; then + awk -v v="$value" 'BEGIN { printf "%.1fk", v/1000 }' + else + echo "$value" + fi +} + +# Get bird names from the database +bird_names=$(sqlite3 -readonly "$HOME"/BirdNET-Pi/scripts/birds.db </dev/null | wc -l) + total_file_count=$((total_file_count + total)) + + # Format total + total_display=$(format_k "$total") + + # Clean species name for display + species_display=$(echo "$species" | tr '_' ' ') + + # Save padded sort key + display line + printf "%05d %s : %s\n" "$total" "$total_display" "$species_display" >> "$data_file" +done <<<"$sanitized_names" + +# Avoid TERM error if not running in a terminal +[ -t 1 ] && clear + +# Build final output +{ + echo "BirdSongs stored on your drive" + echo " " + echo "Location : $base_dir: " + echo "Free space : $(df -h "$base_dir" | awk 'NR==2 {print $4}' | sed 's/G/ GB/; s/M/ MB/; s/K/ KB/')" + echo "Total species : $species_count" + echo "Total files : $(format_k "$total_file_count")" + echo "Total size : $(du -sh . | sed 's/G/ GB/; s/M/ MB/; s/K/ KB/' | cut -f1)" + echo " " + sort -r "$data_file" | sed 's/^[0-9]* //' +} > "$output_file" + +# Show results +cat "$output_file" + +# Clean up +rm -f "$data_file" "$output_file"