[Script] iPhoto Mediathek aufräumen (iPhoto-Diet-Ersatz)

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Hi Leute,

es nervt mich schon lange, dass es irgendwie keinen Nachfolger von iPhoto Diet gibt und wie man hier immer wieder liest, geht es auch anderen so.

Deswegen habe ich mal versucht ein AppleScript zu basteln:

Replace Originals with Modified Photos
Kleines AppleScript für iPhoto ’09, welches bei bearbeiteten Bildern die nicht mehr benötigten Originale entfernt. Dabei wird das Original in den Papierkorb geschoben und das bearbeitete Bild an den Ort des Originals verschoben. Da iPhoto diese Änderung nicht bemerkt, wird abschließend die Funktion „Zurück zum Original“ ausgeführt.

Installation: Entweder einfach per Doppelklick ausführen oder in den Ordner ~/Library/Scripts/Applications/iPhoto kopieren, welcher ggf. noch angelegt werden muss.

Download hier: http://www.tekl.de/deutsch/Kleine_Helferlein.html

Das Skript wurde schon von vielen erfolgreich eingesetzt, aber dennoch: BENUTZUNG AUF EIGENE GEFAHR!

Hier noch eine kleine Schritt-für-Schritt-Anleitung:

  1. Starte iPhoto
  2. Wähle die Bilder aus, welche du „bereinigen“ möchtest
  3. Starte das Skript/Programm
  4. Du wirst nun gefragt worauf die Funktion angewendet werden soll
  5. Wähle dort „Ausgewählte Fotos”
  6. Nun passiert folgendes:
  7. Alle markierten Bilder werden dem neu angelegten Album „Fotos in Bearbeitung“ zugewiesen
  8. Diese Album wird nun von meinem Skript abgearbeitet
  9. Nach erfolgreicher Bearbeitung wird das Album in „Bearbeitete Fotos“ umbenannt
  10. Es erscheint ein Hinweis, dass die Funktion „zurück zum Original“ ausgeführt werden muss
  11. Wenn du den Hinweis schließt, sollte direkt schon die Funktion „Zurück zum Original“ aufgerufen sein
  12. Die bestätigst du mit OK
  13. Sollte die Funktion „Zurück zum Original“ nicht automatisch aufgerufen worden sein, musst du sie manuell über einen Rechtsklick auf alle markierten Bilder aufrufen.
  14. Danach kannst du das Album „Bearbeitete Fotos“ löschen

Sollte was schief gegangen sein, findest du die Originale noch im Papierkorb im Finder. Evtl. empfiehlt es sich zuvor den Papierkorb zu leeren.

Das Skript auf alle Fotos loszulassen sollte wohl überlegt sein. Bei sehr vielen Bildern wird das Skript recht langsam. Besser alle Fotos in mehreren Blöcken abarbeiten.
 
Zuletzt bearbeitet von einem Moderator:

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Ich habe das Skript nun mal ausgiebiger getestet. Leider gibt es in seltenen Fällen Ereignisse wo der Ereignis-Ordner in "Modified" einen anderen Namen hat als in "Originals". Warum das so ist, ist mir nicht klar. Leider kommt mein Script damit nicht zurecht, da ich den Originals-Ordner mehr oder weniger raten muss.

Ansonsten habe ich das Skript erfolgreich auf mehrere 100 Bilder angewendet. Da es aber nicht besonders schnell ist, habe ich es mal etwas verbessert:

v0.1.1:
- Da man AppleScript die Auswahl nicht 'retten' kann, wird nun ein Album angelegt, welches alle bearbeiteten Bilder enthält. So wird sichergestellt dass das Skript auch noch funktioniert wenn während der Ausführung versehentlich in iPhoto die Auswahl geändert wird.
- Das Skript wählt jedes Fotos einzeln aus, welches bearbeitet wird. So sieht man, dass sich was tut.
 

Anhänge

  • Replace Originals with Modified Photos v0.1.1.zip
    50,7 KB · Aufrufe: 594

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Haben die, die runtergeladen haben das Skript auch getestet? Hat es bei euch funktioniert?
 

Nighthawk

Linsenhofener Sämling
Registriert
16.12.06
Beiträge
2.558
Danke schonmal auf jeden Fall. Werde es bei Gelegenheit testen.
 

moog_t

Erdapfel
Registriert
28.02.09
Beiträge
1
Hi! Wäre es viel Arbeit das Script auch auch iPhoto '08 anzupassen? Dann würde ich es sehr gerne ausgiebigst testen!

Liebe Grüße /moog_t.



Haben die, die runtergeladen haben das Skript auch getestet? Hat es bei euch funktioniert?
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Keine Ahnung, habe kein iPhoto '08. Hast du es denn schon ausprobiert? Du kannst das Skript im Skripteditor bearbeiten, so dass es nicht meckert wenn du kein iPhoto '09 hast. Ich kann mir gut vorstellen, dass es auch mit älteren iPhotos klappt. Aber hier gilt um so mehr vorher ein Backup zu machen oder es an wenigen Bildern zu testen.
 

hernadi

Idared
Registriert
12.04.05
Beiträge
29
Das Script 0.1. funktioniert blendend! Danke !!! Ich mag es sogar lieber als iPhoto diet.

Noch eine Frage zu Version 0.1.1. Ich verstehe die Beschreibung nicht. "Da man AppleScript die Auswahl nicht 'retten' kann, wird nun ein Album angelegt, welches alle bearbeiteten Bilder enthält. So wird sichergestellt dass das Skript auch noch funktioniert wenn während der Ausführung versehentlich in iPhoto die Auswahl geändert wird."

Was heißt das genau? Werden alle gelöschten Originale in ein Album gelegt? Wenn ich es wörtlich nehme, blick ich gar nicht mehr durch, denn was soll es bringen alle "bearbeiteten Bilder", sprich gekippte und verbesserte, die ja eh schon in der Library sind und die man behalten möchte, einem neuen Album zuzuordnen ??? Und warum sollte man während das Script läuft die Auswahl ändern ???

"Das Skript wählt jedes Fotos einzeln aus, welches bearbeitet wird. So sieht man, dass sich was tut."

Das sieht man doch auch wenn sich der Papierkorb füllt :)

Woran es liegt, dass "Modiefied Ordner" gelegentlich anders heißen? Vielleicht daran, dass man ab und zu Ordner nach dem Import in ein Ereignis umbenennt. Hatte mal ein Ereignis ohne Namen vom iPhone importiert. Es wurde mit dem Datum als "Namen" automatisch benannt. Später hab' ich es umbenannt und festgestellt, dass der Ordnername im Finder aber immer noch das "Datum" war, auch wenn das Ereignis jetzt ganz anders hieß. Normalerweise heißen die Finder-Ordner ja so wie die Ereignisnamen, die man beim Import vergibt. Vielleicht hängt's da ja.

Noch ein andere Frage: "Installation: Entweder einfach per Doppelklick ausführen oder in den Ordner ~/Library/Scripts/Applications/iPhoto kopieren, welcher ggf. noch angelegt werden muss."

Hmmm... was soll denn passieren wenn man diesen Ordner in der Home Library anlegt - ein neuer Button in iPhoto vielleicht? Läuft's dann automatisiert? Verstehe nicht was das Kopieren bewirkt. Ich kenne mich mit Scripts nicht so gut aus :(

Aber wirklich Dank für diesen längst überfälligen iPhoto-Diet-Ersatz!
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Das Script 0.1. funktioniert blendend! Danke !!! Ich mag es sogar lieber als iPhoto diet.

Schön, endlich mal jemand, der es ausgiebiger getestet hat.

Noch eine Frage zu Version 0.1.1. Ich verstehe die Beschreibung nicht. "Da man AppleScript die Auswahl nicht 'retten' kann, wird nun ein Album angelegt, welches alle bearbeiteten Bilder enthält. So wird sichergestellt dass das Skript auch noch funktioniert wenn während der Ausführung versehentlich in iPhoto die Auswahl geändert wird."

Was heißt das genau? Werden alle gelöschten Originale in ein Album gelegt? Wenn ich es wörtlich nehme, blick ich gar nicht mehr durch, denn was soll es bringen alle "bearbeiteten Bilder", sprich gekippte und verbesserte, die ja eh schon in der Library sind und die man behalten möchte, einem neuen Album zuzuordnen ??? Und warum sollte man während das Script läuft die Auswahl ändern ???

Das Problem ist, dass das Skript ja nur die ausgewählten Bilder bearbeiten soll. Wenn sich aber während die Bilder abgearbeitet werden die Auswahl ändert, kommt das Skript durcheinander. Normalerweise kann man in AppleScript so eine Auswahl zwischenspeichern, bei iPhoto klappt das aber nicht. Deswegen der Umweg über ein Album, darauf kann man dann unabhängig von der Auswahl vom Skript aus zugreifen.

"Das Skript wählt jedes Fotos einzeln aus, welches bearbeitet wird. So sieht man, dass sich was tut."
Das sieht man doch auch wenn sich der Papierkorb füllt :)
Empfindest du das als störend?

Woran es liegt, dass "Modiefied Ordner" gelegentlich anders heißen? Vielleicht daran, dass man ab und zu Ordner nach dem Import in ein Ereignis umbenennt. Hatte mal ein Ereignis ohne Namen vom iPhone importiert. Es wurde mit dem Datum als "Namen" automatisch benannt. Später hab' ich es umbenannt und festgestellt, dass der Ordnername im Finder aber immer noch das "Datum" war, auch wenn das Ereignis jetzt ganz anders hieß. Normalerweise heißen die Finder-Ordner ja so wie die Ereignisnamen, die man beim Import vergibt. Vielleicht hängt's da ja.

Stimmt, das könnte sein. Mal schauen, ob man evtl. das Skript noch ergänzen kann, dass es auch die Ordnernamen ans Ereignis anpasst.

Noch ein andere Frage: "Installation: Entweder einfach per Doppelklick ausführen oder in den Ordner ~/Library/Scripts/Applications/iPhoto kopieren, welcher ggf. noch angelegt werden muss."

Hmmm... was soll denn passieren wenn man diesen Ordner in der Home Library anlegt - ein neuer Button in iPhoto vielleicht? Läuft's dann automatisiert? Verstehe nicht was das Kopieren bewirkt. Ich kenne mich mit Scripts nicht so gut aus :(

Dann erscheint das Skript im Skriptmenü, welches man über das AppleScript-Dienstprogramm aktivieren kann.
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Ich habe mal nachgeschaut. Leider kann ich mit AppleScript nicht den Namen eines Ereignisses ermitteln, somit kann ich leider nicht den Ordnernamen korrigieren. Leider. Hätte schwören können dass es geht. Apple hat die AppleScript-Schnittstelle nicht mehr mit erweitert.
 

t_heinrich

Starking
Registriert
19.12.05
Beiträge
222

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Danke für die Rückmeldung. Die erste Meldung besagt, dass die Option "Zugriff für Hilfsgeräte aktivieren" unter Systemeinstellungen/Bedienungshilfen nicht aktiviert sei. Ist das bei dir der Fall? War das Fenster mit den Bedienungshilfen während des Skriptlaufs offen? Die zweite Meldung ist mir unerklärlich, da das Skript sich ja nicht selber modifizieren und speichern will.

Es könnte aber auch schlicht ein Timing-Problem sein, wovon AppleScript leider sehr gerne mal betroffen ist. D.h. ein Befehl wurde noch nicht ganz abgearbeitet während der nächste ausgeführt wird. Hast du während des Skriptlaufs noch was anderes gemacht?
 

t_heinrich

Starking
Registriert
19.12.05
Beiträge
222
Hallo Tekl,

vielen Dank für deine Rückmeldung, habe jetzt übers verlängerte WoEn nochmal ausgiebig getestet und dabei paralell nichts am Mac gemacht.
Also ich habe jetzt nicht alle 8.000 Bilder genommen, sondern einzelne Events, die meistens so in 1.000er Blöcken aufgeteilt sind.
Hier lief das Skript einfwandfrei durch.
Allerdings bekomme ich von AppleScript am Schluß immer eine Info, dass eine Zeitüberschreitung stattgefunden hat.

Ansonsten wie schon geschrieben eine sehr feine Sache dein Skript!

Grüße Thomas
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Interessant wäre zu wissen, wo genau ein Timeout auftritt. Der ließe sich ggf. umgehen.
 

t_heinrich

Starking
Registriert
19.12.05
Beiträge
222
Mmmh, wie kann ich das denn feststellen?
Wenn ich mich recht entsinne, sehe ich diese Meldung erst nach dem Abschlußinfofenster deines Skriptes.
Also ich bestätige die Info, dass x Bilder verschoben worden sind und dann erhalten ich die Meldung.
Wenn es eine Möglichkeit des Eingrenzens gibt, kann ich es gerne ausprobieren, wobei bei mir mittlweile alle Bilder entsprechend verschoben sind.

Unabhängig davon: müssten den im Ordner Originals nicht die Bilder entsprechend meiner Ereignisse sortiert sein?
Dies ist bei mir nämlich nicht der Fall.

Gruß Thomas
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Die Eingrenzung könnte schon reichen. Mal schauen.

Das mit der Sortierung habe ich aber jetzt nicht verstanden. Was meinst du damit?
 

t_heinrich

Starking
Registriert
19.12.05
Beiträge
222
OK, war vielleicht ein wenig zu oberflächlich beschrieben.
Ich habe mir mal etwas genauer die Struktur in der Datenbank selbst angeschaut.
Also in iPhoto habe ich alle meine Fotos (ca. 8000 Stk.) in Alben organisiert und deshalb insgesamt nur 8 Ereignisse (Urlaub, Job, Schule, Freunde usw...).
Genau diese Ereignisse finde ich auf Ordnerebene im Ordner "Modified" nach Jahren unterteilt wieder. Also Ordner "Modified" -> Ordner "zB 2001, 2002..." -> Ereignis "job".
Bei dem Ordner "Originals" habe ich auch die Ordner mit den Jahreszahlen, aber dann die Ereignisse als Datum benannt, so wie sie anscheinend beim importieren erzeugt worden sind.
Oder hat das Ganze so seine Berechtigung? Ich bin davon ausgegangen, dass die Ordnerstruktur in den beiden Ordnern "Originals" und "Modified" gleich sein muß.

Grüße Thomas

PS: Anders gefragt, gibt es irgendwo eine gute Erklärung über den Aufbau der iPhoto Bibliothek?
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Achso, das Problem wurde hier ja schon angerissen. Das Problem ist, dass iPhoto beim Umbenennen von Ereignissen irgendwie nicht alle Ordner ändert, sondern die Import-Struktur beibehält. Wäre an sich keine Problem, wenn Apple es zulassen würde, dass man per AppleScript den genauen Speicherort des Bildes ermitteln könnte. Zumindest habe ich noch nicht rausgefunden wie es gehen könnte. Das ist leider die große Einschränkung bei dem Skript.
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.358
Hallo Tekl!
Erstmal vorweg: Schöne Idee mit deinem Helfer-Skript!

Wäre an sich keine Problem, wenn Apple es zulassen würde, dass man per AppleScript den genauen Speicherort des Bildes ermitteln könnte. Zumindest habe ich noch nicht rausgefunden wie es gehen könnte. Das ist leider die große Einschränkung bei dem Skript.
Was meinst Du damit? Suchst du den Pfad zum Original?
Code:
original path
image path zeigt den Pfad zum aktuell eingestellten Bild an (also Original oder Fälschung)
original path immer den Pfad zum Original

By the way! Habe ich das hier richtig herausgelesen, dass man nur selektierte Bilder austauschen kann? Wenn dem so ist, wäre es doch nett, den Usern auch eine Option zu geben, alle "nicht mehr benötigte Originale" in einem Rutsch zu entfernen.

Hat t_heinrich wirklich 8000 Bilder selektiert? Cool! :cool: :p
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Mensch sedna. Geht das schon immer? Ich dachte ich hätte das probiert. Meine Recherchen hatten auch meine Vermutungen bestätigt.

Es direkt auf alle anzuwenden war mir erst mal zu riskant, deswegen nur auf Auswahl.

Weißt zu zufällig noch, wie man den Event-Namen rausbekommt und dann auch noch die Pfade ändert?
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.358
Hallo Tekl!

Die Events herauszubekommen, würde wohl etwas aufwendiger werden.
Aber was meinst Du mit Pfade ändern?
Ich habe den Thread mal durchgelesen, kann aber das "Problem" nicht nachvollziehen. Kannst Du mir noch mal (in einfachen Worten :-D) erklären, was das mit den Events auf sich hat.
Möchtest Du etwa in die Dateistruktur von der iPhoto Library eingreifen?

Zu den Events:
Wie Du schon geschrieben hast, ist events in der iPhoto Suite nicht vertreten.
Also müsste man die Events aus folgender Datei auslesen:
~/Pictures/iPhoto Library/AlbumData2.xml
Das geht mit AppleScript ganz gut. Beispiele zu xml scripting findest Du im Netz

Diese Datei alleine wird dir aber nicht helfen, da dort die Fotos mit einer Zahl benannt sind. Also müsstest Du erst mal die zum Foto gehörige Zahl aus dieser Datei extrahieren:
~/Pictures/iPhoto Library/AlbumData.xml

Uff, ganz schön aufwändig. Aber einen anderen Weg sehe ich gerade nicht.

Sedna