Copy link to clipboard
Copied
I'm trying to switch from Picasa to Bridge as my photo organizer. My main problem with Bridge is that it doesn't automatically recognize the tags created in Picasa as keywords. It seems to recognize them as "unassigned" keywords and displays them in the keyword panel in italics, but each one has to be right-clicked on and converted to "Persistent" to remove the italics and have the keyword entered into Bridge's library of keywords. Since I have hundreds of keywords, that's not going to work for me. Is there a faster way?
Copy link to clipboard
Copied
You would need to use a script to read keywords from your files and add them to Bridge's library.
Try this script, I have not done extensive testing with it but it should work. Save it as PLAIN TEXT with a .jsx file extension and put it into the Bridge Scripts folder, then relaunch Bridge. Select all of your files from which to add keywords, then run this script from the Tools menu. The result will be a file on your desktop that you can import into Bridge to add keywords.
#target bridge
if(BridgeTalk.appName == 'bridge'){
try{
var KeywordCapture = new Object; //id object for this script
var kwCap = MenuElement.create('command', 'Keyword Capture', 'at the end of Tools');
kwCap.onSelect = function(){
var kwList = app.document.selections;
var i = 0; //counters
var j = 1;
var k = 1;
var l = 0;
var kw_clean = []; //optimized keywords array
var kw_line = ''; //keyword
var kw_tabs = []; //hierarchy depth
var kw_leading = ''; //exported file requires tab delimiter for hierarchical keywords
var kwCapLogFile = File(''); //file to write list to
kwCapLogFile = new File('~/Desktop/kwCapture.txt').saveDlg('Create Keyword Capture File', '*.txt'); //create text file
kwCapLogFile.open('w:');
if (ExternalObject.AdobeXMPScript == undefined) ExternalObject.AdobeXMPScript = new ExternalObject('lib:AdobeXMPScript');
for(i = 0; i < kwList.length; i++){ //loop through selected files
if(kwList[i].hasMetadata){ //only process files with metadata
k = 1;
kw_clean = [];
kw_tabs = [];
//XMP stores keywords in several namespaces. We don't process them all.
var kw = kwList[i].synchronousMetadata.read(XMPConst.NS_DC, 'subject').toString();
var lrkw = kwList[i].synchronousMetadata.read('http://ns.adobe.com/lightroom/1.0/', 'hierarchicalSubject').toString();
if(kw != '' || lrkw != ''){ //at least one namespace has keywords
kw = kw.split(','); //make arrays out of keyword string
lrkw = lrkw.split(',');
kw = kw.concat(lrkw); //place all keywords in one array and sort
kw.sort();
if(kw[0] != ''){
kw_clean[0] = kw[0];
}
else{ //flag empty keywords
k = 0;
}
for(j = 1; j < kw.length; j++){ //eliminate duplicates and write into new array
if(kw[(j - 1)] != kw[j] && kw[j] != ''){
kw_clean[k] = kw[j];
k++;
}
}
for(j = 0; j < kw_clean.length; j++){ //write optimized list of keywords to file
kw_leading = ''; //reset leading tabs
kw_tabs = kw_clean[j].match(/\|/g); //how deep is the hierarchy
if(kw_tabs != null){ //hierarchical kw
for(l = 0; l < kw_tabs.length; l++){
kw_clean[j] = kw_clean[j].replace('|', '\r' + kw_leading + '\t'); //we process "|" as a delimiter, edit script to use others
kw_leading = kw_leading + '\t'; //each new level requires one more leading tab
}
}
if(kw_line != ''){
kw_line = kw_line + '\r' + kw_clean[j];
}
else{ //first line for file, don't add extra return
kw_line = kw_clean[j];
}
}
kwCapLogFile.writeln(kw_line); //write to file
kw_line = ''; //reset for next file
}
}
}
kwCapLogFile.close();
kwCapLogFile.open('r:');
var kwFin = kwCapLogFile.read();
kwCapLogFile.close();
kwCapLogFile.open('w:');
kwFin = kwFin.replace(/\n\t/g, '\t');
kwFin = kwFin.split('\n');
kwFin = kwFin.sort();
for(i = 0; i < kwFin.length; i++){
if(kwFin[i] == kwFin[i + 1]){
kwFin[i] = '';
}
}
kwFin = kwFin.sort();
kwFin = kwFin.join('\r');
kwFin = kwFin.replace(/\r\r/g, '');
kwFin = kwFin.replace(/\t/g, '\r\t');
kwFin = kwFin.replace(/\t\r/g, '\t');
kwCapLogFile.write(kwFin);
kwCapLogFile.close();
alert('Keyword capture completed');
}
}
catch(e){
alert(e + ' ' + e.line);
}
}
Copy link to clipboard
Copied
Sorry for the delayed reply (swamped at work). Thanks loads for taking the time to write this. I'll try to test it out this weekend.
Copy link to clipboard
Copied
The other common option beyond a script as recommended by @ExUSA is to export out all of the keywords to .txt file and then import them as keywords into Bridge.
https://prepression.blogspot.com/2016/08/extracting-metadata-to-csv.html
https://prepression.blogspot.com/2016/11/bridge-restoring-lost-keyword-xml-file.html
Copy link to clipboard
Copied
Thanks. I'll try that, too.
Copy link to clipboard
Copied
Alas, Malwarebytes won't let me go to either of those links as neither can "provide a secure connection."
Copy link to clipboard
Copied
The links are secure HTTPS hosted by Blogger, having an SSL certificate doesn't mean much. I don't think it says much for Malearebytes
Find more inspiration, events, and resources on the new Adobe Community
Explore Now