Media Pro uses the same format as Lightroom for hierarchical keywords. digikam already supports reading and writing that format. Media Pro has changed owners over the years, from iView, to Microsoft, to Phase One. Reproducible: Always
I adapted the LR code in dmetadata.cpp and came up with: // Read: bool DMetadata::getImageTagsPath(QStringList& tagsPath) const // Try to get Tags Path list from Media Pro XMP first. tagsPath = getXmpTagStringBag("Xmp.mediapro.CatalogSets", false); // There is another Media Pro tag for hierarchical subjects. if (tagsPath.isEmpty()) { tagsPath = getXmpTagStringSeq("Xmp.expressionmedia.CatalogSets", false); } if (!tagsPath.isEmpty()) { // Media Pro Catalog Sets use '|' as separator. tagsPath = tagsPath.replaceInStrings("|", "/"); kDebug() << "Tags Path imported from Media Pro : " << tagsPath; return true; } // Write: bool DMetadata::setImageTagsPath(const QStringList& tagsPath) const QStringList MediaProtagsPath = tagsPath; MediaProtagsPath = MediaProtagsPath.replaceInStrings("/", "|"); if (!setXmpTagStringBag("Xmp.mediapro.CatalogSets", MediaProtagsPath)) { return false; } I have not tested this as I am still unable to build digikam.
Please provide patch against current source code, even if it do not compile. It's always better than to try to reproduce code as well. If you have some test images to import/export... Gilles
Created attachment 92214 [details] XMP sidecar created in Media Pro
Created attachment 92215 [details] Test image with embedded Media Pro metadata
Comment on attachment 92215 [details] Test image with embedded Media Pro metadata Non-standard properties written by Media Pro: Xmp.mediapro.Event XmpText 15 Media Pro Event Xmp.mediapro.People XmpBag 4 Media Pro People, Alan Pater, Gilles Caulier, Robin Mills Xmp.mediapro.CatalogSets XmpBag 3 0000|1111|2222, aaaa|bbbb|ccc, aaaa|bbbb|cccc|dddd|eeee|fff Xmp.expressionmedia.Event XmpText 15 Media Pro Event Xmp.expressionmedia.People XmpBag 4 Media Pro People, Alan Pater, Gilles Caulier, Robin Mills Xmp.expressionmedia.CatalogSets XmpBag 3 0000|1111|2222, aaaa|bbbb|ccc, aaaa|bbbb|cccc|dddd|eeee|fff Xmp.iptcExt.Event LangAlt 1 lang="x-default" Media Pro Event Xmp.iptcExt.PersonInImage XmpBag 4 Media Pro People, Alan Pater, Gilles Caulier, Robin Mills
Created attachment 92217 [details] get Media Pro Catalog Sets Untested. Based on the code to get lr hierarchical keywords.
Alan, you use in the patch: getXmpTagStringSeq ("Xmp.expressionmedia.CatalogSets", false) I think this is correct: getXmpTagStringBag ("Xmp.expressionmedia.CatalogSets", false) Yes? Maik
Maik yes, you are correct. It should be Bag just like the mediapro example.
Git commit c697e630c4483833a27c96bb3969c5574af01045 by Maik Qualmann. Committed on 05/05/2015 at 16:32. Pushed by mqualmann into branch 'master'. apply patch #92217 from Alan Pater to support Media Pro hierarchical keywords FIXED-IN: 4.10.0 M +2 -1 NEWS M +28 -2 libs/dmetadata/dmetadata.cpp http://commits.kde.org/digikam/c697e630c4483833a27c96bb3969c5574af01045
Git commit e22fe7e171b4c3aeb9f56b6536892edf4ffd827b by Gilles Caulier. Committed on 05/05/2015 at 21:26. Pushed by cgilles into branch 'frameworks'. backport commit #c697e630c4483833a27c96bb3969c5574af01045 from git/master to frameworks branch M +28 -2 libs/dmetadata/dmetadata.cpp http://commits.kde.org/digikam/e22fe7e171b4c3aeb9f56b6536892edf4ffd827b