Ось як я врешті-решт вирішив цю проблему. Це зайняло декілька кроків, і вимагає деяких скриптів і командного рядка, але це зробило трюк.
- Експортуйте зображення, які потрібно оновити з діафрагми, у папку, скажімо
~/Pictures/Updates
- Відкрийте альбом у програмі iPhoto
Використовуйте цей AppleScript, щоб отримати список імен файлів для основних зображень
set output_filename to "/Users/user/Pictures/album.txt"
tell application "iPhoto"
set pics to photos in current album
do shell script "echo \"# Current album contents\" > " & output_filename
repeat with pic in pics
set picpath to image path of pic
do shell script "echo " & picpath & " >> " & output_filename
end repeat
end tell
Використовуючи будь-який текстовий редактор, збережіть скрипт нижче update_pics.sh
і позначити його виконуваним ( chmod 755 update_pics.sh
у командному рядку)
#! /bin/bash
# a quick script to parse in a series of filenames, and update them
input_folder="$1"
backup_folder="$2"
if [ "$#" -ne 2 ]; then
echo "Usage: $0 [folder with new images] [folder for backups]"
exit 0
fi
if [ ! -d "$input_folder" ]; then
echo "Can't read input follder $input_folder"
exit -1
fi
if [ ! -d "$backup_folder" ]; then
mkdir -p "$backup_folder"
fi
if [ ! -d "$backup_folder" -o ! -w "$backup_folder" ]; then
echo "Can't write to backup folder $backup_folder"
exit -1
fi
while read line; do
# skip empty lines or comments
[ -z "$line" -o "${line:0:1}" = "#" ] && continue
if [ -f "$line" ]; then
filename=`basename "$line"`
input_file="$input_folder/$filename"
cp "$line" "$backup_folder"
if [ -f "$input_file" ]; then
echo "Replacing $filename"
cp "$input_file" "$line"
else
echo "Could not find input file $input_file"
fi
else
echo "$line does not exist"
fi
done
Щоб скористатися сценарієм, дайте йому розташування оновлених зображень, папку для створення резервних копій (я параноїк втрати даних), а потім трубу у файлі, створеному раніше. Наприклад:
update_pics.sh Updates/ Backups/ < album.txt
Якщо ви ще цього не зробили, закрийте програму iPhoto. Потім перезавантажте його, утримуючи Option і Command. Це має дати вам діалогове вікно для відновлення iPhoto. Потрібно лише відновити мініатюри, хоча ви можете відновити все інше. Докладніше про відновлення бібліотеки iPhoto від Apple
iPhoto, ймовірно, займе багато часу, щоб відновити ескізи, оскільки це буде повторно все їх. У вас є кілька альбомів, можливо, краще спочатку оновити картинки, спочатку альбом за альбомом, а потім відновити бібліотеку. Ось що я і зробив, і це спрацювало дуже добре.