Bibliotheken aus Bilderordnern generieren

Es gibt Tage, da habe ich keine Lust zu dem, was ich eigentlich tun sollte. Und wenn ich dann in meinem RSS-Reader so einen Satz lese: "ImageLibraryLoader is a free plug-in for InDesign which allows you to quickly set up a floating palette filled with images from one or more designated folders.", kann es passieren, dass ich denke "Coole Idee, das müsste man mal probieren." Vor allem, wenn ich das "free" in "...is a free plug-in..." überlese ;)Hier also mein Scriptvorschlag, wie man alle Dateien aus einem Ordner automatisch in eine Bibliothek laden kann.

Es gibt Tage, da habe ich keine Lust zu dem, was ich eigentlich tun sollte.

Und wenn ich dann in meinem RSS-Reader so einen Satz lese: "ImageLibraryLoader is a free plug-in for InDesign which allows you to quickly set up a floating palette filled with images from one or more designated folders.", kann es passieren, dass ich denke "Coole Idee, das müsste man mal probieren." Vor allem, wenn ich das "free" in "...is a free plug-in..." überlese ;)

Hier also mein Scriptvorschlag, wie man alle Dateien aus einem Ordner automatisch in eine Bibliothek laden kann.

Das "Original"

Vorher aber noch die Anmerkung, dass sich das Zitat oben auf ein Plugin der renommierten Softwareschmiede Rorohiko bezieht. Da ich wie gesagt heute mit Programmieren beschäftigt war, hatte ich keine Zeit zu testen, wie gut das Plugin funktioniert, und ob es meinem Script letztlich vorzuziehen ist. Falls jemand beides ausprobieren sollte, würde ich mich über einen Kommentar freuen.

Bedienung

Die Bedienung des Scripts create_image_folder_library.jsx ist ausgesprochen einfach: man startet es, wird nach einem Ordner mit den Dateien gefragt, und dann hat man kurze Zeit später eine neue Bibliothek.

Edit: Auf Anfrage, hier auch die rekursive Version, die die Unterordner duchgeht. Sehr oberflächlich getestet ;)

Performancefragen

Soweit ich weiß, muss ein Objekt auf einer InDesign-Seite vorhanden sein, um es per Script (oder in der Tat auch per Hand) in eine Bibliothek zu bewegen. Das Script muss also ein Dummy-Dokument anlegen, in das es der Reihe nach die Bilder/Dateien importiert und von dort in die Bibliothek schiebt.

Das dauert für rund 300 Bilder (insgesamt 300MB) etwa anderthalb Minuten. 1300 Bilder (insgesamt knapp 6GB) haben auf meinem Rechner eine Viertelstunde gebraucht.

Die Datei für die Bibliothek wird neben den Bilderordner gelegt und heißt genau wie dieser plus ".indl".

Falls Sie das Script ein weiteres Mal für einen Ordner starten, öffnet das Script die bestehende Bibliothek und fügt lediglich die Bilder hinzu, die noch nicht in der Bibliothek enthalten sind. In der derzeitigen Scriptversion werden nicht die Bibliothekselemente entfernt, deren Bilder in der Zwischenzeit gelöscht wurden.

Metadaten

Jedes Bibliotheksobjekt hat einen Namen und eine Beschreibung:

Die Beschreibung ist insofern interessant, als man die Bibliothek danach filtern kann. Rufen Sie entweder "Untergruppe anzeigen..." auf, oder klicken Sie auf das Fernglas unten in der Bibliothek.

Falls in den Beschreibungen der Bibliothekselemente was Sinnvolles steht, kann hier ausgesiebt werden.

Deswegen füllt das Script die Beschreibung jedes Elements mit Autor, Titel, Stichwörtern und Beschreibung aus den IPTC/XMP-Daten des Bildes. Leider kann die Beschreibung eines Bibliothekselements nicht mehr als 100 Zeichen enthalten. Die IPTC-Beschreibung wird also nur selten vollständig aufgenommen.

In diesem Screenshot sieht man nur noch die Bibliotheksobjekte, in deren Beschreibung "elbe" steht.

Elemente in Rahmen platzieren

Bilder in Bibliotheken haben ein Problem: man kann sie nicht in den ausgewählten Rahmen platzieren, sondern nur in einen neuen Rahmen.

Das kann eine sehr doofe Restriktion sein, daher gibts hier noch zwei weitere Scripte: placeAssetInSelection.jsx und placeAssetInSelectionMenu.jsx.

Vorher:

Nachher:

Der Unterschied zwischen den beiden Scripten ist, dass "placeAssetInSelection.jsx" über die Skripten-Palette aufgerufen wird und "placeAssetInSelectionMenu.jsx" ein Startup-Script ist, das einen neuen Menübefehl in das Menü der Bibliothek installiert.

Caveat

Die Scripte sind so sorgfältig getestet, wie man das nach einem Tag, an dem ich auch noch andere Hobbies hatte, erwarten kann.

Mit anderen Worten: die Basisfunktionalität steht, aber wenn Sie seltsame Dateien oder seltsame Auswahlen oder sonstiges Seltsames haben, was ich nicht vorhergesehen habe, dann wird es wohl die eine oder andere Fehlermeldung geben können.

In dem Fall bitte ich um einen Kommentar auf dieser Seite oder über das Kontaktformular oben.

 

Comments

Erweiterung auf Subfolder

Hallo Herr Singelmann, ein tolles Skript, macht auch unter Indesign CC bisher genau was es soll. Kann man als Erweiterung noch zusätzlich Subfolder abfragen. Ich scheitere leider als Nichtskripter an der Implementierung der Aufgabe. Ich hatte es versucht mit instanceof folder aber es hat bisher nicht geklappt, dass er weitere Ordner abfragt. Danke für die sehr vielen sehr guten Skripte Sonnige Ostertage.

Rekursive Version oben verlinkt

Keine Zeit zum ausführlichen Testen, wie immer also bitte mit Vorsicht und so weiter...

Skript hat doppelte Dateien bei Umlaute

Hallo Herr Singelmann, bei einem ersten Test klappt das Skript schon ganz gut. Was mir aufgefallen ist: Wenn der Dateiname einen Umlaut enthällt, dann lädt das Skript diese Datei bei jedem Aufruf des Skripts zur Aktualisierung neu ein. Wenn man den Dateinamen ändert, dann klappt es. Das Skript zeigt auf meinem Rechner die Umlaute aber auch nicht richtig an. Statt: "Dateien prüfen" zeigt er "Dateien pr√fen" System ist OSX 10.8.5 und Indesign CC. Kann man ansonsten noch den Namen des Subfolders in die Description der Metadaten eintragen. Ich hatte da was versucht, hat aber nicht geklappt. Vielen Dank und viele Grüße

ziemlich ähnlich

hallo gerald,

ich hatte das "free" nicht überlesen und das plugin direkt mal ausprobiert. es hält was es verspricht. danach kam dein blogeintrag und ich habs mir natürlich auch gleich geschnappt und getestet.

beide lösungen funktionieren auf den ersten blick einwandfrei. dein lösung scheint mir etwas schlanker (eleganter?) weil sie einfach mit skripting umgesetzt wurde.

bleibt ein dickes lob an beide entwickler!

grüße,
gregor

Bibliothek legt sich nicht an

hallo,

ich habe das skript gerade getestet. bei mir ist das problem, dass sich die bibliothek nicht wie beschrieben neben den ordner legt. es scheint mir, als würde keine datei angelegt. im umkehrschluss bedeutet das, dass beim schliessen der bibliothek diese weg ist. denn sonst ist es genau die lösung, die ich suche. über einen tipp würde ich mich freuen. ich arbeite auf einem mac, osx 10.5.8
grüße, jörg

Anleitung zum Troubleshooting

Troubleshooting (auf deutsch: rausfinden, warum eine Software nicht tut was sie soll) folgt immer wieder den gleichen Regeln.
Zuerst steht die Annahme, dass das Programm/Skript auf dem Rechner des Entwicklers/Herstellers seinen Job verrichtet hat. Dass es bei mir nicht läuft ist also nicht unbedingt die Regel. Es kann sein, dass es auch bei anderen Anwendern nicht läuft, aber es gibt mindestens einen Rechner, auf dem es läuft.
Ich hatte auch schon den Fall hier, dass eins meiner Scripte nicht unter Windows lief, weil ich keinen Windowrechner zum Testen hatte.
Es gilt also, rauszufinden, was an meinem Rechner dafür sorgt, dass es nicht läuft.
Liegt es am Betriebssystem?
Liegt es an dem einen Beispiel, mit dem ich es teste?
In diesem Fall: kann ich eine Bibliothek für einen anderen Bilderordner erstellen?
Kann ich eine Bibliothek für einen Bilderordner erstellen, der nicht auf dem Server, sondern in meinem Userverzeichnis liegt?
Was passiert, wenn ich die Bibliothek mit der Hand anlege und sie durch das Script lediglich füllen lasse?
Funktioniert es mit einer anderen InDesign-Version?
Welche InDesign-Version verwende ich?
Was genau beobachte ich?
Passiert gar nichts?
Passiert etwas, aber am Ende bleibt kein Ergebnis?
Oder nur nicht das Ergebnis, das ich erwarte?
Was passiert denn dann?
Welches Ergebnis habe ich statt dessen erwartet?

Und so weiter und so fort.
All die Antworten braucht jemand, der nicht am Rechner sitzt, auf dem's nicht läuft.