You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
3.2 KiB
105 lines
3.2 KiB
# 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 feet
|
|
echo "$path/$outer_image # $inner_image" >> sameGPSfeet.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[@]}"
|
|
|