From ace574eac93319d4f72e92a7449a986829215e6c Mon Sep 17 00:00:00 2001 From: Robert Date: Mon, 28 Apr 2025 22:01:13 -0400 Subject: [PATCH] Made bash array for invalid/size inner file issues. --- do_dups.inc | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 do_dups.inc diff --git a/do_dups.inc b/do_dups.inc new file mode 100644 index 0000000..7f55028 --- /dev/null +++ b/do_dups.inc @@ -0,0 +1,105 @@ +# Check if we found any images +if [ ${#images[@]} -eq 0 ]; then + echo "No images found." + exit 1 +fi + +MAX_SIZE_for_array=1000 +a_skips=() + +truncate_array() { + local -n arr_ref=$1 # Nameref (Bash 4.3+) + local max_size=$2 + local array_length=${#arr_ref[@]} + + if [ $array_length -gt $max_size ]; then + # echo "Array too large ($array_length)" + #arr_ref=("${arr_ref[@]:0:$max_size}") # Keep oldest data + arr_ref=("${arr_ref[@]:1}") # POP First (Shift) + # unset arr_ref[${#arr_ref[@]}-1] # POP LAST + fi +} + +# Outer loop +for ((i = 0; i < ${#images[@]}; i++)); do + outer_image="${images[$i]}" + skip_outer=false # Reset flag for each outer loop iteration + + for skip in "${a_skips[@]}"; do + if [ "$path/$skip" = "$path/$outer_image" ]; then + skip_outer=true + break + fi + done + + # Skip to next outer iteration if flagged + if [ "$skip_outer" = true ]; then + continue + fi + + # Inner loop (only later images to avoid double-checks) + for ((j = i + 1; j < ${#images[@]}; j++)); do + inner_image="${images[$j]}" + skip_inner=false # Reset flag for each inner loop iteration + + for skip in "${a_skips[@]}"; do + if [ "$path/$skip" = "$path/$inner_image" ]; then + skip_inner=true + break + fi + done + + # Skip to next inner iteration if flagged + if [ "$skip_inner" = true ]; then + continue + fi + + echo -e "\nComparing files: $outer_image TO $inner_image" + python3 dedup.py "$path/$outer_image" "$path/$inner_image" "$2" + exit_code=$? + + case $exit_code in + 1) # Duplicate found + echo "$path/$outer_image # $inner_image" >> dups.txt + if [ "$2" = "forreal" ]; then + mv "$path/$outer_image" "$path/dups" + fi + break + ;; + 2) # Close match + echo "$path/$outer_image # $inner_image" >> alike.txt + break + ;; + 3) # Skip with size issues inner image + echo "$path/$inner_image" >> size.txt + a_skips+=("$inner_image") + truncate_array a_skips $MAX_SIZE_for_array + ;; + 4) # Skip invalid inner image + echo "$path/$inner_image" >> invalid.txt + a_skips+=("$inner_image") + truncate_array a_skips $MAX_SIZE_for_array + ;; + 5) # Same GPS + echo "$path/$outer_image # $inner_image" >> sameGPS.txt + break + ;; + 6) # Same GPS within a mile + echo "$path/$outer_image # $inner_image" >> sameGPSmile.txt + break + ;; + 8) # Invalid outer image + echo "$path/$outer_image" >> invalid.txt + if [ "$2" = "forreal" ]; then + echo "To remove bad image run: rm $path/$outer_image" + fi + break + ;; + 9) # Image size issue + echo "$path/$outer_image" >> size.txt + break + ;; + esac + done +done +# echo "${a_skips[@]}"