Compare commits
2 Commits
e51595ac56
...
ace574eac9
| Author | SHA1 | Date |
|---|---|---|
|
|
ace574eac9 | 8 months ago |
|
|
6584a5dadf | 8 months ago |
@ -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