parent
6584a5dadf
commit
ace574eac9
@ -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[@]}" |
||||||
Loading…
Reference in new issue