Hi,
can someone help me?
My work colleague rated about 1000 files in Adobe Bridge. The problem is, that I have to use the *.dng version of the photos, not the jpgs. The dngs have the same filename (exept the file extension of course).
Is it possible to copy the Rating from the jpgs to the dngs?
thanks for your help!
(CS3)
Copy Rating from jpg to dng?
Copy Rating from jpg to dng?
Here is a link to a thread post over in the Photoshop scripting forum. Your request looks almost the same as what was wanted here. Take a look at Mike's last post in question to this. I would think matching up file name pairs to be straight forward enough to do.
http://forums.adobe.com/message/2923478#2923478
I don't have a version of CS that I can help you with but this should help you get started…
http://forums.adobe.com/message/2923478#2923478
I don't have a version of CS that I can help you with but this should help you get started…
Copy Rating from jpg to dng?
This should work, just run it from ESTK
Code: Select all#target bridge
app.bringToFront();
app.document.deselectAll();
var thumbs = app.document.getSelection("jpg");
for (var a in thumbs){
var Name = thumbs[a].spec.name.replace(/\.[^\.]+$/, '');
var Rating='';
var t = new Thumbnail(thumbs[a]);
var md = t.synchronousMetadata;
md.namespace = "http://ns.adobe.com/xap/1.0/";
Rating = md.Rating;
if(Rating == '') continue;
var DNG = File(thumbs[a].spec.path + "/"+Name + ".dng");
if(DNG.exists){
var file = new Thumbnail (DNG);
var md = file.synchronousMetadata;
md.namespace = "http://ns.adobe.com/xap/1.0/";
md.Rating = Rating;
}
}
Code: Select all#target bridge
app.bringToFront();
app.document.deselectAll();
var thumbs = app.document.getSelection("jpg");
for (var a in thumbs){
var Name = thumbs[a].spec.name.replace(/\.[^\.]+$/, '');
var Rating='';
var t = new Thumbnail(thumbs[a]);
var md = t.synchronousMetadata;
md.namespace = "http://ns.adobe.com/xap/1.0/";
Rating = md.Rating;
if(Rating == '') continue;
var DNG = File(thumbs[a].spec.path + "/"+Name + ".dng");
if(DNG.exists){
var file = new Thumbnail (DNG);
var md = file.synchronousMetadata;
md.namespace = "http://ns.adobe.com/xap/1.0/";
md.Rating = Rating;
}
}
Copy Rating from jpg to dng?
Hi,
I'm looking for a way to extract the IPTC Keywords and IPTC Description fields from a jpg file in Bridge and write them to a PSD file that has the same filename.
The script above (top copy ratings across from a JPG to DNG version of the same file) seems exactly what I need except I want to copy just IPTC Keywords and Description fields from JPG to PSD for all matched pairs in a given folder.
I've modified the script to read "PSD" instead of DNG and that has worked for the ratings script above (successfully copying JPG ratings to the PSDs) but my knowledge of JS is pretty poor and I don't understand how I can reference the two IPTC fields I need copied over.
Using Bridge CS4.
Would be very grateful for any help. Thank you.
Jaybee
Quick update:
This script: bb/viewtopic.php?f=19&t=3433&p=15499&hi ... rds#p15499 has the functionality I'm after but requires manual intervention. If the Keywords & Description part of this script was merged with the script above I'm sure it would do exactly what I'm after.
I'm looking for a way to extract the IPTC Keywords and IPTC Description fields from a jpg file in Bridge and write them to a PSD file that has the same filename.
The script above (top copy ratings across from a JPG to DNG version of the same file) seems exactly what I need except I want to copy just IPTC Keywords and Description fields from JPG to PSD for all matched pairs in a given folder.
I've modified the script to read "PSD" instead of DNG and that has worked for the ratings script above (successfully copying JPG ratings to the PSDs) but my knowledge of JS is pretty poor and I don't understand how I can reference the two IPTC fields I need copied over.
Using Bridge CS4.
Would be very grateful for any help. Thank you.
Jaybee
Quick update:
This script: bb/viewtopic.php?f=19&t=3433&p=15499&hi ... rds#p15499 has the functionality I'm after but requires manual intervention. If the Keywords & Description part of this script was merged with the script above I'm sure it would do exactly what I'm after.
Copy Rating from jpg to dng?
Please try this...
Code: Select all#target bridge
app.bringToFront();
app.document.deselectAll();
var thumbs = app.document.getSelection("jpg");
for (var a in thumbs){
var Name = thumbs[a].spec.name.replace(/\.[^\.]+$/, '');
var Rating='';
var t = new Thumbnail(thumbs[a]);
var md = t.synchronousMetadata;
md.namespace = "http://purl.org/dc/elements/1.1/";
var Desc = md.description;
md.namespace = "http://ns.adobe.com/photoshop/1.0/";
var Keys = md.Keywords;
var PSD = File(thumbs[a].spec.path + "/"+Name + ".psd");
if(PSD.exists){
var file = new Thumbnail (PSD);
var md = file.synchronousMetadata;
md.namespace = "http://purl.org/dc/elements/1.1/";
md.description = '';
md.description= Desc.toString();
md.namespace = "http://ns.adobe.com/photoshop/1.0/";
md.Keywords = '';
md.Keywords = Keys.toString();
}
}
Code: Select all#target bridge
app.bringToFront();
app.document.deselectAll();
var thumbs = app.document.getSelection("jpg");
for (var a in thumbs){
var Name = thumbs[a].spec.name.replace(/\.[^\.]+$/, '');
var Rating='';
var t = new Thumbnail(thumbs[a]);
var md = t.synchronousMetadata;
md.namespace = "http://purl.org/dc/elements/1.1/";
var Desc = md.description;
md.namespace = "http://ns.adobe.com/photoshop/1.0/";
var Keys = md.Keywords;
var PSD = File(thumbs[a].spec.path + "/"+Name + ".psd");
if(PSD.exists){
var file = new Thumbnail (PSD);
var md = file.synchronousMetadata;
md.namespace = "http://purl.org/dc/elements/1.1/";
md.description = '';
md.description= Desc.toString();
md.namespace = "http://ns.adobe.com/photoshop/1.0/";
md.Keywords = '';
md.Keywords = Keys.toString();
}
}
Copy Rating from jpg to dng?
Hi Paul,
Thanks! That's working wonderfully for the IPTC Keywords part. I just ran it using the ESTK. All the JPG keywords in my test pairs transferred successfully to the PSD files in the same folder.
The IPTC Description field didn't come across though. Though I can see it referenced in your code...
Thanks for the quick reply too.
Jaybee
Thanks! That's working wonderfully for the IPTC Keywords part. I just ran it using the ESTK. All the JPG keywords in my test pairs transferred successfully to the PSD files in the same folder.
The IPTC Description field didn't come across though. Though I can see it referenced in your code...
Thanks for the quick reply too.
Jaybee
Copy Rating from jpg to dng?
This should be better...
Code: Select all#target bridge
app.bringToFront();
app.document.deselectAll();
var thumbs = app.document.getSelection("jpg");
if (ExternalObject.AdobeXMPScript == undefined) ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
for (var a in thumbs){
var Name = thumbs[a].spec.name.replace(/\.[^\.]+$/, '');
var Rating='';
var t = new Thumbnail(thumbs[a]);
var md = t.synchronousMetadata;
md.namespace = "http://purl.org/dc/elements/1.1/";
var Desc = "'"+ md.description+"'";
md.namespace = "http://ns.adobe.com/photoshop/1.0/";
var Keys = md.Keywords;
var PSD = File(thumbs[a].spec.path + "/"+Name + ".psd");
if(PSD.exists){
try{
var thumb = new Thumbnail(PSD);
var selectedFile = thumb.spec;
var myXmpFile = new XMPFile( selectedFile.fsName, XMPConst.UNKNOWN, XMPConst.OPEN_FOR_UPDATE);
var myXmp = myXmpFile.getXMP();
if(Desc != '""'){
myXmp.deleteProperty(XMPConst.NS_DC, "description");
myXmp.setLocalizedText( XMPConst.NS_DC, "description", null, "x-default", Desc );
}
if(Keys.length >0){
myXmp.deleteProperty(XMPConst.NS_DC,'subject');
for(var s in Keys){
myXmp.appendArrayItem(XMPConst.NS_DC, "subject", Keys[s], 0,XMPConst.PROP_IS_ARRAY);
}
}
if (myXmpFile.canPutXMP(myXmp)) {
myXmpFile.putXMP(myXmp);
myXmpFile.closeFile(XMPConst.CLOSE_UPDATE_SAFELY);
}
}catch(e){alert(e+ " occured at line : " + e.line);}
}
}
Code: Select all#target bridge
app.bringToFront();
app.document.deselectAll();
var thumbs = app.document.getSelection("jpg");
if (ExternalObject.AdobeXMPScript == undefined) ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
for (var a in thumbs){
var Name = thumbs[a].spec.name.replace(/\.[^\.]+$/, '');
var Rating='';
var t = new Thumbnail(thumbs[a]);
var md = t.synchronousMetadata;
md.namespace = "http://purl.org/dc/elements/1.1/";
var Desc = "'"+ md.description+"'";
md.namespace = "http://ns.adobe.com/photoshop/1.0/";
var Keys = md.Keywords;
var PSD = File(thumbs[a].spec.path + "/"+Name + ".psd");
if(PSD.exists){
try{
var thumb = new Thumbnail(PSD);
var selectedFile = thumb.spec;
var myXmpFile = new XMPFile( selectedFile.fsName, XMPConst.UNKNOWN, XMPConst.OPEN_FOR_UPDATE);
var myXmp = myXmpFile.getXMP();
if(Desc != '""'){
myXmp.deleteProperty(XMPConst.NS_DC, "description");
myXmp.setLocalizedText( XMPConst.NS_DC, "description", null, "x-default", Desc );
}
if(Keys.length >0){
myXmp.deleteProperty(XMPConst.NS_DC,'subject');
for(var s in Keys){
myXmp.appendArrayItem(XMPConst.NS_DC, "subject", Keys[s], 0,XMPConst.PROP_IS_ARRAY);
}
}
if (myXmpFile.canPutXMP(myXmp)) {
myXmpFile.putXMP(myXmp);
myXmpFile.closeFile(XMPConst.CLOSE_UPDATE_SAFELY);
}
}catch(e){alert(e+ " occured at line : " + e.line);}
}
}
Copy Rating from jpg to dng?
Hi Paul,
99.9% success! Keywords 100% fine. Description field comes across but has a single quotation mark at either end. So:
Dog on beach transfers as 'Dog on beach'
Apart from that it's stellar!
Many thanks again.
Jaybee
99.9% success! Keywords 100% fine. Description field comes across but has a single quotation mark at either end. So:
Dog on beach transfers as 'Dog on beach'
Apart from that it's stellar!
Many thanks again.
Jaybee
Copy Rating from jpg to dng?
Sorry about that, it's old age you know!
This should work now....
Code: Select all#target bridge
app.bringToFront();
app.document.deselectAll();
var thumbs = app.document.getSelection("jpg");
if (ExternalObject.AdobeXMPScript == undefined) ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
for (var a in thumbs){
var Name = thumbs[a].spec.name.replace(/\.[^\.]+$/, '');
var Rating='';
var t = new Thumbnail(thumbs[a]);
var md = t.synchronousMetadata;
md.namespace = "http://purl.org/dc/elements/1.1/";
var Desc = "'"+ md.description+"'";
if(Desc != "''") Desc = Desc.replace(/'/g,'');
md.namespace = "http://ns.adobe.com/photoshop/1.0/";
var Keys = md.Keywords;
var PSD = File(thumbs[a].spec.path + "/"+Name + ".psd");
if(PSD.exists){
try{
var thumb = new Thumbnail(PSD);
var selectedFile = thumb.spec;
var myXmpFile = new XMPFile( selectedFile.fsName, XMPConst.UNKNOWN, XMPConst.OPEN_FOR_UPDATE);
var myXmp = myXmpFile.getXMP();
if(Desc != '""'){
myXmp.deleteProperty(XMPConst.NS_DC, "description");
myXmp.setLocalizedText( XMPConst.NS_DC, "description", null, "x-default", Desc );
}
if(Keys.length >0){
myXmp.deleteProperty(XMPConst.NS_DC,'subject');
for(var s in Keys){
myXmp.appendArrayItem(XMPConst.NS_DC, "subject", Keys[s], 0,XMPConst.PROP_IS_ARRAY);
}
}
if (myXmpFile.canPutXMP(myXmp)) {
myXmpFile.putXMP(myXmp);
myXmpFile.closeFile(XMPConst.CLOSE_UPDATE_SAFELY);
}
}catch(e){alert(e+ " occured at line : " + e.line);}
}
}
This should work now....
Code: Select all#target bridge
app.bringToFront();
app.document.deselectAll();
var thumbs = app.document.getSelection("jpg");
if (ExternalObject.AdobeXMPScript == undefined) ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
for (var a in thumbs){
var Name = thumbs[a].spec.name.replace(/\.[^\.]+$/, '');
var Rating='';
var t = new Thumbnail(thumbs[a]);
var md = t.synchronousMetadata;
md.namespace = "http://purl.org/dc/elements/1.1/";
var Desc = "'"+ md.description+"'";
if(Desc != "''") Desc = Desc.replace(/'/g,'');
md.namespace = "http://ns.adobe.com/photoshop/1.0/";
var Keys = md.Keywords;
var PSD = File(thumbs[a].spec.path + "/"+Name + ".psd");
if(PSD.exists){
try{
var thumb = new Thumbnail(PSD);
var selectedFile = thumb.spec;
var myXmpFile = new XMPFile( selectedFile.fsName, XMPConst.UNKNOWN, XMPConst.OPEN_FOR_UPDATE);
var myXmp = myXmpFile.getXMP();
if(Desc != '""'){
myXmp.deleteProperty(XMPConst.NS_DC, "description");
myXmp.setLocalizedText( XMPConst.NS_DC, "description", null, "x-default", Desc );
}
if(Keys.length >0){
myXmp.deleteProperty(XMPConst.NS_DC,'subject');
for(var s in Keys){
myXmp.appendArrayItem(XMPConst.NS_DC, "subject", Keys[s], 0,XMPConst.PROP_IS_ARRAY);
}
}
if (myXmpFile.canPutXMP(myXmp)) {
myXmpFile.putXMP(myXmp);
myXmpFile.closeFile(XMPConst.CLOSE_UPDATE_SAFELY);
}
}catch(e){alert(e+ " occured at line : " + e.line);}
}
}
Copy Rating from jpg to dng?
Thanks Paul
That's perfect! Just what I needed. Donation on it's way!
Cheers!
Jaybee
That's perfect! Just what I needed. Donation on it's way!
Cheers!
Jaybee