Skrypt iPhoto do eksportu zdjęć

Posted on Tue 09 September 2008 in Tips 4 Mac OSX • 2 min read

Zupełnie przypadkiem moje skrypty mogą służyć do wynajdywania błędów w bibliotece zdjęć. Takie błędy zdarzają się gdy zawartość biblioteki była zmieniana poza iPhoto, oraz wtedy gdy przy kolejnych importach opcja importu zdjęć do biblioteki raz była włączona, a drugim razem wyłączona. Jak tak zrobiłem i ciężko tego żałuje.
Skrypt przy okazji wykorzystam do zbudowania pełnego zestawu zdjęć z biblioteki, potem wszystko usunę i zbuduję jeszcze raz ale już z konsekwentnie włączonym importem.
Zastanawiam się jeszcze tylko czy już teraz nie zdecydować się na podział na kilka niezależnych bibliotek np. za pomocą iPhoto Buddy.
Skrypt napisałem w Bashu, a odpala go plugin ScriptExporter. Bash to ohyda, nienawidzę tego gówna. Nadaje się, owszem do krótkich, jednolinijkowych zaklęć, przy dłuższych rzeczach robionych od czasu do czasu, jest makabryczny.
Skrypt to PRYMITYW ale robi swoje. Zdjęć nie kopiuję, bo po co?, tylko linkuję (niech żyje Unix!). Na koniec można podpiąć np. dysk USB i skopiować nań oryginały.
Uwaga! iPhoto potrafi eksportować jedynie albumy, eventy ignoruje, zatem przed pełnym eksportem należy żmudnie porobić albumy dla wszystkich posiadanych zdjęć.
Anyway, poniżej wypociny:
skrypty są dwa, jeden do trybu Preflight, drugi do PerItem, Postflight nie jest wykorzystywany.
Preflight jest taki:
#!/bin/sh
DIR="/Users/paczor/Desktop/ImageLinks"
ZNAKI=", . \ / + :"
if ! [ -d ${DIR} ] ; then
mkdir $DIR
fi
# iPAlbumCount - ile albumów
for (( i=0 ; i < iPAlbumCount ; i++ )) ; do
ALBUM_x=iPAlbumName_$i
eval ALBUM=\$$ALBUM_x
ALBUM=`echo "$ALBUM" | tr " " "_"`
# podejrzane znaki w nazwach albumów
# zamieniam na podkreślenie
for znak in $ZNAKI
do
ALBUMTEMP=`echo "$ALBUM" | tr "$znak" "_"`
ALBUM="$ALBUMTEMP"
done
# usuwam zbędne znaki i ciąg "_Album"
ALBUM=`echo "$ALBUM" | sed -e 's/\!//'`
ALBUM=`echo "$ALBUM" | sed -e 's/__/_/'`
ALBUM=`echo "$ALBUM" | sed -e 's/_Album$//'`
ALBUMPATH="$DIR/$ALBUM"
if ! [ -d ${ALBUMPATH} ] ; then
mkdir "$ALBUMPATH"
fi
done
PerItem jest taki:
#!/bin/sh
DIR="/Users/paczor/Desktop/ImageLinks"
ZNAKI=", . \ / + :"
for i in $iPAlbumsOfImage
do
ALBUM_x=iPAlbumName_$i
eval ALBUM=\$$ALBUM_x
ALBUM=`echo "$ALBUM" | tr " " "_"`
for znak in $ZNAKI
do
ALBUMTEMP=`echo "$ALBUM" | tr "$znak" "_"`
ALBUM="$ALBUMTEMP"
done
ALBUM=`echo "$ALBUM" | sed -e 's/\!//'`
ALBUM=`echo "$ALBUM" | sed -e 's/__/_/'`
ALBUM=`echo "$ALBUM" | sed -e 's/_Album$//'`
ALBUMPATH="$DIR/$ALBUM"
ln -s "$iPImageSourcePath" "$ALBUMPATH"
done
Testy wykazały, że przy dużej ilości zdjęć iPhoto się zawiesza w trakcie użycia powyższych skryptów. Zachodzi pytanie: w czym problem? Może system plików? Może któreś pliki mają zbyt wydziwione nazwy?