ask before writing changes
This commit is contained in:
parent
d0af37ab9c
commit
2940ebb16d
@ -4,6 +4,7 @@
|
|||||||
# Directory to start the search
|
# Directory to start the search
|
||||||
base_dir=~/Pictures/Photos/Camera
|
base_dir=~/Pictures/Photos/Camera
|
||||||
log_file="metadata_changes.log"
|
log_file="metadata_changes.log"
|
||||||
|
temp_file="metadata_changes_temp.log"
|
||||||
|
|
||||||
# Function to extract date and time from filename
|
# Function to extract date and time from filename
|
||||||
extract_datetime_from_filename() {
|
extract_datetime_from_filename() {
|
||||||
@ -21,6 +22,8 @@ extract_datetime_from_filename() {
|
|||||||
datetime="${BASH_REMATCH[1]:0:4}:${BASH_REMATCH[1]:4:2}:${BASH_REMATCH[1]:6:2} ${BASH_REMATCH[2]:0:2}:${BASH_REMATCH[2]:2:2}:${BASH_REMATCH[2]:4:2}"
|
datetime="${BASH_REMATCH[1]:0:4}:${BASH_REMATCH[1]:4:2}:${BASH_REMATCH[1]:6:2} ${BASH_REMATCH[2]:0:2}:${BASH_REMATCH[2]:2:2}:${BASH_REMATCH[2]:4:2}"
|
||||||
elif [[ "$filename" =~ ([0-9]{8}) ]]; then
|
elif [[ "$filename" =~ ([0-9]{8}) ]]; then
|
||||||
datetime="${BASH_REMATCH[1]:0:4}:${BASH_REMATCH[1]:4:2}:${BASH_REMATCH[1]:6:2} 00:00:00"
|
datetime="${BASH_REMATCH[1]:0:4}:${BASH_REMATCH[1]:4:2}:${BASH_REMATCH[1]:6:2} 00:00:00"
|
||||||
|
elif [[ "$filename" =~ ([0-9]{4})-([0-9]{2})-([0-9]{2})\ ([0-9]{2})_([0-9]{2})_([0-9]{2}) ]]; then
|
||||||
|
datetime="${BASH_REMATCH[1]}:${BASH_REMATCH[2]}:${BASH_REMATCH[3]} ${BASH_REMATCH[4]}:${BASH_REMATCH[5]}:${BASH_REMATCH[6]}"
|
||||||
elif [[ "$filename" =~ ([0-9]{4})-([0-9]{2})-([0-9]{2}) ]]; then
|
elif [[ "$filename" =~ ([0-9]{4})-([0-9]{2})-([0-9]{2}) ]]; then
|
||||||
datetime="${BASH_REMATCH[1]}:${BASH_REMATCH[2]}:${BASH_REMATCH[3]} 00:00:00"
|
datetime="${BASH_REMATCH[1]}:${BASH_REMATCH[2]}:${BASH_REMATCH[3]} 00:00:00"
|
||||||
fi
|
fi
|
||||||
@ -57,10 +60,10 @@ log_change() {
|
|||||||
photo="$1"
|
photo="$1"
|
||||||
old_date="$2"
|
old_date="$2"
|
||||||
new_date="$3"
|
new_date="$3"
|
||||||
echo "File: $photo" >> "$log_file"
|
echo "File: $photo" >> "$temp_file"
|
||||||
echo " Old Date: $old_date" >> "$log_file"
|
echo " Old Date: $old_date" >> "$temp_file"
|
||||||
echo " New Date: $new_date" >> "$log_file"
|
echo " New Date: $new_date" >> "$temp_file"
|
||||||
echo "" >> "$log_file"
|
echo "" >> "$temp_file"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Loop through each year directory
|
# Loop through each year directory
|
||||||
@ -89,15 +92,13 @@ for year_dir in "$base_dir"/*/; do
|
|||||||
if [ -n "$filename_datetime" ]; then
|
if [ -n "$filename_datetime" ]; then
|
||||||
new_date="$filename_datetime"
|
new_date="$filename_datetime"
|
||||||
log_change "$photo" "No date metadata" "$new_date"
|
log_change "$photo" "No date metadata" "$new_date"
|
||||||
echo "Updating date for: $photo"
|
echo "Found: $photo"
|
||||||
echo " Extracted date from filename: $new_date"
|
echo " Extracted date from filename: $new_date"
|
||||||
# exiftool -overwrite_original -DateTimeOriginal="$new_date" "$photo"
|
|
||||||
else
|
else
|
||||||
new_date="$year:$month:01 00:00:00"
|
new_date="$year:$month:01 00:00:00"
|
||||||
log_change "$photo" "No date metadata" "$new_date"
|
log_change "$photo" "No date metadata" "$new_date"
|
||||||
echo "Updating date for: $photo"
|
echo "Found: $photo"
|
||||||
echo " Defaulting to directory date: $new_date"
|
echo " Defaulting to directory date: $new_date"
|
||||||
# exiftool -overwrite_original -DateTimeOriginal="$new_date" "$photo"
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
photo_year=$(echo "$photo_date" | cut -d':' -f1)
|
photo_year=$(echo "$photo_date" | cut -d':' -f1)
|
||||||
@ -126,8 +127,7 @@ for year_dir in "$base_dir"/*/; do
|
|||||||
echo " Directory date: $year/$month"
|
echo " Directory date: $year/$month"
|
||||||
echo " Photo date: $photo_date"
|
echo " Photo date: $photo_date"
|
||||||
echo " Filename date: $filename_datetime"
|
echo " Filename date: $filename_datetime"
|
||||||
echo " Updating photo metadata to match filename date."
|
echo " Suggested action: Update photo metadata to match filename date."
|
||||||
# exiftool -overwrite_original -DateTimeOriginal="$new_date" "$photo"
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "Mismatch found: $photo"
|
echo "Mismatch found: $photo"
|
||||||
@ -142,9 +142,23 @@ for year_dir in "$base_dir"/*/; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# Ask for confirmation before proceeding to the next year
|
# Ask for confirmation before proceeding to the next year
|
||||||
read -p "Finished processing year $year. Do you want to continue to the next year? (y/n): " response
|
read -p "Finished processing year $year. Do you want to save the changes and continue to the next year? (y/n): " response
|
||||||
if [[ "$response" != "y" ]]; then
|
if [[ "$response" != "y" ]]; then
|
||||||
echo "Stopping script."
|
echo "Stopping script."
|
||||||
|
rm -f "$temp_file"
|
||||||
exit 0
|
exit 0
|
||||||
|
else
|
||||||
|
# Apply changes and save log
|
||||||
|
while IFS= read -r line; do
|
||||||
|
if [[ "$line" == File:* ]]; then
|
||||||
|
photo=$(echo "$line" | cut -d' ' -f2-)
|
||||||
|
elif [[ "$line" == " New Date:"* ]]; then
|
||||||
|
new_date=$(echo "$line" | cut -d' ' -f3-)
|
||||||
|
echo exiftool -overwrite_original -DateTimeOriginal="$new_date" "$photo"
|
||||||
|
fi
|
||||||
|
done < "$temp_file"
|
||||||
|
|
||||||
|
cat "$temp_file" >> "$log_file"
|
||||||
|
rm -f "$temp_file"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user