Schreib-Mapping

Für das Schreib-Mapping können verschiedene Profile definiert werden. Die Profile definieren ein Mapping zwischen den Daten in der Datenbank und dem XMP/IPTC/EXIF-Daten, die in die Assets reingeschrieben werden. easydb schreibt diese Metdaten zum Zeitpunkt des Downloades in die Assets.

easydb nutzt exiftool zum Schreiben der Metadaten. Für das Schreib-Mapping definieren Sie einen Anweisungsblock für exiftool.

exiftool bietet eine Dokumentation und eine Übersicht der unterstützten Metadaten-Felder an.

Wir liefern mit easydb eine eigene exiftool Version, die immer auf einem aktuellen Stand gehalten wird. Sie können mit /opt/easydb/common/exiftool/exiftool -ver herausfinden, welche Version aktuell von easydb verwendet wird.

EAS_METADATA_WRITE_PROFILES

Mit dieser Variable definieren Sie kommasepariert interne Namen(name) für die Schreib-Profile. Wählen Sie kurze sprechende Zeichenketten, jeder weitere Config-Eintrag für dieses Schreib-Profil verwendet diesen Namen. Für das Frontend können Sie separat einen Namen definieren. Achten Sie darauf, keine Leerzeichen zu verwenden.

EAS_METADATA_WRITE_PROFILES=wprof1,wprof2

Dieses Beispiel definiert zwei Schreib-Profile, wprof1 und wprof2.

Ab Version 4.0.199 kann man zusätzlich das Profil none in dieser Liste unterbringen. Dieses definiert einen Eintrag, bei dem keine Metadaten beim Download geschrieben werden. Ist EAS_METADATA_WRITE_PROFILES gesetzt, egal ob nur auf none oder auf mehr Einträge, die zur Tabelle der Objekte passen, so wird der Download-Dialog mit der Auswahl der Profile angezeigt.

Der erste Eintrag in EAS_METADATA_WRITE_PROFILES wird außerdem beim Direkt-Download verwendet. Auch hier wird none für den Download ohne zusätzliches Metadaten-Schreiben verwendet.

Stellen Sie none nicht an den Anfang, wenn Sie beim manuellen Download die Möglichkeit anbieten möchten das Bild ohne Metadaten zu schreiben zu laden, aber gleichzeitig beim Direkt-Download ein Profil forcieren möchten.

Diese Config-Variable hat auch Auswirkungen auf die URL zum Bild die über den easydb Connector ausgegeben wird. Im Connector gibt es den Parameter download_with_iptc, wenn dieser Parameter nicht gesetzt ist, verhält sich der Connector genauso wie der Direkt-Download in der easydb.

EAS_METADATA_WRITE_<name>_TABLE

Definieren Sie hier eine Tabelle auf die sich das Schreib-Profil bezieht. Die Haupttabelle für die Asset-Verwaltung heisst in der Regel "assets" oder "bilder".

EAS_METADATA_WRITE_wprof1_TABLE=bilder

Hier definieren wir für unser wprof1-Profil die Haupttabelle "bilder".

EAS_METADATA_WRITE_<name>_NAME

Diese Variable definiert den Namen des Profils wie er dem Benutzer angezeigt wird.

EAS_METADATA_WRITE_prof1_NAME=Standard

In unserem Beispiel nennen wir prof1 "Standard".

EAS_METADATA_WRITE_<name>_<line>

Das Profil wird zeilenweise definiert. Die Platzhalter sind:

  • name: Der Name des Profils
  • line: Eine Zahl die angibt welche Zeile der Anweisungen definiert wird.
EAS_METADATA_WRITE_prof1_1="-copyright=(c) by Programmfabrik"

Dieses einfache Beispiel ruft exitfool mit der Anweisung "-copyright=(c) by Programmfabrik" auf. Damit überschreibt exiftool das IPTC-Feld "copright" neu.

EAS_METADATA_WRITE_prof1_1="-all="
EAS_METADATA_WRITE_prof1_1="-copyright=(c) by Programmfabrik"

Wie das vorhergehende Beispiel nur mit dem Unterschied, dass hier erst alle(!) Metadaten gelöscht werden und dann das Feld "copyright" geschrieben wird.

Funktionen zur Werte-Ermittlung

Die Werte werden von PHP evaluiert und easydb stellt ein Funktionen zur Verfügung, die das Mappen von Daten vereinfachen:

  • value: Lesen von Werten und schreiben von einer Zeile in die Anweisungsliste
  • values: Lesen von Werten und schreiben von mehreren Zeilen in die Anweisungsliste

value

Die Funktion value kann wie folgt aufgerufen werden:

  • value("<column>[<.path>]");
  • value("1_N_LINK.<link-column>.<column-link-table>[<.path>]")
  • value("N_M_LINK.<n-m-table>.<link-column>.<column-link-table>[<.path>]")
  • value("EADB_LINKS.<link-table>.<column-link-table>[<.path>]")

Je nach Art des Wertes, wird direkt die column aus der Haupttabelle benutzt, eine 1-Link-Beziehung, eine N-M-Link-Beziehung oder eine eadb_links-Beziehung.

EAS_METADATA_WRITE_wprof1_1="-description=".value('kommentar')

Dieses Beispiel holt aus der Spalte "kommentar" den Wert und trägt eine Zeile "-description=<kommentar>" in die Anweisungsliste für exiftool ein.

EAS_METADATA_WRITE_wprof1_1="-title=".value('1_N_LINK.lk_kuenstler_id.name')

Dieses Beispiel holt aus der Spalte "name" der Link-Tabelle die über "lk_kuenstler_id" verlinkt ist und eine Zeile "-title=<kuenstler name>" in die Anweisungsliste für exiftool ein.

EAS_METADATA_WRITE_wprof1_1="-keywords=".value('N_M_LINK.bild__schlagwort.lk_schlagwort_id.name')

Dieses Beispiel holt alle Schlagwörter die an einem Bild gesetzt sind und trägt sie komma-separiert in einer Zeile in die Anweisungsliste ein.

EAS_METADATA_WRITE_wprof1_1="-keywords=".value('EADB_LINKS.schlagwort.name')

Dieses Beispiel holt alle Schlagwörter die an einem Bild gesetzt (über eadb_links) sind und trägt sie komma-separiert in einer Zeile in die Anweisungsliste ein.

Seit Version 4.0.229 kann an den Namen der Spalte noch ein .path angehängt werden, um bei Tabellen mit aktiviertem Thesaurus-Support den kompletten Pfad zu dem gefundenen Element auszugeben.

values

Diese Funktion funktioniert im Prinzip wie "value" mit dem Unterschied, dass sie für jeden gefundenen Wert eine separate Zeile in die Anweisungsliste für exiftool einträgt.

EAS_METADATA_WRITE_wprof1_1="-keywords=".values('N_M_LINK.bild__schlagwort.lk_schlagwort_id.name')

Nehmen wir an, an dem Asset sind die Schlagwörter "s1","s2" und "s3" verknüpft. Die Anweisungsliste für exiftool würde jetzt so aussehen:

-keywords=s1
-keywords=s2
-keywords=s3

Je Schlagwort enthält die Anweisungsliste eine Zeile. Dies ist wichtig, damit exiftool explizit Listen ins IPTC/XMP schreiben kann.

Seit Version 4.0.159: Wenn der gefundene Wert ein String und kein Array ist, wird der Wert gesplittet und in ein Array umgewandelt. Die Standard-Begrenzungszeichenkette (Delimiter) ist ",". Sie können einen alternativen Delimiter als 2. Parameter angeben:

# Das Beispiel teilt den Keyword-String "Keyword1; Keyword2; Keyword3"
# mit "; " in 3 einzelne Keywords auf
EAS_METADATA_WRITE_wprof1_1="-keywords=".values('keywords_als_string', '; ')

Seit Version 4.0.159: Wenn der übergebene Wert ein Array ist, wird dieses direkt verwendet.

# EAS_METADATA_WRITE_wprof1_1="-keywords=".value(array('Keyword 1', 'Keyword 2', 'Keyword 3'))

Seit Version 4.0.168: Bei leeren Eingabe-Arrays wird gar keine Zeile in die Anweisungsliste geschrieben. Das ist dann wichtig, wenn Sie aus mehreren easydb-Feldern in das selbe Metadaten-Feld schreiben möchten, da leere Werte vorher geschriebene Werte zurücksetzen.

meta

Diese Funktion ist seit Version 4.0.168 verfügbar.

Mit dieser Funktion können Werte aus den Metadaten wieder in andere Metadaten-Felder geschrieben werden. Sinnvoll ist dies vor allem bei den vom EAS erzeugten, nicht direkt aus der Datei extrahierten Metadaten.

EAS_METADATA_WRITE_wprof1_1="-title=".meta('EAS:OriginalFilebase')
EAS_METADATA_WRITE_wprof1_2="-comment=".meta('compiled')

Da die Config-Variablen als PHP interpretiert werden, müssen sie von PHP kompiliert werden. Wenn es dabei zu Fehlern kommt, werden diese Fehler nicht an das easydb-Frontend übergeben. Nutzen Sie deshalb Entwickler-Tools im Browser und lassen Sie sich das Ergebnis der Ajax-Requests anzeigen die entsehen, wenn Sie ein Asset-Download starten.