Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

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
languagesql
title/Users/MyName/Documents/ps9export.sql
/*
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
languagebash
titleScript: /Users/MyName/Documents/convert_ps9_to_iphoto.sh
#!/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