Skip to main content
Participating Frequently
April 23, 2012
解決済み

Can you import metadata from an excel database to images (JPG, PSD, TIF) in bulk?

  • April 23, 2012
  • 返信数 3.
  • 42320 ビュー

I am very new to working with metadata. I have a microsoft excel file with the IPTC Core fields I need for each image file.

(Creator, Headline, Description, Keywords, Title, Job Identifier, Credit Line, Source, Rights Usage Terms, Copyright Status and Copyright Notice)

Is there a way to get the metadata into the files without having to copy from a cell into each metadata field individually?

I am hoping some for sort of script, possibly...

Also, if only ONE of these fields needed updating in all of the files (i.e. Rights Usage Terms) can that be done?

I have Bridge 5.1 (and earlier versions CS3/CS4)

このトピックへの返信は締め切られました。
解決に役立った回答 Stephen Marsh

Perhaps try tab delimited format instead of comma separated value format.

 

Edit – Paul Riggott originally wrote the following instructions:

 

 

N.B. The first field in the input file MUST be the filename only IE:- CRW_0001.jpg

This script will allow you to choose the fields and order they are in within either your CSV or TEXT file so that you can input your metadata.

Fields available are:-

Keywords 1 - These are Keywords that are in ONE field seperated by semicolons

Keywords 2 - These are Keywords in seperate fields. These must be last in the list/file!

N.B. Only one type of Keywords allowed!

Description - Text, if commas are in this field input file MUST be Tab Delimited!

Headline - Text, if commas are in this field input file MUST be Tab Delimited!

Title - Text, if commas are in this field input file MUST be Tab Delimited!

Instructions - Text, if commas are in this field input file MUST be Tab Delimited!

Date Created - Date IE: 12/24/2001

Location - Text, if commas are in this field input file MUST be Tab Delimited!

City - Text

Country - Text

Rating - This should be numeric 1 to 5

CopyrightInfo - Text, if commas are in this field input file MUST be Tab Delimited!

Author - Text

Label - Text, one of Select, Second, Approved, Review or To Do

There is the option to remove a header line if one exists.

Sub-Folders are supported.

Copyright all documents supported.

An error file is created and shown on completion.

返信数 3

Known Participant
November 7, 2018

Hi!

Can we use the exact same script for EPS files? I noticed that in Bridge CC 2019 when we click a EPS we can edit it's metadata (title, description, keywords) directly in Bridge.

Knowing this, would a script be possible to read a CSV and import those fields into a EPS instead of a JPG?

Stephen Marsh
Community Expert
Community Expert
November 7, 2018

Hi!

Can we use the exact same script for EPS files? I noticed that in Bridge CC 2019 when we click a EPS we can edit it's metadata (title, description, keywords) directly in Bridge.

Knowing this, would a script be possible to read a CSV and import those fields into a EPS instead of a JP

Yes, the DIY Metadata script works with a Photoshop EPS file (I have not tested with Illustrator EPS):

And it also works for the VRA tool as well:

Known Participant
November 8, 2018

Ok, in the past I tried DIY Metadata script and I didn't seem to work with illustrator EPS (that is the kind of EPS I am trying to work on). I will give it another try along with VRA panel and will post here if it works with Illustrator EPS. Thanks a lot for the suggestion.

Stephen Marsh
Community Expert
Community Expert
April 14, 2016
Paul Riggott
Inspiring
April 23, 2012

This might be of use...

DIY Metadata.jsx

 

EDIT: the link is there now: DIY Metadata.jsx

Participant
December 9, 2017

Hey Paul, I'm trying to edit your script to fill in the "IPTC Subject Code" and keep getting an error from the log for my added input/variable. I basically used other fields as an example to edit the code. I can get your predefined fields to work when using a csv for the input, but can't get my own added IPTC Subject Code to to write. Please help 

SuperMerlin
Inspiring
February 7, 2019

Hey SuperMerlin!

That worked, no lockup.  However I updated the code to account for all fields but I ended up with GPS data in the XMP section instead of the EXIF section.  Here is the modified code.  Can you tell me where I made the booboo?  Thanks for the updated code!

Rtk Flag                        : 16

Rtk Std Lon                     : 0.008

Rtk Std Lat                     : 0.007

Rtk Std Hgt                     : 0.017

GPS Latitude                    : 34.95187873

GPS Longitude                   : -89.93024736

GPS Altitude                    : 148.931

Version                         : 7.0

Has Settings                    : False

-------------------------------------------------------

SPECIAL NOTE: the Lat, Lon, Hgt now refer to the GPS coordinates, and StdLat, StdLon, StdHgt refer to the standard deviation (error accuracy value). 

Also when looking at the modified EXIF data there is an error message at the top:

---- ExifTool ----

ExifTool Version Number         : 11.26

Warning                         : [minor] Possibly incorrect maker notes offsets (fix by 1783?)

---- File ----

File Name                       : DJI_0002.JPG

--------------------------------------------------------

This is the CSV file that I used with script below.  It contains all the data

Dropbox - Batch_Update_Bridge_7_fields.csv

#target bridge

if( BridgeTalk.appName == "bridge" ) {

var drone = new MenuElement( "command", "Drone Metadata", "at the end of Tools" );

}

drone.onSelect = function () {

var csvFile = File.openDialog("Open Comma-delimited File","comma-delimited(*.csv):*.csv;");

if (!csvFile.exists) return;

    csvFile.open('r');

    var data = csvFile.read().split("\n");

    csvFile.close();

    var line = new Array();

    for(var a in data){

        var Q = data.toString();

        if(Q.length > 2) line.push(Q);

        }

for(var z in line){

var p=line.split(',');

droneMetadata(trim(p[0]),trim(p[1]),trim(p[2]),trim(p[3]),trim(p[4]),trim(p[5]),trim(p[6]),trim(p[7]));

}

alert("Batch complete\nDrone Error Log on Desktop\n If any errors occured");

function trim(s){

    return s.replace(/^\s+|\s+$/,'');

    }

function log(message){

var errorLog = File(Folder.desktop + "/Drone Error Log.txt");

errorLog.open("a");

errorLog.writeln(message);

errorLog.close();

  }

function droneMetadata(th,Flag,StdLon,StdLat,StdHgt,Lat,Lon,Hgt){

var file = new File(new Folder(app.document.presentationPath)+ '/' + trim(th));

if(!file.exists){

    log("File does not exist! " + trim(th));

    return;

    }

var thumb = new Thumbnail(file);

md = thumb.synchronousMetadata;

if(thumb.hasMetadata){

md.namespace = "http://www.dji.com/drone-dji/1.0/";

md.RtkFlag = '';

md.RtkFlag =  Flag;

md.RtkStdLon = '';

md.RtkStdLon = StdLon;

md.RtkStdLat = '';

md.RtkStdLat = StdLat;

md.RtkStdHgt = '';

md.RtkStdHgt = StdHgt;

md.GPSLatitude = '';

md.GPSLatitude = Lat;

md.GPSLongitude = '';

md.GPSLongitude = Lon;

md.GPSAltitude = '';

md.GPSAltitude = Hgt;

}else{

    log("Cannot write metadata to " + decodeURI(thumb.spec));

    }

};

};


Lumigraphics​ Yes presentationPath can be a bummer

StreamNZ

You are missing the namespace to enter the Exif details so it would put the details into fiels associated with the drone fields

Enter:

md.namespace = "http://ns.adobe.com/exif/1.0/";

Before the line:-

md.GPSLatitude = ''; 

The namespace directs what schema you are addressing.

Hope this helps.