Table of Contents |
---|
Problem
Bei der Organisation meiner Bilder mit "Adobe Elements 9 Organizer" angefangen und danach zu iPhoto gewechselt.
Alle Bewertungen der Bilder nochmal eingeben ? Das sind mehrere Tausend !!
Besser wäre eine automatisierte Übertragung, aber iPhoto unterstützt leider keinen Import von Adobe.
Lösung
Das Problem läßt sich mit ein paar sql-Befehlen erledigen, da beide Tools ihre Daten in sqlite Datenbanken speichert.
sqlite ist eine sehr einfache Datenbank, aber durchaus leistungsfähig.
Leider ist mir die direkte Übertragung der Bewertung nicht gelungen.
Der Plan besteht darin, die Namen der Fotos mit 3 Sternen umzubenennen in "3_" + UrsprünglicherName, bzw. 4 Sterne "4_" + UrsprünglicherName ... usw.
Es wird dabei angenommen dass der ursprüngliche Name aus dem Dateinamen besteht ohne die Dateinamenerweiterung.
Diese Photos läßt man sich in iPhoto durch ein "intelligentes Album" anzeigen, dann die Bewertung setzen ... alle mit Namen 3_ markieren und APPLETASTE + 3 weist die Wertung 3 Sterne zu.
Danach werden die Namen wieder auf den ursprünglichen Wert zurückgesetzt. Fertig!
Vorbereitung
Hilfreich könnte sein sich ein Programm zu installieren dass sqlite-Datenbanken in einem GUI darstellen kann.
Das ist aber nicht unbedingt erforderlich, da "sqlite3" bereits auf OS-X installiert ist.
Code Block |
---|
Mein-MacBook-Pro:Users MyName$ type sqlite3 sqlite3 is /usr/bin/sqlite3 Mein-MacBook-Pro:Users MyName$ |
Wenn man es mit grafischer Oberfläche haben möchte empfehle ich "SQLite Database Browser" oder "RazorSQL"
Überlegung: Welche Fotos möchte ich auswählen, damit deren Bewertung übertragen wird ?
Eigentlich der wichtigste Teil der Aktion !!
An dieser Stelle sind etwas logisches Denken und evtl. sql-Grundkenntnisse hilfreich.
Welche Fotos auszuwählen sind schreibt man als sql-Befehl in die Datei /Users/MyName/Documents/ps9export.sql
Code Block | ||||
---|---|---|---|---|
| ||||
/* Zur Erläuterung: mt.full_filepath => Der volle Pfadname zur Bilddatei mdi.value => Die Bewertung als Anzahl Sterne In der where-Bedingung (Filterung der Daten): description_id = 5 (das ist das Kennzeichen für Bewertung) value > 0 (Alle Bilder mit einer Bewertung von mindestens 1 Stern) mt.full_filepath like '%SUCHMUSTER%' (Alle Bilder die das Suchmuster in ihrem Pfadname oder Dateinamen haben Alle Bedingungen sind mit "and" verknüpft, so dass nur Daten ausgewählt werden die gleichzeitig alle Bedingungen erfüllen. Hier werden also alle Fotos gelesen, die eine Bewertung haben und ein bestimmtes Suchmuster haben. */ select mt.full_filepath, mdi.value from metadata_integer_table mdi,media_to_metadata_table mdt, media_table mt where description_id = 5 and value > 0 and mdi.id = mdt.metadata_id and mt.id = mdt.media_id and mt.full_filepath like '%SUCHMUSTER%'; |
Daten aus "Adobe Elements 9 Organizer" exportieren
Wo speichert der Adobe Organizer seine Daten ?
Vermutlich unter /Users/MyName/LibraryApplication Support/Adobe/Elements Organizer/Catalogs/Mein Katalog/catalog.pse9db
In diesen Pfad wecheln ... und dann folgenden Befehl eingeben:
Code Block |
---|
sqlite3 catalog.pse9db </Users/MyName/Documents/ps9export.sql >/Users/MyName/Documents/ps9export.txt |
Das Ergbnis dieses Exports ist nun in der Datei /Users/MyName/Documents/ps9export.txt.
Es wird dringend empfohlen den Inhalt dieser Datei zu prüfen, weil das die Basis für den folgenden import in iPhoto ist !!!
Die Datei muss in Spalte 1 den vollen Pfadnamen der Bilddatei haben, dann der Feldtrenner "|" und dann die Bewertung.
Daten in iPhoto importieren
Es wird angenommen dass die IPhoto-Bibliothek in folgenden Pfad gespeichert ist, ggf. muss der Pfadname geändert werden.
/Users/MyName/Pictures/iPhoto-Mediathek/Database/apdb
Info |
---|
An dieser Stelle ist eine Datensicherung fällig mit Hilfe eines tar-Befehls: cd /Users/MyName/Pictures/iPhoto-Mediathek/Database/ tar -czf /Users/MyName/Documents/apdb.tar.gz apdb |
Der Import wird durch das folgende Shellscript durchgeführt: (iPhoto darf während des imports nicht laufen !!)
Code Block | ||||
---|---|---|---|---|
| ||||
#!/bin/bash cd /Users/MyName/Pictures/iPhoto-Mediathek/Database/apdb #Wertung 1-5 Sterne for STARS in 1 2 3 4 5 do FILES=`awk -F'|' ' $2=="'${STARS}'" { print $1 } ' /Users/keipke/Documents/ps9export.txt` for ii in $FILES do FNAME=`basename $ii '.JPG'` #echo $FNAME FNEU=${STARS}_${FNAME} #echo $FNEU sqlite3 Library.apdb "update RKVersion set name = '$FNEU' where masterUuid in (select uuid from RKMaster where imagePath = '$ii')" done done |
Wie beschrieben muss man nun iPhoto starten, lässt sich die Photos beginnend mit 1_ bzw 2_ usw. anzeigen und vergibt seine Sterne ...
iPhoto wieder schließen und die ganze Sache wieder rückgängig machen.
Hierzu wird das Script convert_ps9_to_iphotos.sh so angepasst, dass in der Zeile die mit sqlite3 beginnt die Variable FNEU ersetzt wird durch FNAME.
Das Script erneut ausführen und alles sollte OK sein. In iPhoto haben die Fotos wieder den Namen aus dem Dateinamen
Wenn was schief gegangen ist
Code Block |
---|
#Rücksicherung aus dem tar-Archiv: (iPhoto darf nicht laufen !!!) cd /Users/MyName/Pictures/iPhoto-Mediathek/Database/ tar -xzf /Users/MyName/Documents/apdb.tar.gz |