Updating [XMP] Prefs tag

Started by philbond87, September 17, 2021, 07:10:47 PM

Previous topic - Next topic

philbond87

The -xmp:prefs tag contains a string that is made up of multiple values (eg. Tagged:0, ColorClass:0, Rating:5, FrameNum:-00001)

I'm currently updating the -rating, -label and -colorclass tags of various files and I noticed that in some cases Photo Mechanic won't accurately display the updated ratings if they aren't in agreement with what's in that -xmp:prefs tag.

Currently my application uses this line to write the -rating, -label and -colorclass tags:
-overwrite_original_in_place -rating=5 -label=Yellow -colorclass=2

How would I include a line that will, if the -xmp:prefs tag exists in a file, update it to match the tags that I'm editing in the line above? (basically conditionally changing the ColorClass and Rating parts of the prefs tag?

Thanks,
Phil

StarGeek

You could do it either directly as part of your command.  In this case if Prefs did not already exist you would get Warning: [minor] Tag 'Prefs' not defined which you could ignore.
-overwrite_original_in_place -rating=5 -label=Yellow -colorclass=2 '-XMP:Prefs<${XMP:Prefs;s/Rating:\d+/Rating:5/;s/ColorClass:\d+/ColorClass:2/}'

Or you could run it as a separate command after your first command which would replace ColorClass/Rating with the appropriate tags.
-overwrite_original_in_place -if '$XMP:Prefs' '-XMP:Prefs<${XMP:Prefs;s/ColorClass:.*//}ColorClass:${ColorClass}, Rating:${Rating}, ${XMP:Prefs;s/.*Rating:\d+, //}'

I'm assuming this is for a Mac, as the use of -overwrite_original_in_place is rarely needed otherwise.  If it is for Windows CMD, change the single quotes to double quotes.
"It didn't work" isn't helpful. What was the exact command used and the output.
Read FAQ #3 and use that cmd
Please use the Code button for exiftool output

Please include your OS/Exiftool version/filetype

philbond87

Excellent, thank you (once again) @StarGeek.