Feature #1054
Overhaul exiv2json.cpp to build a deeply recursive JSON tree of XMP data
Start date:
10 Apr 2015
Due date:
% Done:
100%
Estimated time:
Files
Associated revisions
#1054. Replaced the reference mess with a beautiful one-line recursion. Interation is interesting; recursion is really elegant.
#1054. Final polish and comments about the recursion.
#1054. More polishing. Adding clarification to the recursion. Other code simplification/elimination.
#1054. Write LangAltValue as json object "lang" : { "en-US":"...." , ... }
#1054. exiv2json deep recursion and AltLang support. Regression detector.
History
Updated by Robin Mills over 6 years ago
- File BabyGnuTux-BigWLPG.jpg BabyGnuTux-BigWLPG.jpg added
600 rmills@rmillsmbp:~/gnu/exiv2/trunk/samples $ ../bin/exiv2json a ~/Downloads/BabyGnuTux-BigWLPG.jpg | expand -t 2
{ "FS": { "path": "\/Users\/rmills\/Downloads\/BabyGnuTux-BigWLPG.jpg", "realpath": "\/Users\/rmills\/Downloads\/BabyGnuTux-BigWLPG.jpg", "st_dev": 16777220, "st_ino": 51155556, "st_mode": 33188, "st_nlink": 1, "st_uid": 501, "st_gid": 20, "st_rdev": 0, "st_size": 121943, "st_atime": 1428657394, "st_mtime": 1427548635, "st_ctime": 1427548635, "st_blksize": 4096, "st_blocks": 240 }, "Exif": { "Image": { "Orientation": 1, "XResolution": [ 720090, 10000 ], "YResolution": [ 720090, 10000 ], "ResolutionUnit": 2, "Software": "Adobe Photoshop CS5 Windows", "DateTime": "2012:01:04 20:34:45", "ExifTag": 164 }, "Photo": { "ColorSpace": 1, "PixelXDimension": 1600, "PixelYDimension": 800 }, "Thumbnail": { "Compression": 6, "XResolution": [ 72, 1 ], "YResolution": [ 72, 1 ], "ResolutionUnit": 2, "JPEGInterchangeFormat": 302, "JPEGInterchangeFormatLength": 3586 } }, "Xmp": { "xmp": { "CreatorTool": "Adobe Photoshop CS5 Windows", "CreateDate": "2012-01-04T20:32:52+01:00", "ModifyDate": "2012-01-04T20:34:45+01:00", "MetadataDate": "2012-01-04T20:34:45+01:00" }, "dc": { "format": "image\/jpeg" }, "photoshop": { "ColorMode": "3", "ICCProfile": "sRGB IEC61966-2.1" }, "xmpMM": { "InstanceID": "xmp.iid:4E9C1E280B37E111A568FF94F417581A", "DocumentID": "xmp.did:4D9C1E280B37E111A568FF94F417581A", "OriginalDocumentID": "xmp.did:4D9C1E280B37E111A568FF94F417581A", "History": [ { "stEvt": { "action": "created", "instanceID": "xmp.iid:4D9C1E280B37E111A568FF94F417581A", "when": "2012-01-04T20:32:52+01:00", "softwareAgent": "Adobe Photoshop CS5 Windows" } }, { "stEvt": { "action": "converted", "parameters": "from image\/png to image\/jpeg" } }, { "stEvt": { "action": "saved", "instanceID": "xmp.iid:4E9C1E280B37E111A568FF94F417581A", "when": "2012-01-04T20:34:45+01:00", "softwareAgent": "Adobe Photoshop CS5 Windows", "changed": "\/" } } ] }, "MP": { "RegionInfo": { "MPRI": { "Regions": [ { "MPReg": { "Rectangle": "0.661608, 0.244310, 0.130501, 0.261002", "PersonDisplayName": "Baby Tux" } }, { "MPReg": { "Rectangle": "0.205615, 0.226100, 0.130501, 0.261002", "PersonDisplayName": "Baby Gnu" } } ] } } } } }
Updated by Robin Mills over 6 years ago
r3705. Write LangAltValue as json object: { "lang" : { "en-US" : "..." } , ... }
714 rmills@rmillsmbp:~/gnu/exiv2/trunk/samples $ exiv2 -px ~/R.jpg Xmp.xmp.Rating XmpText 1 0 Xmp.xmp.ModifyDate XmpText 25 2015-02-13T20:46:51-06:00 Xmp.dc.description LangAlt 1 lang="x-default" Mrs Johnson's Austin Office 715 rmills@rmillsmbp:~/gnu/exiv2/trunk/samples $ exiv2 -M'set Xmp.dc.title lang="en-us" Sunrise on the beach' ~/R.jpg 716 rmills@rmillsmbp:~/gnu/exiv2/trunk/samples $ exiv2 -M'set Xmp.dc.title lang="de-DE" Zee towels ease on zee deck-chairs' ~/R.jpg 717 rmills@rmillsmbp:~/gnu/exiv2/trunk/samples $ exiv2 -px ~/R.jpg Xmp.xmp.Rating XmpText 1 0 Xmp.xmp.ModifyDate XmpText 25 2015-02-13T20:46:51-06:00 Xmp.dc.description LangAlt 1 lang="x-default" Mrs Johnson's Austin Office Xmp.dc.title LangAlt 2 lang="en-US" Sunrise on the beach, lang="de-DE" Zee towels ease on zee deck-chairs 718 rmills@rmillsmbp:~/gnu/exiv2/trunk/samples $ ../bin/exiv2json -x ~/R.jpg { "Xmp": { "xmp": { "Rating": "0", "ModifyDate": "2015-02-13T20:46:51-06:00" }, "dc": { "description": { "lang": { "x-default": "Mrs Johnson's Austin Office" } }, "title": { "lang": { "en-US": "Sunrise on the beach", "de-DE": "Zee towels ease on zee deck-chairs" } } } } } 720 rmills@rmillsmbp:~/gnu/exiv2/trunk/samples $
#1054. Overhauled exiv2json to recursively build a JSON tree. See discussion: http://dev.exiv2.org/boards/3/topics/1951