Script für Metadatenänderung

lostreality

Aktives Mitglied
Thread Starter
Dabei seit
03.12.2001
Beiträge
10.095
Reaktionspunkte
2.538
Brauch mal eure Hilfe für ein Scripting zur besseren Erstellung von Bildquellen.

OS X bietet ja in den Finderinformationen dieses schöne Feld "Quelle" in der die URL hinterlegt ist, dieses möchte ich nun für InDesign verwertbar einbinden. Nach vielem Testen bin ich soweit das ich weis was wohin muss, nur habe ich keine Ahnung wie ich das, am liebsten als Droplet oder Batch, umsetzen soll.

Es muss eigentlich nur ein Eintrag in den Metadaten kopiert und als andere Metadaten eingefügt werden und zwar das Feld
kMDItemWhereFroms zusätzlich als kMDItemAuthors letzteres kann ich nämlich in ID abrufen.

Hier der Eintrag den ich per mdls im Terminal für das Bild ohne gesetzten Autor bekomme:
Code:
MacBook-Pro:~ Toby$ mdls /Users/Toby/Desktop/gallery1_2256.jpg 

_kMDItemOwnerUserID            = 501

kMDItemBitsPerSample           = 32

kMDItemColorSpace              = "RGB"

kMDItemContentCreationDate     = 2015-12-09 11:33:55 +0000

kMDItemContentModificationDate = 2015-12-09 11:33:55 +0000

kMDItemContentType             = "public.jpeg"

kMDItemContentTypeTree         = (

    "public.jpeg",

    "public.image",

    "public.data",

    "public.item",

    "public.content"

)

kMDItemDateAdded               = 2015-12-09 11:33:55 +0000

kMDItemDisplayName             = "gallery1_2256.jpg"

kMDItemDownloadedDate          = (

    "2015-12-09 11:33:56 +0000"

)

kMDItemFSContentChangeDate     = 2015-12-09 11:33:55 +0000

kMDItemFSCreationDate          = 2015-12-09 11:33:55 +0000

kMDItemFSCreatorCode           = ""

kMDItemFSFinderFlags           = 0

kMDItemFSHasCustomIcon         = (null)

kMDItemFSInvisible             = 0

kMDItemFSIsExtensionHidden     = 0

kMDItemFSIsStationery          = (null)

kMDItemFSLabel                 = 0

kMDItemFSName                  = "gallery1_2256.jpg"

kMDItemFSNodeCount             = (null)

kMDItemFSOwnerGroupID          = 20

kMDItemFSOwnerUserID           = 501

kMDItemFSSize                  = 262425

kMDItemFSTypeCode              = ""

kMDItemHasAlphaChannel         = 0

kMDItemKind                    = "JPEG-Bild"

kMDItemLogicalSize             = 262425

kMDItemOrientation             = 0

kMDItemPhysicalSize            = 266240

kMDItemPixelCount              = 2725248

kMDItemPixelHeight             = 1208

kMDItemPixelWidth              = 2256

kMDItemResolutionHeightDPI     = 0

kMDItemResolutionWidthDPI      = 0

kMDItemWhereFroms              = (

    "https://www.apple.com/macbook-pro/design-retina/images/fluidgallery/gallery1_2256.jpg"

)

Und hier mit in Photoshop gesetztem Autor:
Code:
MacBook-Pro:~ Toby$ mdls /Users/Toby/Desktop/gallery1_2256\ Kopie.jpg 

_kMDItemOwnerUserID            = 501

kMDItemAuthors                 = (

    "https://www.apple.com/macbook-pro/design-retina/images/fluidgallery/gallery1_2256.jpg"

)

kMDItemBitsPerSample           = 32

kMDItemColorSpace              = "RGB"

kMDItemContentCreationDate     = 2015-12-09 11:33:55 +0000

kMDItemContentModificationDate = 2015-12-09 12:32:33 +0000

kMDItemContentType             = "public.jpeg"

kMDItemContentTypeTree         = (

    "public.jpeg",

    "public.image",

    "public.data",

    "public.item",

    "public.content"

)

kMDItemCreator                 = "Adobe Photoshop CS5.1 Macintosh"

kMDItemDateAdded               = 2015-12-09 12:32:33 +0000

kMDItemDisplayName             = "gallery1_2256 Kopie.jpg"

kMDItemDownloadedDate          = (

    "2015-12-09 11:33:56 +0000"

)

kMDItemEXIFVersion             = "2.2.1"

kMDItemFSContentChangeDate     = 2015-12-09 12:32:33 +0000

kMDItemFSCreationDate          = 2015-12-09 11:33:55 +0000

kMDItemFSCreatorCode           = ""

kMDItemFSFinderFlags           = 0

kMDItemFSHasCustomIcon         = (null)

kMDItemFSInvisible             = 0

kMDItemFSIsExtensionHidden     = 0

kMDItemFSIsStationery          = (null)

kMDItemFSLabel                 = 0

kMDItemFSName                  = "gallery1_2256 Kopie.jpg"

kMDItemFSNodeCount             = (null)

kMDItemFSOwnerGroupID          = 20

kMDItemFSOwnerUserID           = 501

kMDItemFSSize                  = 372177

kMDItemFSTypeCode              = ""

kMDItemHasAlphaChannel         = 0

kMDItemKind                    = "JPEG-Bild"

kMDItemLastUsedDate            = 2015-12-09 12:32:33 +0000

kMDItemLogicalSize             = 372177

kMDItemOrientation             = 0

kMDItemPhysicalSize            = 372736

kMDItemPixelCount              = 2725248

kMDItemPixelHeight             = 1208

kMDItemPixelWidth              = 2256

kMDItemResolutionHeightDPI     = 72

kMDItemResolutionWidthDPI      = 72

kMDItemUseCount                = 6

kMDItemUsedDates               = (

    "2015-12-08 23:00:00 +0000"

)

kMDItemWhereFroms              = (

    "https://www.apple.com/macbook-pro/design-retina/images/fluidgallery/gallery1_2256.jpg"

)

Nun muss "nur" noch ein Droplet / Batch erstellt werden damit das ganze automatisiert abläuft. Hoffe einer kann helfen :)
 
Code:
xattr -wx com.apple.metadata:kMDItemAuthors "$(xattr -px com.apple.metadata:kMDItemWhereFroms myfile)" myfile
 
@Olivetti Danke dir schonmal, der code macht genau das was er soll nur ist es leider nicht verwertbar. Wenn ich das richtig verstanden habe muss man den Wert "regelrecht" ins EXIF / IPTC schreiben um es in InDesign verwertbar machen zu können. Ich schaue mir gerade ExifTool an, damit sollte das möglich sein, allerdings kann ExifTool wiederum nicht den Wert von kMDItemWhereFroms auslesen. Das ist wohl der Grund warum sämtliche (fertige) Exif Bearbeiter daran scheitern die Quell-Url zu übernehmen.

Irgendwie müsste man es also schaffen den den Wert von kMDItemWhereFroms an das ExifTool zu übergeben.
 
der code macht halt das, was du wolltest. :p
photoshop setzt vermutlich beide felder und du musst ja nur noch mit xattr auslesen und mit exiftool schreiben. das ist auch kein problem.

zeig mal ein korrektes "exiftool file" und markier das feld, was du geschrieben haben willst.
 
Das stimmt nur habe ich angenommen das der Eintrag so in den Metadaten übernommen wird das es in ID verwertbar ist, aber mdls liest wohl aus den unterschiedlichen Ressourcen (spotlight, exif etc) mein Fehler....

Eigentlich so wie in Post #1

Hier die beiden Bilder von dem mdls Eintrag in #1 (hoffe die Metadaten wurden mitgenommen)
gallery1_2256.jpg gallery1_2256 Kopie.jpg
Ansonsten:
original Dropbox
gesetzter Autor Dropbox
 
Dann müsste ich ja noch schauen wie ich das ganze in ein Programm / Droplet / Applescript verpacke, nun kommen ja, wie ich vermute, unterschiedliche Dinge zusammen:
1. Auslesen der kMDItemWhereFroms per Terminal Befehl
2. Kopieren
3. Einfügen in EXIF / IPTC per ExifTool welches wiederum Python ist?
4. das ganze ausführbar speichern

Wo der Eintrag steht ist erstmal egal, hab ja Autor genommen, das lässt sich aber mit xnConvert per Stapelverarbeitung anpassen.
 
das als as droplet zu packen, ist das kleinste der "probleme". :p
später mehr, weil zeitmangel...
 
Nur kein Stress, bin auch gleich mal wech ;)

Brauche eben nur ein paar Anregung wie das gehen könnte, im Moment ist das so als wenn ich einen komplexen Sachverhalt in Japanisch erklären soll :D
 
ich sehe die extend attributes in den dateien nicht (kMDItem...). das scheint beim dropboxen rauszufliegen.
kannst du die mal zippen und dropboxen, aber vor allem sagen, welche/s feld/er du brauchst (Artist/Creator/Source/By-line). evtl. nur jeweils eins stehenlassen und testen, wann du es angezeigt kriegst.
Code:
ExifTool Version Number  : 9.63
File Name  : gallery2.jpg
Directory  : .
File Size  : 363 kB
File Modification Date/Time  : 2015:12:11 10:58:09+01:00
File Access Date/Time  : 2015:12:11 10:58:08+01:00
File Inode Change Date/Time  : 2015:12:11 10:58:10+01:00
File Permissions  : rw-r--r--
File Type  : JPEG
MIME Type  : image/jpeg
Exif Byte Order  : Big-endian (Motorola, MM)
Photometric Interpretation  : RGB
Orientation  : Horizontal (normal)
X Resolution  : 72
Y Resolution  : 72
Resolution Unit  : inches
Software  : Adobe Photoshop CS5.1 Macintosh
Modify Date  : 2015:12:09 13:22:27
Artist  : https://www.apple.com/macbook-pro/design-retina/images/fluidgallery/gallery1_2256.jpg
Exif Version  : 0221
Create Date  : 2015:12:09 12:33:55
Color Space  : Unknown (0)
Exif Image Width  : 2256
Exif Image Height  : 1208
XMP Toolkit  : XMP Core 5.4.0
Metadata Date  : 2015:12:09 13:22:27+01:00
Creator Tool  : Adobe Photoshop CS5.1 Macintosh
Format  : image/jpeg
Instance ID  : xmp.iid:05801174072068119D5FEDB247904E86
Document ID  : 012593D0D1247963E5C80922BC11EFCC
Original Document ID  : 012593D0D1247963E5C80922BC11EFCC
Color Mode  : RGB
Subject  :
Creator  : https://www.apple.com/macbook-pro/design-retina/images/fluidgallery/gallery1_2256.jpg
History Software Agent  : Adobe Photoshop CS5.1 Macintosh, Adobe Photoshop CS5.1 Macintosh, Adobe Photoshop CS5.1 Macintosh, Adobe Photoshop CS5.1 Macintosh, Adobe Photoshop CS5.1 Macintosh
History Changed  : /, /, /, /, /
History When  : 2015:12:09 13:07:40+01:00, 2015:12:09 13:14:52+01:00, 2015:12:09 13:18:06+01:00, 2015:12:09 13:19:39+01:00, 2015:12:09 13:22:27+01:00
History Instance ID  : xmp.iid:01801174072068119D5FEDB247904E86, xmp.iid:02801174072068119D5FEDB247904E86, xmp.iid:03801174072068119D5FEDB247904E86, xmp.iid:04801174072068119D5FEDB247904E86, xmp.iid:05801174072068119D5FEDB247904E86
History Action  : saved, saved, saved, saved, saved
Current IPTC Digest  : fc69b0130d3737c010683f4d958c36cb
Coded Character Set  : UTF8
Application Record Version  : 2
Source  : https://www.apple.com/macbook-pro/design-retina/images/fluidgallery/gallery1_2256.jpg
Digital Creation Date  : 2015:12:09
By-line  : https://www.apple.com/macbook-pro/design-retina/images/fluidgallery/gallery1_2256.jpg
Digital Creation Time  : 12:33:55+01:00
IPTC Digest  : fc69b0130d3737c010683f4d958c36cb
Displayed Units X  : inches
Displayed Units Y  : inches
Global Angle  : 30
Global Altitude  : 30
Photoshop Quality  : 12
Photoshop Format  : Optimised
Progressive Scans  : 3 Scans
DCT Encode Version  : 100
APP14 Flags 0  : [14]
APP14 Flags 1  : (none)
Color Transform  : YCbCr
Image Width  : 2256
Image Height  : 1208
Encoding Process  : Baseline DCT, Huffman coding
Bits Per Sample  : 8
Color Components  : 3
Y Cb Cr Sub Sampling  : YCbCr4:4:4 (1 1)
Digital Creation Date/Time  : 2015:12:09 12:33:55+01:00
Image Size  : 2256x1208
 
@Olivetti Wie es ausschaut ist Autor und Artist das gleiche, dort wird bei dir ja auch die url richtig angezeigt. Leider schreibt er noch weitere Sachen rein wenn ich diesen Eintrag in Photoshop einfüge, dennoch hier zwei neue Bilder als unbearbeitetes Original (mit Quelle/Where From) und einmal mit in Photoshop eingetragenem Autor.

Dropbox - Dateiinfos.zip

Autor habe ich deshalb gewählt, da es der zuverlässigste Eintrag ist den ich in ID verarbeiten kann die anderen sind oftmals nicht richtig zu zuordnen.

Hier der Screenshot wo und wie ich die Url in den Dateiinformationen in Photoshop einfüge:
Bildschirmfoto 2015-12-11 um 14.20.25.png

Hier vielleicht noch ein Screenshot warum ich die Sache haben möchte (noch mit den alten Bildern):

Metadaten_fur_Bildquellen.png
 
So ich war nicht untätig, habe nun zumindest die beiden Befehle zum Auslesen und eingeben raus, nun fehlt noch die entsprechende Übernehme / Übergabe...
Auslesen der Downloadurl:
Code:
mdls -name kMDItemWhereFroms -raw -nullMarker markerString DATEIPFAD/NAME.EXT

Ausgabe:
Code:
(
  "(",
  "    "DOWNLOAD-URL"",
  ")"
)
Allerdings ist die Ausgabe etwas merkwürdig, hier sollten die Klammern und Anführungszeichen natürlich noch weg.

Mit
Code:
exiftool -Creator='DOWNLOAD-URL' DATEIPFAD/NAME.EXT

Bekomme ich die Download-Url an die Stelle an der ich sie haben möchte. Habe einige Tags durchgetestet, allerdings ist vieles von ID nicht oder unzuverlässig auszulesen, deshalb bleibt es bei Autor.

Habe zwar auch schon mir automator romgetestet, allerdings bekomme ich eben die Datenübergabe / -übernahme nicht hin.
 
bin gleich dabei, dann mach ich eine version die erstmal nur den -Creator setzt.
die ausgabe mit mdls birgt anscheinend einige tücken (kompatibilität), deshalb gehe ich lieber den xattr-weg.
 
teste bitte erstmal mit kopien, weil die dateien inline geändert werden.

apple script editor, speichern als programm (.app), dateien dann draufwerfen:
Code:
on open finderObjects
   repeat with f in (finderObjects)
     if name of (info for f) ends with ".jpg" or name of (info for f) ends with ".tif" then
       try
         set thefile to quoted form of POSIX path of f
         --display dialog thefile
         --display dialog "src=$(xattr -px com.apple.metadata:kMDItemWhereFroms " & thefile & " | xxd -r -p | plutil -convert xml1 -o - - | sed -e 's/<[^>]*>//g' | xargs) && exiftool -Creator=\"$src\" -overwrite_original_in_place " & thefile
         do shell script "src=$(xattr -px com.apple.metadata:kMDItemWhereFroms " & thefile & " | xxd -r -p | plutil -convert xml1 -o - - | sed -e 's/<[^>]*>//g' | xargs) && exiftool -Creator=\"$src\" -overwrite_original_in_place " & thefile
       on error
         beep
         display dialog "Error: " & thefile
         --delay 1
       end try
     end if
   end repeat
   say "done."
end open
die einschränkung auf jpg/tif-dateien kann erweitert oder ganz aufgehoben werden.
 
Das script läuft ohne Probleme durch, allerdings schreibt er die Url nicht rein :/
 
bei mir schon.
---
vorher:
Code:
exiftool test.jpg | grep http
Device Mfg Desc  : IEC  http://www.iec.ch
nachher:
Code:
exiftool test.jpg | grep http
Creator  : http://images.apple.com/euro/macbook/b/screens/overview/images/overview_osx_large.jpg
Device Mfg Desc  : IEC  http://www.iec.ch
 
Sehr merkwürdig, jetzt meldet er sich mit einem Error.

Sollte aber alles richtig sein, hab es ja nur per copy und paste eingefügt:
Bildschirmfoto 2015-12-12 um 19.56.10.png

Aber danke dir schonmal das du dir die Arbeit machst !!!
 
ich kann keinen fehler sehen.
etwas debugging per sichtkontrolle geht, wenn du jeweils die "--" bei beiden "--display..." rausnimmst.

und nimm doch mal eine "frische" datei und schau wie in #16 nach.
 
Auch mit einer frischen Datei macht er es nicht :/

Mit "debugging" sagt er mir dies:
1
Bildschirmfoto 2015-12-12 um 20.15.26.png

2
Bildschirmfoto 2015-12-12 um 20.15.35.png

3
Bildschirmfoto 2015-12-12 um 20.15.45.png

Datei hat den entsprechenden Eintrag
Bildschirmfoto 2015-12-12 um 20.16.08.png


Wird aber nicht übernommen (ohne "Kopie" ist unverändert)

Code:
MacBook-Pro:~ Toby$ exiftool /Users/Toby/Desktop/imac_three_quarter_large.jpg 

ExifTool Version Number         : 10.07

File Name                       : imac_three_quarter_large.jpg

Directory                       : /Users/Toby/Desktop

File Size                       : 613 kB

File Modification Date/Time     : 2015:12:12 20:14:13+01:00

File Access Date/Time           : 2015:12:12 20:16:30+01:00

File Inode Change Date/Time     : 2015:12:12 20:14:13+01:00

File Permissions                : rw-r--r--

File Type                       : JPEG

File Type Extension             : jpg

MIME Type                       : image/jpeg

JFIF Version                    : 1.02

Resolution Unit                 : inches

X Resolution                    : 72

Y Resolution                    : 72

Image Width                     : 1500

Image Height                    : 1308

Encoding Process                : Baseline DCT, Huffman coding

Bits Per Sample                 : 8

Color Components                : 3

Y Cb Cr Sub Sampling            : YCbCr4:4:4 (1 1)

Image Size                      : 1500x1308

Megapixels                      : 2.0

MacBook-Pro:~ Toby$ exiftool /Users/Toby/Desktop/imac_three_quarter_large\ Kopie.jpg 

ExifTool Version Number         : 10.07

File Name                       : imac_three_quarter_large Kopie.jpg

Directory                       : /Users/Toby/Desktop

File Size                       : 613 kB

File Modification Date/Time     : 2015:12:12 20:14:13+01:00

File Access Date/Time           : 2015:12:12 20:16:10+01:00

File Inode Change Date/Time     : 2015:12:12 20:14:42+01:00

File Permissions                : rw-r--r--

File Type                       : JPEG

File Type Extension             : jpg

MIME Type                       : image/jpeg

JFIF Version                    : 1.02

Resolution Unit                 : inches

X Resolution                    : 72

Y Resolution                    : 72

Image Width                     : 1500

Image Height                    : 1308

Encoding Process                : Baseline DCT, Huffman coding

Bits Per Sample                 : 8

Color Components                : 3

Y Cb Cr Sub Sampling            : YCbCr4:4:4 (1 1)

Image Size                      : 1500x1308

Megapixels                      : 2.0

MacBook-Pro:~ Toby$
 
mach doch bitte mit "... | grep http" (siehe #16), das spart das durchgeforste.
was zeigt denn mdls auf genau die datei. ich denke da fehlt kmditem...
aber woher kommt dann in cmd-i die quelle.
dann muss da evtl. noch ein error handling rein, wenn $src leer oder ungültig ist.

ist es denn auch so mit den overview bildern aus der dropbox?
 
Zurück
Oben Unten