Closed mallman closed 2 years ago
I've submitted PR #2084 to address this issue.
@mallman Can you run the test as follows and send me your output please. Here's what I get in England (GMT, UTC):
676 rmills@rmillsm1:~/gnu/github/exiv2/main/build $ exiv2 --version | head -1
exiv2 1.0.0.9
677 rmills@rmillsm1:~/gnu/github/exiv2/main/build $ (cd ../tests ; python3 runner.py bugfixes/github/test_issue_1959.py)
.
----------------------------------------------------------------------
Ran 1 test in 0.050s
OK
678 rmills@rmillsm1:~/gnu/github/exiv2/main/build $
Here you go!
[msa@hoodoo build]$ exiv2 --version | head -1
exiv2 1.0.0.9
[msa@hoodoo build]$ (cd ../tests ; python3 runner.py bugfixes/github/test_issue_1959.py)
F
======================================================================
FAIL: test_run (test_issue_1959.XmpIptcStandardsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/msa/coad/ImageMetadata/exiv2/tests/system_tests.py", line 653, in test_run
self.compare_stdout(i, command, processed_stdout, stdout)
File "/Users/msa/coad/ImageMetadata/exiv2/tests/system_tests.py", line 766, in compare_stdout
self._compare_output(
File "/Users/msa/coad/ImageMetadata/exiv2/tests/system_tests.py", line 745, in _compare_output
self.assertMultiLineEqual(
AssertionError: 'Exif[794 chars]:04 01:41:01 2022:01:04 01:41:01\nIptc.Applic[56526 chars]gs\n' != 'Exif[794 chars]:04 09:41:01 2022:01:04 09:41:01\nIptc.Applic[56526 chars]gs\n'
Exif.Image.YCbCrPositioning 1 Centered
Exif.Image.XResolution 72/1 72
Exif.Image.YResolution 72/1 72
Exif.Image.ResolutionUnit 2 inch
Exif.Image.ImageDescription Test file for the IPTC XMP tags Test file for the IPTC XMP tags
Exif.Image.Artist postscript-dev postscript-dev
Exif.Image.Copyright Copyright Exiv2 Copyright Exiv2
Exif.Photo.ExifVersion 48 50 51 50 2.32
Exif.Photo.FlashpixVersion 48 49 48 48 1.00
Exif.Photo.ColorSpace 65535 Uncalibrated
Exif.Photo.ComponentsConfiguration 1 Y
- Exif.Photo.DateTimeOriginal 2022:01:04 01:41:01 2022:01:04 01:41:01
? ^ ^
+ Exif.Photo.DateTimeOriginal 2022:01:04 09:41:01 2022:01:04 09:41:01
? ^ ^
Iptc.Application2.ObjectName Test IPTC XMP file Test IPTC XMP file
Iptc.Envelope.CharacterSet G G
Iptc.Application2.Keywords Test Test
Iptc.Application2.SubLocation Test Sublocation Test Sublocation
Iptc.Application2.SpecialInstructions Test Instructions Test Instructions
Iptc.Application2.DateCreated 2022-01-04 2022-01-04
Iptc.Application2.Byline postscript-dev postscript-dev
Iptc.Application2.BylineTitle Test Creator's Job Title Test Creator's Job Title
Iptc.Application2.City Test City Test City
Iptc.Application2.ProvinceState Test Province/State) Test Province/State)
Iptc.Application2.CountryCode GBR GBR
Iptc.Application2.CountryName Test Country Test Country
Iptc.Application2.TransmissionReference Test Job ID Test Job ID
Iptc.Application2.Headline Test Headline Test Headline
Iptc.Application2.Credit Test Credit Line Test Credit Line
Iptc.Application2.Source Test Source Test Source
Iptc.Application2.Copyright Copyright Exiv2 Copyright Exiv2
Iptc.Application2.Caption Test file for the IPTC XMP tags Test file for the IPTC XMP tags
Iptc.Application2.Writer Test Name Test Name
Xmp.iptc.IntellectualGenre Test Genre Test Genre
Xmp.iptc.Location Test Sublocation Test Sublocation
Xmp.iptc.CountryCode GBR GBR
Xmp.iptc.AltTextAccessibility lang="x-default" Alternative text description for accessibility lang="x-default" Alternative text description for accessibility
Xmp.iptc.CreatorContactInfo type="Struct"
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity Test Creator's City Test Creator's City
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry Test Creator's Country Test Creator's Country
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrExtadr Test Creator's Address Test Creator's Address
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrPcode TE5 5ST TE5 5ST
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrRegion Test Creator's Address Region Test Creator's Address Region
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiEmailWork ciworkemail_aweoi4mg02349m@example.com ciworkemail_aweoi4mg02349m@example.com
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiTelWork +1 (123) 456789 +1 (123) 456789
Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork http://www.example.com/workurl/3w94kjngi9mn50gj0mg34jire http://www.example.com/workurl/3w94kjngi9mn50gj0mg34jire
Xmp.iptc.ExtDescrAccessibility lang="x-default" Test Extended Accessibility Description lang="x-default" Test Extended Accessibility Description
Xmp.iptc.Scene 010100, 010200, 010300, 010400, 010500, 010600, 010700, 010800, 010900, 011000, 011100, 011200, 011300, 011400, 011500, 011600, 011700, 011800, 011900, 012000, 012100, 012200, 012300, 012400, 900000 Headshot, Half-length, Full-length, Profile, rear view, Single, Couple, Two, Group, General view, Panoramic view, Aerial view, Under-water, Night scene, Satellite, Exterior view, Interior view, Close-up, Action, Performing, Posing, Symbolic, Off-beat, Movie scene, (900000)
Xmp.iptc.SubjectCode 01000000, 01001000, 01002000, 01003000, 01004000, 01005000, 01005001, 01006000, 01007000, 01007001, 01008000, 01009000, 01010000, 01010001, 01010002, 01011000, 01011001, 01011002, 01011003, 01011004, 01011005, 01011006, 01011007, 01012000, 01013000, 01014000, 01015000, 01015001, 01016000, 01016001, 01017000, 01017001, 01018000, 01018001, 01019000, 01020000, 01021000, 01021001, 01022000, 01022001, 01023000, 01024000, 01025000, 01026000, 01026001, 01026002, 01026003, 01026004, 01027000, 01028000, 02000000, 02001000, 02001001, 02001002, 02001003, 02001004, 02001005, 02001006, 02001007, 02001008, 02001009, 02001010, 02002000, 02002001, 02002002, 02002003, 02003000, 02003001, 02003002, 02003003, 02004000, 02004001, 02004002, 02005000, 02006000, 02006001, 02006002, 02007000, 02007001, 02008000, 02008001, 02008002, 02008003, 02009000, 02009001, 02009002, 02010000, 02011000, 02011001, 02011002, 02012000, 02012001, 02012002, 02012003, 02012004, 02012005, 02012006, 02012007, 02013000, 02014000, 02015000, 02016000, 03000000, 03001000, 03002000, 03003000, 03004000, 03005000, 03006000, 03006001, 03007000, 03007001, 03008000, 03009000, 03010000, 03010001, 03010002, 03010003, 03010004, 03011000, 03012000, 03013000, 03014000, 03014001, 03015000, 03015001, 03015002, 03016000, 03017000, 04000000, 04001000, 04001001, 04001002, 04001003, 04001004, 04001005, 04001006, 04002000, 04002001, 04002002, 04002003, 04002004, 04002005, 04002006, 04002007, 04003000, 04003001, 04003002, 04003003, 04003004, 04003005, 04003006, 04003007, 04003008, 04003009, 04004000, 04004001, 04004002, 04004003, 04004004, 04004005, 04004006, 04004007, 04005000, 04005001, 04005002, 04005003, 04005004, 04005005, 04005006, 04005007, 04005008, 04005009, 04005010, 04005011, 04005012, 04005013, 04005014, 04006000, 04006001, 04006002, 04006003, 04006004, 04006005, 04006006, 04006007, 04006008, 04006009, 04006010, 04006011, 04006012, 04006013, 04006014, 04006015, 04006016, 04006017, 04006018, 04006019, 04006020, 04006021, 04006022, 04007000, 04007001, 04007002, 04007003, 04007004, 04007005, 04007006, 04007007, 04007008, 04007009, 04007010, 04007011, 04007012, 04008000, 04008001, 04008002, 04008003, 04008004, 04008005, 04008006, 04008007, 04008008, 04008009, 04008010, 04008011, 04008012, 04008013, 04008014, 04008015, 04008016, 04008017, 04008018, 04008019, 04008020, 04008021, 04008022, 04008023, 04008024, 04008025, 04008026, 04008027, 04008028, 04008029, 04008030, 04008031, 04008032, 04008033, 04008034, 04008035, 04008036, 04009000, 04009001, 04009002, 04009003, 04009004, 04010000, 04010001, 04010002, 04010003, 04010004, 04010005, 04010006, 04010007, 04010008, 04010009, 04010010, 04010011, 04011000, 04011001, 04011002, 04011003, 04011004, 04011005, 04011006, 04011007, 04011008, 04011009, 04012000, 04012001, 04012002, 04012003, 04012004, 04012005, 04013000, 04013001, 04013002, 04013003, 04013004, 04013005, 04013006, 04013007, 04013008, 04014000, 04014001, 04014002, 04014003, 04014004, 04014005, 04015000, 04015001, 04015002, 04015003, 04015004, 04016000, 04016001, 04016002, 04016003, 04016004, 04016005, 04016006, 04016007, 04016008, 04016009, 04016010, 04016011, 04016012, 04016013, 04016014, 04016015, 04016016, 04016017, 04016018, 04016019, 04016020, 04016021, 04016022, 04016023, 04016024, 04016025, 04016026, 04016027, 04016028, 04016029, 04016030, 04016031, 04016032, 04016033, 04016034, 04016035, 04016036, 04016037, 04016038, 04016039, 04016040, 04016041, 04016042, 04016043, 04016044, 04016045, 04016046, 04016047, 04016048, 04016049, 04016050, 04016051, 04016052, 04016053, 04016054, 04016055, 04016056, 04016057, 04017000, 04017001, 04018000, 04018001, 04019000, 04019001, 05000000, 05001000, 05002000, 05003000, 05004000, 05005000, 05005001, 05005002, 05005003, 05006000, 05007000, 05008000, 05009000, 05010000, 05010001, 05010002, 05010003, 05010004, 05011000, 05011001, 05011002, 05011003, 05011004, 06000000, 06001000, 06002000, 06002001, 06002002, 06003000, 06004000, 06005000, 06005001, 06005002, 06006000, 06006001, 06006002, 06006003, 06006004, 06006005, 06006006, 06006007, 06006008, 06006009, 06007000, 06007001, 06008000, 06009000, 06010000, 06011000, 06012000, 06013000, 07000000, 07001000, 07001001, 07001002, 07001003, 07001004, 07001005, 07001006, 07001007, 07001008, 07001009, 07002000, 07003000, 07003001, 07003002, 07003003, 07003004, 07003005, 07004000, 07005000, 07006000, 07006001, 07006002, 07007000, 07007001, 07007002, 07007003, 07007004, 07008000, 07008001, 07009000, 07010000, 07011000, 07011001, 07011002, 07012000, 07013000, 07013001, 07014000, 07014001, 07014002, 07014003, 07014004, 07014005, 07015000, 07016000, 07017000, 07017001, 07017002, 07017003, 07018000, 07019000, 08000000, 08001000, 08002000, 08003000, 08003001, 08003002, 08003003, 08003004, 08003005, 08004000, 08005000, 08005001, 08005002, 08005003, 08005004, 08005005, 08006000, 08006001, 08007000, 08008000, 09000000, 09001000, 09002000, 09002001, 09002002, 09002003, 09003000, 09003001, 09003002, 09003003, 09003004, 09004000, 09005000, 09006000, 09007000, 09008000, 09009000, 09010000, 09011000, 09011001, 09011002, 09012000, 09013000, 09014000, 09015000, 09016000, 10000000, 10001000, 10001001, 10001002, 10001003, 10001004, 10002000, 10003000, 10003001, 10004000, 10004001, 10004002, 10004003, 10005000, 10006000, 10007000, 10007001, 10008000, 10009000, 10010000, 10011000, 10012000, 10013000, 10014000, 10015000, 10016000, 10017000, 10018000, 11000000, 11001000, 11001001, 11001002, 11001003, 11001004, 11001005, 11001006, 11001007, 11001008, 11001009, 11002000, 11002001, 11002002, 11002003, 11002004, 11003000, 11003001, 11003002, 11003003, 11003004, 11003005, 11003006, 11003007, 11003008, 11003009, 11003010, 11004000, 11005000, 11005001, 11006000, 11006001, 11006002, 11006003, 11006004, 11006005, 11006006, 11006007, 11006008, 11006009, 11006010, 11006011, 11006012, 11006013, 11007000, 11008000, 11009000, 11009001, 11009002, 11010000, 11010001, 11011000, 11012000, 11013000, 11013001, 11014000, 11014001, 11014002, 11014003, 11015000, 11016000, 11016001, 11016002, 11016003, 11016004, 11016005, 11016006, 11016007, 11017000, 11018000, 11019000, 11020000, 11021000, 11022000, 11023000, 11024000, 11024001, 11024002, 11024003, 11025000, 11026000, 11027000, 11028000, 12000000, 12001000, 12002000, 12002001, 12002002, 12003000, 12004000, 12004001, 12004002, 12004003, 12004004, 12004005, 12005000, 12005001, 12006000, 12006001, 12006002, 12007000, 12008000, 12009000, 12009001, 12009002, 12009003, 12009004, 12009005, 12009006, 12009007, 12009009, 12009010, 12009011, 12009012, 12009013, 12010000, 12011000, 12012000, 12013000, 12014000, 12014001, 12014002, 12014003, 12014004, 12014005, 12015000, 12015001, 12016000, 12017000, 12018000, 12019000, 12020000, 12021000, 12022000, 12023000, 12023001, 12023002, 12023003, 12024000, 12025000, 12025001, 12025002, 12025004, 12026000, 12027000, 13000000, 13001000, 13001001, 13001002, 13001003, 13001004, 13002000, 13002001, 13003000, 13003001, 13003002, 13003003, 13003004, 13003005, 13004000, 13004001, 13004002, 13004003, 13004004, 13004005, 13004006, 13004007, 13004008, 13005000, 13006000, 13006001, 13007000, 13008000, 13009000, 13010000, 13010001, 13010002, 13011000, 13012000, 13013000, 13014000, 13015000, 13016000, 13017000, 13018000, 13019000, 13020000, 13021000, 13022000, 13023000, 14000000, 14001000, 14002000, 14003000, 14003001, 14003002, 14003003, 14003004, 14004000, 14005000, 14005001, 14006000, 14006001, 14006002, 14006003, 14006004, 14006005, 14006006, 14007000, 14008000, 14009000, 14010000, 14010001, 14010002, 14011000, 14012000, 14013000, 14014000, 14015000, 14016000, 14017000, 14017001, 14018000, 14019000, 14020000, 14021000, 14022000, 14023000, 14024000, 14024001, 14024002, 14024003, 14024004, 14024005, 14025000, 14025001, 14025002, 14025003, 14025004, 14025005, 14026000, 14027000, 15000000, 15001000, 15001001, 15001002, 15002000, 15002001, 15002002, 15002003, 15002004, 15002005, 15003000, 15003001, 15003002, 15003003, 15004000, 15004001, 15004002, 15005000, 15005001, 15005002, 15005003, 15005004, 15005005, 15005006, 15005007, 15005008, 15005009, 15005010, 15005011, 15005012, 15005013, 15005014, 15005015, 15005016, 15005017, 15005018, 15005019, 15005020, 15005021, 15005022, 15005023, 15005024, 15005025, 15005026, 15005027, 15005028, 15005029, 15005030, 15005031, 15005032, 15005033, 15005034, 15005035, 15005036, 15005037, 15005038, 15005039, 15005040, 15005041, 15005042, 15005043, 15005044, 15005045, 15005046, 15005047, 15005048, 15005049, 15005050, 15005051, 15005052, 15005053, 15005054, 15005055, 15005056, 15005057, 15005058, 15005059, 15005060, 15005061, 15005062, 15005063, 15005064, 15005065, 15005066, 15005067, 15005068, 15005069, 15006000, 15007000, 15007001, 15007002, 15007003, 15007004, 15007005, 15007006, 15008000, 15008001, 15008002, 15008003, 15008004, 15008005, 15009000, 15009001, 15009002, 15009003, 15009004, 15009005, 15009006, 15010000, 15010001, 15010002, 15010003, 15010004, 15010005, 15010006, 15011000, 15011001, 15011002, 15012000, 15013000, 15014000, 15014001, 15014002, 15014003, 15014004, 15014005, 15014006, 15014007, 15014008, 15014009, 15014010, 15014011, 15014012, 15014013, 15014014, 15014015, 15014016, 15014017, 15014018, 15014019, 15014020, 15014021, 15014022, 15014023, 15014024, 15015000, 15015001, 15015002, 15015003, 15015004, 15015005, 15015006, 15015007, 15015008, 15015009, 15015010, 15015011, 15015012, 15016000, 15016001, 15016002, 15017000, 15018000, 15018001, 15019000, 15019001, 15019002, 15019003, 15019004, 15019005, 15019006, 15019007, 15019008, 15019009, 15019010, 15019011, 15019012, 15019013, 15019014, 15019015, 15019016, 15019017, 15019018, 15019019, 15019020, 15019021, 15020000, 15021000, 15021001, 15021002, 15021003, 15021004, 15021005, 15021006, 15022000, 15022001, 15022002, 15022003, 15022004, 15023000, 15023001, 15023002, 15023003, 15024000, 15024001, 15025000, 15025001, 15025002, 15025003, 15026000, 15026001, 15026002, 15026003, 15027000, 15028000, 15028001, 15028002, 15028003, 15028004, 15028005, 15028006, 15028007, 15028008, 15028009, 15028010, 15028011, 15028012, 15028013, 15028014, 15028015, 15029000, 15030000, 15030001, 15030002, 15030003, 15030004, 15031000, 15031001, 15031002, 15032000, 15032001, 15032002, 15032003, 15032004, 15032005, 15032006, 15032007, 15032008, 15032009, 15032010, 15032011, 15032012, 15033000, 15033001, 15033002, 15033003, 15033004, 15033005, 15033006, 15033007, 15034000, 15034001, 15034002, 15035000, 15036000, 15036001, 15036002, 15037000, 15038000, 15038001, 15038002, 15038003, 15038004, 15038005, 15039000, 15039001, 15039002, 15039003, 15039004, 15039005, 15039006, 15039007, 15039008, 15040000, 15040001, 15040002, 15040003, 15041000, 15041001, 15041002, 15041003, 15041004, 15041005, 15041006, 15041007, 15041008, 15041009, 15041010, 15041011, 15041012, 15041013, 15041014, 15042000, 15043000, 15043001, 15043002, 15043003, 15043004, 15043005, 15043006, 15043007, 15043008, 15043009, 15043010, 15043011, 15043012, 15043013, 15043014, 15043015, 15043016, 15043017, 15044000, 15044001, 15045000, 15046000, 15046001, 15046002, 15047000, 15047001, 15047002, 15047003, 15047004, 15047005, 15047006, 15047007, 15048000, 15049000, 15049001, 15050000, 15050001, 15050002, 15050003, 15050004, 15050005, 15050006, 15050007, 15050008, 15050009, 15050010, 15050011, 15050012, 15050013, 15050014, 15050015, 15050016, 15051000, 15051001, 15051002, 15051003, 15051004, 15051005, 15051006, 15051007, 15051008, 15051009, 15051010, 15051011, 15051012, 15052000, 15052001, 15052002, 15052003, 15053000, 15053001, 15053002, 15054000, 15055000, 15056000, 15056001, 15056002, 15056003, 15056004, 15056005, 15056006, 15056007, 15056008, 15056009, 15056010, 15056011, 15056012, 15056013, 15056014, 15057000, 15058000, 15058001, 15058002, 15058003, 15058004, 15058005, 15059000, 15060000, 15061000, 15062000, 15062001, 15062002, 15062003, 15062004, 15062005, 15062006, 15062007, 15062008, 15062009, 15062010, 15062011, 15062012, 15062013, 15062014, 15062015, 15062016, 15062017, 15062018, 15062019, 15062020, 15062021, 15062022, 15062023, 15062024, 15062025, 15062026, 15063000, 15064000, 15064001, 15064002, 15064003, 15064004, 15064005, 15064006, 15064007, 15064008, 15065000, 15065001, 15066000, 15066001, 15066002, 15066003, 15067000, 15067001, 15068000, 15069000, 15069001, 15069002, 15069003, 15069004, 15070000, 15070001, 15070002, 15070003, 15070004, 15070005, 15070006, 15070007, 15070008, 15070009, 15070010, 15070011, 15070012, 15070013, 15070014, 15070015, 15070016, 15071000, 15071001, 15071002, 15071003, 15071004, 15072000, 15072001, 15072002, 15072003, 15072004, 15072005, 15072006, 15072007, 15072008, 15072009, 15072010, 15072011, 15072012, 15073000, 15073001, 15073002, 15073003, 15073004, 15073005, 15073006, 15073007, 15073008, 15073009, 15073010, 15073011, 15073012, 15073013, 15073014, 15073015, 15073016, 15073017, 15073018, 15073019, 15073020, 15073021, 15073022, 15073023, 15073024, 15073025, 15073026, 15073027, 15073028, 15073029, 15073030, 15073031, 15073032, 15073033, 15073034, 15073035, 15073036, 15073037, 15073038, 15073039, 15073040, 15073041, 15073042, 15073043, 15073044, 15073045, 15073046, 15073047, 15074000, 15074001, 15074002, 15074003, 15074004, 15074005, 15074006, 15074007, 15075000, 15076000, 15077000, 15077001, 15077002, 15077003, 15077004, 15077005, 15077006, 15077007, 15077008, 15077009, 15077010, 15078000, 15079000, 15080000, 15081000, 15082000, 15082001, 15082002, 15083000, 15084000, 15085000, 15086000, 15087000, 15088000, 15089000, 15090000, 15091000, 15092000, 15093000, 15094000, 15095000, 15096000, 15097000, 15098000, 15099000, 15100000, 15101000, 15102000, 15103000, 16000000, 16001000, 16002000, 16003000, 16003001, 16003002, 16003003, 16003004, 16003005, 16004000, 16005000, 16005001, 16005002, 16006000, 16006001, 16007000, 16008000, 16009000, 16009001, 16009002, 16009003, 16010000, 16010001, 16011000, 16012000, 17000000, 17001000, 17002000, 17003000, 17003001, 17004000, 17005000 arts, culture and entertainment, archaeology, architecture, bullfighting, festive event (including carnival), cinema, film festival, dance, fashion, jewelry, language, library and museum, literature, fiction, poetry, music, classical music, folk music, jazz music, popular music, country music, rock and roll music, hip-hop, painting, photography, radio, sculpture, plastic art, television, soap opera, theatre, music theatre, monument and heritage site, institution-DEPRECATED, customs and tradition, arts (general), entertainment (general), entertainment award, culture (general), cultural development, nightclub, cartoon, animation, mass media, periodicals, news media, newspapers, reviews, internet, history, crime, law and justice, crime, homicide, computer crime, theft, drug trafficking, sexual assault, assault (general), kidnapping, arson, gang activity, terrorism, judiciary (system of justice), lawyer, judge, court administration, police, law enforcement, investigation, arrest, punishment, fine, execution, prison, laws, criminal, civil, justice and rights, civil rights, trials, litigation, arbitration, court preliminary, prosecution, defendant, witness, organized crime, international law, international court or tribunal, extradition, corporate crime, fraud, embezzlement, restraint of trade, breach of contract, anti-trust crime, corruption, bribery, war crime, inquest, inquiry, tribunal, disaster and accident, drought, earthquake, famine, fire, flood, industrial accident, structural failures, meteorological disaster, windstorms, nuclear accident, pollution, transport accident, road accident, railway accident, air and space accident, maritime accident, volcanic eruption, relief and aid organisation, accident (general), emergency incident, explosion, disaster (general), natural disasters, avalanche/landslide, emergency planning, rescue, economy, business and finance, agriculture, arable farming, fishing industry, forestry and timber, livestock farming, viniculture, aquaculture, chemicals, biotechnology, fertiliser, health and beauty product, inorganic chemical, organic chemical, pharmaceutical, synthetic and plastic, computing and information technology, hardware, networking, satellite technology, semiconductors and active components, software, telecommunication equipment, telecommunication service, security, wireless technology, construction and property, heavy construction, house building, real estate, farms, land price, renovation, design and engineering, energy and resource, alternative energy, coal, oil and gas - downstream activities, oil and gas - upstream activities, nuclear power, electricity production and distribution, waste management and pollution control, water supply, natural resources (general), energy (general), natural gas, petrol, diesel fuel, kerosene/paraffin, financial and business service, accountancy and auditing, banking, consultancy service, employment agency, healthcare provider, insurance, legal service, market research, stock broking, personal investing, market trend, shipping service, personal service, janitorial service, funeral parlour and crematorium, rental service, wedding service, personal finance, personal income, auction service, printing/promotional service, investment service, consumer goods, clothing, department store, food, mail order, retail, speciality store, wholesale, beverage, electronic commerce, luxury good, non-durable good, toy, macro economics, central bank, consumer issue, debt market, economic indicator, emerging market, foreign exchange market, government aid, government debt, interest rate, international economic institution, international (foreign) trade, loan market, economic organization, consumer confidence, trade dispute, inflation and deflation, prices, currency values, budgets and budgeting, credit and debt, loans, mortgages, financial markets, commodity markets, investments, stocks, bonds, mutual funds, derivative securities, imports, exports, trade agreements, trade policy, business enterprises, tariff, trade balance, market and exchange, energy, metal, securities, soft commodity, media, advertising, book, cinema industry, news agency, newspaper and magazine, online, public relation, radio industry, satellite and cable service, television industry, music industry, manufacturing and engineering, aerospace, automotive equipment, defence equipment, electrical appliance, heavy engineering, industrial component, instrument engineering, shipbuilding, machine manufacturing, metal and mineral, building material, gold and precious material, iron and steel, non ferrous metal, mining, process industry, distiller and brewer, food, furnishings and furniture, paper and packaging product, rubber product, soft drinks, textile and clothing, tobacco, tourism and leisure, casino and gambling, hotel and accommodation, recreational and sporting goods, restaurant and catering, tour operator, transport, air transport, railway, road transport, waterway and maritime transport, company information, accounting and audit, annual and special corporate meeting, annual report, antitrust issue, merger, acquisition and takeover, analysts' comment, bankruptcy, board of directors (appointment and change), buyback, C.E.O. interview, corporate officer, corporate profile, contract, defence contract, dividend announcement, earnings forecast, financially distressed company, earnings, financing and stock offering, government contract, global expansion, insider trading, joint venture, leveraged buyout, layoffs and downsizing, licensing agreement, litigation and regulation, management change, marketing, new product, patent, copyright and trademark, plant closing, plant opening, privatisation, proxy filing, rating, research and development, quarterly or semiannual financial statement, restructuring and recapitalisation, spin-off, stock activity, industrial production, productivity, inventories, sales, corporations, shareholders, corporate performance, losses, credit ratings, stock splits, stock options, recalls (products), globalization, consumers, purchase, new service, economy (general), economic policy, business (general), institution, finance (general), money and monetary policy, education, adult education, further education, parent organisation, preschool, school, elementary schools, middle schools, high schools, teachers union, university, upbringing, entrance examination, teaching and learning, students, teachers, curriculum, test/examination, religious education, parochial school, seminary, yeshiva, madrasa, environmental issue, renewable energy, conservation, endangered species, ecosystem, energy saving, environmental politics, environmental pollution, air pollution, water pollution, natural resources, land resources, parks, forests, wetlands, mountains, rivers, oceans, wildlife, energy resources, nature, invasive species, population, waste, water, global warming, hazardous materials, environmental cleanup, health, disease, communicable diseases, virus diseases, AIDS, cancer, heart disease, alzheimer's disease, animal diseases, plant diseases, retrovirus, epidemic and plague, health treatment, prescription drugs, dietary supplements, diet, medical procedure/test, therapy, health organisations, medical research, medical staff, primary care physician, health-workers union, medicine, herbal, holistic, western, traditional Chinese, preventative medicine, vaccines, injury, hospital and clinic, government health care, medicare, medicaid, private health care, healthcare policy, food safety, medical specialisation, geriatric, pediatrics, reproduction, genetics, obstetrics/gynecology, medical service, physical fitness, illness, mental illness, eating disorder, obesity, medical conditions, patient, human interest, animal, curiosity, people, advice, celebrity, accomplishment, human mishap, fortune-telling, mystery, society, ceremony, death, funeral, estate bestowal, memorial, award and prize, record, imperial and royal matters, plant, labour, apprentices, collective contract, contract issue-wages, contract issue-healthcare, contract issue-work rules, employment, labor market, job layoffs, child labor, occupations, labour dispute, labour legislation, retirement, retraining, strike, unemployment, unions, wage and pension, employee benefits, social security, work relations, health and safety at work, advanced training, employer, employee, lifestyle and leisure, game, Go, chess, bridge, shogi, gaming and lottery, gastronomy, organic foods, hobby, DIY, shopping, gardening, holiday or vacation, tourism, travel and commuting, traffic, club and association, lifestyle (house and home), leisure (general), public holiday, hunting, fishing, auto trends, adventure, beauty, consumer issue, wedding, politics, defence, veterans affairs, national security, security measures, armed Forces, military equipment, firearms, biological and chemical weapons, missile systems, nuclear weapons, diplomacy, summit, international relations, peace negotiations, alliances, election, political candidates, political campaigns, campaign finance, national elections, regional elections, local elections, voting, poll, european elections, primary, espionage and intelligence, foreign aid, economic sanction, government, civil and public service, safety of citizens, think tank, national government, executive (government), heads of state, government departments, public officials, ministers (government), public employees, privatisation, nationalisation, impeachment, human rights, local authority, parliament, upper house, lower house, parties and movements, non government organizations (NGO), refugee, regional authority, state budget and tax, public finance, treaty and international organisation-DEPRECATED, international relations-DEPRECATED, peace negotiations-DEPRECATED, alliances-DEPRECATED, constitution, interior policy, data protection, housing and urban planning, pension and welfare, personal weapon control, indigenous people, personal data collection, planning inquiries, migration, citizens initiative and recall, referenda, nuclear policy, lobbying, regulatory policy and organisation, censorship, politics (general), political systems, democracy, political development, freedom of the press, freedom of religion, treaty, international organisation, religion and belief, cult and sect, belief (faith), unificationism, scientology, freemasonry, religion-DEPRECATED, christianity-DEPRECATED, islam-DEPRECATED, judaism-DEPRECATED, buddhism-DEPRECATED, hinduism-DEPRECATED, church (organisation)-DEPRECATED, religious facilities-DEPRECATED, values, ethics, corrupt practices, church and state relations, philosophy, christianity, protestant, lutheran, reformed, anglican, methodist, baptist, mennonite, mormon, roman catholic, old catholic, orthodoxy, salvation army, islam, judaism, buddhism, hinduism, religious festival or holiday, christmas, easter, pentecost, ramadan, yom kippur, religious leader, pope, nature religion, taoism, shintoism, sikhism, jainism, parsasm, confucianism, religious text, bible, qur'an, torah, interreligious dialogue, religious event, catholic convention, protestant convention, ritual, concordat, ecumenism, science and technology, applied science, physics, chemistry, cosmology, particle physics, engineering, material science, human science, social sciences, history, psychology, sociology, anthropology, natural science, geology, paleontology, geography, botany, zoology, physiology, astronomy, biology, philosophical science, research, survey, scientific exploration, space programme, science (general), technology (general), rocketry, laser, standards, animal science, micro science, marine science, weather science, electronics, identification technology, mathematics, biotechnology, agricultural research and technology, nanotechnology, IT/computer sciences, scientific institutions, social issue, addiction, charity, demographics, population and census, immigration, illegal immigrants, emigrants, disabled, euthanasia (also includes assisted suicide), suicide, family, parent and child, adoption, marriage, divorce, sex, courtship, family planning, health insurance, homelessness, minority group, gays and lesbians, national or ethnic minority, pornography, poverty, prostitution, racism, welfare, abortion, missing person, missing due to hostilities, long term care, juvenile delinquency, nuclear radiation victims, slavery, abusive behaviour, death and dying, people, children, infants, teen-agers, adults, senior citizens, social issues (general), social conditions, social problems, discrimination, social services, death penalty policies, ordnance clearance, reconstruction, sport, aero and aviation sport, parachuting, sky diving, alpine skiing, downhill, giant slalom, super G, slalom, combined, American football, (US) National Football League (NFL) (North American), CFL, AFL-DEPRECATED, archery, FITA / Outdoor target archery, crossbow shooting, athletics, track and field, 100 m, 200 m, 400 m, 800 m, 1000 m, 1500 m, mile, 2000 m, 3000 m, 5000 m, 10,000 m, 20 km, one hour, 25000, 30000, 110 m hurdles, 400 m hurdles, 3000 m steeplechase, high jump, pole vault, long jump, triple jump, shot put, discus throw, hammer throw, javelin throw, decathlon, 4x100 m, 4x200 m, 4x400 m, 4x800 m, 4x1500 m, walk 1 h, walk 2 h, 10 km walk, 15 km walk, 20 km walk, 30 km walk, 50 km walk, 100 m hurdles, 5 km walk, heptathlon, 1500 m walk, 2000 m walk, 3000 m walk, 50 m, 50 m hurdles, 50 yards, 50 yard hurdles, 60 m, 60 m hurdles, 60 yards, 60 yard hurdles, 100 yards, 100 yard hurdles, 300 m, 300 yards, 440 yards, 500 m, 500 yards, 600 m, 600 yards, 880 yards, 1000 yards, 2 miles, 3 miles, 6 miles, 4x1 mile, pentathlon, badminton, baseball, Major League Baseball (North American Professional) - American League, Major League Baseball (North American Professional) - National League, Major League Baseball (North American Professional) - Special (e.g. All-Star, World Series), rubberball baseball, Major League Baseball Playoffs, World Series, basketball, National Basketball Association (North American Professional), professional - Women general, Swiss netball, German netball, Dutch netball, biathlon, 7.5 km, 10 km, 15 km, 20 km, 4x7.5 km relay, 12.5 km pursuit, billiards, snooker and pool, 8 ball, 9 ball, 14.1, continuous-DEPRECATED, other-DEPRECATED, snooker, bobsleigh, two-man sled, four-man sled, bowling, bowls and petanque, boxing, super-heavyweight, heavyweight, cruiserweight, light-heavyweight, super-middleweight, middleweight, light-middleweight, welterweight, light-welterweight, lightweight, super-featherweight, featherweight, super-bantamweight, bantamweight, super-flyweight, flyweight, light flyweight, straw, IBF, WBA, WBC, WBO, French boxing, Thai boxing, canoeing and kayaking, Slalom, 200 m, 500 m, 1000 m, K1, K2, K4, C1, C2, C4, canoe sailing, pontoniering, climbing, mountaineering, sport climbing, cricket, curling, icestock sport, cycling, track, pursuit, Olympic sprint, sprint, Keirin, points race, Madison race, 500 m time trial, 1 km time trial, one hour, road race, road time trial, staging race, cyclo-cross, Vtt, Vtt-cross, Vtt-downhill, bi-crossing, trial, artistic cycling, cycle ball, dancing, diving, 10 m platform, 10 m platform synchronised, 3 m springboard, 3 m springboard synchronised, subaquatics, scuba diving, equestrian, three-day event, dressage, jumping, cross country, fencing, epee, foil, sabre, field Hockey, roll hockey, figure Skating, singles, pairs, ice dance, freestyle Skiing, moguls, aerials, artistic skiing, golf, gymnastics, floor exercise, vault, pommel horse, uneven bars, parallel bars, horizontal bar, rings, beam, rhythmic, clubs, hoop, ribbon, rope, ball, trampoline, handball (team), horse racing, harness racing, flat racing, steeple chase, trotting, cross country, ice hockey, National Hockey League (North American), sledge hockey, Jai Alai (Pelota), fronton, jai-alai, left wall, trinquet, rebot, chistera ancha, chistera corta, bare hand, pala-ancha, pala-corta, pasaka, xare, judo, heavyweight, half-heavyweight, middleweight, half-middleweight, half-lightweight, lightweight, extra lightweight, karate, sparring, formal exercise-DEPRECATED, lacrosse, luge, singles, doubles, marathon, modern pentathlon, running, shooting, swimming, fencing, showjumping, motor racing, Formula One, F3000, endurance, Indy, CART, NHRA, NASCAR, TRUCKI, motor rallying, rallying, pursuit, rallycross, motorcycling, speed-Grand-Prix, enduro, grass-track, moto-ball, moto-cross, rallying, trial, endurance, superbike, 125 cm3, 250 cm3, 500 cm3, side-cars, motoGP, netball, nordic skiing, cross-country, 5 km classical time, 10 km classical style, 10 km pursuit free style, 15 km classical style, 15 km pursuit free style, 10 km + 15 km combined, 30 km classical style, 30km free style, 50 km free style, 4x5 km relay, 4x10 km relay, nordic combined, raid, 5 km pursuit free style, 1.5 km sprint free, 50 km classic style, orienteering, ski orienteering, polo, power boating, F1, F2, rowing, single sculls, double sculls, quadruple sculls, coxless pair, coxless four, eight, lightweight, rugby league, rugby union, rugby 7, sailing, Tornado, soling, 49er, Europe, Laser, 470, Finn, Star, flying dutchmann, 505, staging race, around the world, monohull, multihulls, yngling, mistral, shooting, 10 m air rifle, 10 m air pistol, 10 m running target, 25 m rapid fire pistol, 25 m sport pistol, 50 m free pistol, 50 m free rifle prone, 50 m free rifle 3x40, 50 m sport rifle 3x20, trap, double trap, skeet, ski jumping, K90 jump, K120 jump, K180 (flying jump), snow boarding, giant slalom, half-pipe, soccer, softball, speed skating, 500 m, 1000 m, 1500 m, 3000 m, 5000 m, 10000 m, Short-track, st 500 m, st 1000m, st 1500m, st 3000m, st 3000m relay, st 5000m, st 5000m relay, speedway, sports organisations, IOC, international federation, continental federation, national federation, GAISF, squash, sumo wrestling, surfing, swimming, 50 m freestyle, 100 m freestyle, 200 m freestyle, 400 m freestyle, 800 m freestyle, 1500 m freestyle, relay 4x50 m freestyle, relay 4x100 m freestyle, relay 4x200 m freestyle, 50 m backstroke, 100 m backstroke, 200 m backstroke, 50 m breaststroke, 100 m breaststroke, 200 m breaststroke, 50 m butterfly, 100 m butterfly, 200 m butterfly, 100 m medley, 200 m medley, 400 m medley, relay 4x50 m medlay, relay4x100 m medley, short course, synchronised technical routine, synchronised free routine, table tennis, Taekwon-Do, under 49 kg, under 58 kg, 49-57 kg, 58-68 kg, 57-67 kg, 68-80 kg, over 67 kg, over 80 kg, tennis, soft tennis, triathlon, triathlon swimming, triathlon cycling, triathlon run, volleyball, beach volleyball, water polo, water skiing, slalom, trick, jump, combined, weightlifting, snatch, clean and jerk, 48 kg, 53 kg, 63 kg, 75 kg, over 75 kg, 56 kg, 62 kg, 69 kg, 77 kg, 85 kg, 94 kg, 105 kg, over 105 kg, powerlifting, windsurfing, ocean, lake, river, land, wrestling, freestyle, greco-roman, over 130 kg, 130 kg, 97 kg, 85 kg, 76 kg, 69 kg, 63 kg, 58 kg, 54 kg, Swiss wrestling, sports event, Summer Olympics, Winter Olympics, Summer universiade, Winter Universiade, Commonwealth Games, Winter Goodwill Games, Summer Asian Games, Winter Asian Games, Panamerican Games, African Games, Mediterranean Games, SouthEast Asiatic Games, PanPacific Games, SouthPacific Games, PanArabic Games, Summer Goodwill Games, World games, World Cup, intercontinental cup, continental cup, international cup, National Cup, interregional cup, regional cup, league cup, world championship, intercontinental championship, continental championship 1st level, continental championship 2nd level, continental championship 3rd level, national championship 1st level, national championship 2nd level, national championship3rdlevel, national championship 4th level, regional championship, Grand Prix, intercontinental tournament, continental tournament, international tournament, national tournament, inter-nations competition, inter-clubs competition, friendly competition, all-stars competition, exhibition, Super Bowl, paralympic games, rodeo, barrel racing, calf roping, bull riding, bulldogging, saddle bronc, bareback, goat roping, mini golf sport, bandy, flying disc, ultimate, guts, overall, distance, discathon, DDC, SCF, freestyle, accuracy, disc golf, floorball, casting, tug-of-war, croquette, dog racing, sled, oval track, skeleton, Australian rules football, Canadian football, duathlon, hornuss, fist ball, inline skating, grass ski, snowbiking, twirling, kendo, jukendo, naginata, kyudo, kabaddi, sepak takraw, wushu, darts, bodybuilding, sports disciplinary action, sports awards, unrest, conflicts and war, act of terror, armed conflict, civil unrest, revolutions, rebellions, political dissent, religious conflict, social conflict, coup d'etat, guerrilla activity, bioterrorism, bombings, massacre, genocide, riots, demonstration, war, civil war, international military intervention, prisoners and detainees, conflict (general), peacekeeping force, crisis, weaponry, weather, forecast, global change, report, weather news, statistic, warning
Xmp.iptcExt.AddlModelInfo Test Model Info Test Model Info
Xmp.iptcExt.DigImageGUID nq394uihqtj085jh0qj5h034jhq905mtrjh nq394uihqtj085jh0qj5h034jhq905mtrjh
Xmp.iptcExt.DigitalSourceType http://cv.iptc.org/newscodes/digitalsourcetype/softwareImage The digital image was created by computer software
Xmp.iptcExt.MaxAvailHeight 250 250
Xmp.iptcExt.MaxAvailWidth 250 250
Xmp.iptcExt.AboutCvTerm type="Bag"
Xmp.iptcExt.AboutCvTerm[1] type="Struct"
Xmp.iptcExt.AboutCvTerm[1]/Iptc4xmpExt:CvId http://example.com/cv/test http://example.com/cv/test
Xmp.iptcExt.AboutCvTerm[1]/Iptc4xmpExt:CvTermId http://example.com/2489rtuj35i5gon3509hg http://example.com/2489rtuj35i5gon3509hg
Xmp.iptcExt.AboutCvTerm[1]/Iptc4xmpExt:CvTermRefinedAbout http://example.com/eopihjg30mhn0q4emn09 http://example.com/eopihjg30mhn0q4emn09
Xmp.iptcExt.AboutCvTerm[1]/Iptc4xmpExt:CvTermName lang="x-default" Test CV-Term Name lang="x-default" Test CV-Term Name
Xmp.iptcExt.ArtworkOrObject type="Bag"
Xmp.iptcExt.ArtworkOrObject[1] type="Struct"
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOCircaDateCreated 2022-01-04 2022-01-04
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOCopyrightNotice Copyright Exiv2 Copyright Exiv2
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOCurrentCopyrightOwnerId http://www.example.com/userID/q30w4jyg34nh0h4j0934jh http://www.example.com/userID/q30w4jyg34nh0h4j0934jh
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOCurrentCopyrightOwnerName Exiv2 Exiv2
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOCurrentLicensorId http://www.example.com/licensorID/j70948tjg308jgn093q4 http://www.example.com/licensorID/j70948tjg308jgn093q4
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOCurrentLicensorName Licensor Licensor
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AODateCreated 2022-01-04T09:41:01+00:00 2022-01-04T09:41:01+00:00
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOSource Exiv2 Exiv2
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOSourceInvNo 3984u1tIAEUshjg03j409 3984u1tIAEUshjg03j409
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOSourceInvURL http://www.example.com/sourceID/309g30qm00ginm55-hj0 http://www.example.com/sourceID/309g30qm00ginm55-hj0
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOContentDescription lang="x-default" Test data lang="x-default" Test data
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOContributionDescription lang="x-default" None lang="x-default" None
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOCreator postscript-dev postscript-dev
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOCreatorId http://www.example.com/userID/q3049jq09mn0hq39m5h http://www.example.com/userID/q3049jq09mn0hq39m5h
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOPhysicalDescription lang="x-default" Test data lang="x-default" Test data
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOStylePeriod Art Deco Art Deco
Xmp.iptcExt.ArtworkOrObject[1]/Iptc4xmpExt:AOTitle lang="x-default" Xmp.iptc.* and Xmp.iptcExt.* test data lang="x-default" Xmp.iptc.* and Xmp.iptcExt.* test data
Xmp.iptcExt.EmbdEncRightsExpr type="Bag"
Xmp.iptcExt.EmbdEncRightsExpr[1] type="Struct"
Xmp.iptcExt.EmbdEncRightsExpr[1]/Iptc4xmpExt:EncRightsExpr Exiv2 project license: https://raw.githubusercontent.com/Exiv2/exiv2/main/COPYING Exiv2 project license: https://raw.githubusercontent.com/Exiv2/exiv2/main/COPYING
Xmp.iptcExt.EmbdEncRightsExpr[1]/Iptc4xmpExt:RightsExprEncType text/plain text/plain
Xmp.iptcExt.EmbdEncRightsExpr[1]/Iptc4xmpExt:RightsExprLangId http://www.example.com/rightsID/lkjusahgnoie439j9340 http://www.example.com/rightsID/lkjusahgnoie439j9340
Xmp.iptcExt.Event lang="x-default" None lang="x-default" None
Xmp.iptcExt.EventId https://example.com/eventID/39085yjinmhq09043h https://example.com/eventID/39085yjinmhq09043h
Xmp.iptcExt.Genre type="Bag"
Xmp.iptcExt.Genre[1] type="Struct"
Xmp.iptcExt.Genre[1]/Iptc4xmpExt:CvId http://example.com/cvID/380940jeokjhinthrstn http://example.com/cvID/380940jeokjhinthrstn
Xmp.iptcExt.Genre[1]/Iptc4xmpExt:CvTermId http://example.com/cvtermID/dfjkhng93jqg03jrs0hm http://example.com/cvtermID/dfjkhng93jqg03jrs0hm
Xmp.iptcExt.Genre[1]/Iptc4xmpExt:CvTermRefinedAbout http://example.com/cvtermrefinedabout/fjh3n809jn0q3jh5q09hjrojh3509 http://example.com/cvtermrefinedabout/fjh3n809jn0q3jh5q09hjrojh3509
Xmp.iptcExt.Genre[1]/Iptc4xmpExt:CvTermName lang="x-default" Test CvTermName lang="x-default" Test CvTermName
Xmp.iptcExt.ImageRegion type="Bag"
Xmp.iptcExt.ImageRegion[1] type="Struct"
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:rId testregion testregion
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:Name lang="x-default" Test Region lang="x-default" Test Region
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:OrganisationInImageName Exiv2 Exiv2
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:PersonInImage None None
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:RegionBoundary type="Struct"
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:RegionBoundary/Iptc4xmpExt:rbH 0.35 0.35
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:RegionBoundary/Iptc4xmpExt:rbShape rectangle rectangle
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:RegionBoundary/Iptc4xmpExt:rbUnit relative relative
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:RegionBoundary/Iptc4xmpExt:rbW 0.15 0.15
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:RegionBoundary/Iptc4xmpExt:rbX 0.25 0.25
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:RegionBoundary/Iptc4xmpExt:rbY 0.25 0.25
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:rCtype type="Bag"
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:rCtype[1] type="Struct"
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:rCtype[1]/Iptc4xmpExt:Name lang="x-default" Somewhere lang="x-default" Somewhere
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:rCtype[1]/xmp:Identifier https://example.org/GUID/q3094jg304ng3049jhtio4j3 https://example.org/GUID/q3094jg304ng3049jhtio4j3
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:rRole type="Bag"
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:rRole[1] type="Struct"
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:rRole[1]/Iptc4xmpExt:Name lang="x-default" Test name lang="x-default" Test name
Xmp.iptcExt.ImageRegion[1]/Iptc4xmpExt:rRole[1]/xmp:Identifier https://example.org/GUID/ioehg03q94jh0935nhq3hj9 https://example.org/GUID/ioehg03q94jh0935nhq3hj9
Xmp.iptcExt.LinkedEncRightsExpr type="Bag"
Xmp.iptcExt.LinkedEncRightsExpr[1] type="Struct"
Xmp.iptcExt.LinkedEncRightsExpr[1]/Iptc4xmpExt:LinkedRightsExpr http://example.org/linkedrightsexpression/034j093jhn0erihjmkjnh034 http://example.org/linkedrightsexpression/034j093jhn0erihjmkjnh034
Xmp.iptcExt.LinkedEncRightsExpr[1]/Iptc4xmpExt:RightsExprEncType text/xml text/xml
Xmp.iptcExt.LinkedEncRightsExpr[1]/Iptc4xmpExt:RightsExprLangId http://example.org/rightsexprlangid/3098jnyqgh03jnh0jw45uj65yh http://example.org/rightsexprlangid/3098jnyqgh03jnh0jw45uj65yh
Xmp.iptcExt.LocationCreated type="Bag"
Xmp.iptcExt.LocationCreated[1] type="Struct"
Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:City Test City Test City
Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:CountryCode GBR GBR
Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:CountryName Test Country Test Country
Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:ProvinceState Test Province/State Test Province/State
Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:Sublocation Test Sublocation Test Sublocation
Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:WorldRegion Test Region Test Region
Xmp.iptcExt.LocationCreated[1]/exif:GPSAltitude 25/1 25/1
Xmp.iptcExt.LocationCreated[1]/exif:GPSLatitude 51,30.30N 51,30.30N
Xmp.iptcExt.LocationCreated[1]/exif:GPSLongitude 0,07.32W 0,07.32W
Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:LocationId http://example.org/locationId/3409j0ijm3fgldsgjk2 http://example.org/locationId/3409j0ijm3fgldsgjk2
Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:LocationName lang="x-default" Test Location lang="x-default" Test Location
Xmp.iptcExt.LocationShown type="Bag"
Xmp.iptcExt.LocationShown[1] type="Struct"
Xmp.iptcExt.LocationShown[1]/Iptc4xmpExt:City Test City Test City
Xmp.iptcExt.LocationShown[1]/Iptc4xmpExt:CountryCode GBR GBR
Xmp.iptcExt.LocationShown[1]/Iptc4xmpExt:CountryName Test Country Test Country
Xmp.iptcExt.LocationShown[1]/Iptc4xmpExt:ProvinceState Test Province/State Test Province/State
Xmp.iptcExt.LocationShown[1]/Iptc4xmpExt:Sublocation Test Sublocation Test Sublocation
Xmp.iptcExt.LocationShown[1]/Iptc4xmpExt:WorldRegion Test Region Test Region
Xmp.iptcExt.LocationShown[1]/exif:GPSAltitude 25/1 25/1
Xmp.iptcExt.LocationShown[1]/exif:GPSLatitude 51,30.30N 51,30.30N
Xmp.iptcExt.LocationShown[1]/exif:GPSLongitude 0,07.32W 0,07.32W
Xmp.iptcExt.LocationShown[1]/Iptc4xmpExt:LocationId http://example.org/locationId/3409j0ijm3fgldsgjk2 http://example.org/locationId/3409j0ijm3fgldsgjk2
Xmp.iptcExt.LocationShown[1]/Iptc4xmpExt:LocationName lang="x-default" Test Location lang="x-default" Test Location
Xmp.iptcExt.ModelAge 25 25
Xmp.iptcExt.OrganisationInImageCode Test code:code Test code:code
Xmp.iptcExt.OrganisationInImageName None None
Xmp.iptcExt.PersonInImage Nobody Nobody
Xmp.iptcExt.PersonInImageWDetails type="Bag"
Xmp.iptcExt.PersonInImageWDetails[1] type="Struct"
Xmp.iptcExt.PersonInImageWDetails[1]/Iptc4xmpExt:PersonCharacteristic type="Bag"
Xmp.iptcExt.PersonInImageWDetails[1]/Iptc4xmpExt:PersonCharacteristic[1] type="Struct"
Xmp.iptcExt.PersonInImageWDetails[1]/Iptc4xmpExt:PersonCharacteristic[1]/Iptc4xmpExt:CvId http://example.com/cvid/0q349ji3mg30gme45h4 http://example.com/cvid/0q349ji3mg30gme45h4
Xmp.iptcExt.PersonInImageWDetails[1]/Iptc4xmpExt:PersonCharacteristic[1]/Iptc4xmpExt:CvTermId http://example.com/cvtermid/0249jtgmn3wopmhpmklfmnh5 http://example.com/cvtermid/0249jtgmn3wopmhpmklfmnh5
Xmp.iptcExt.PersonInImageWDetails[1]/Iptc4xmpExt:PersonCharacteristic[1]/Iptc4xmpExt:CvTermRefinedAbout http://example.com/cvtermrefinedabout/0294jgmionmheohknmm5ohtyk http://example.com/cvtermrefinedabout/0294jgmionmheohknmm5ohtyk
Xmp.iptcExt.PersonInImageWDetails[1]/Iptc4xmpExt:PersonCharacteristic[1]/Iptc4xmpExt:CvTermName lang="x-default" Nobody lang="x-default" Nobody
Xmp.iptcExt.PersonInImageWDetails[1]/Iptc4xmpExt:PersonDescription lang="x-default" None lang="x-default" None
Xmp.iptcExt.PersonInImageWDetails[1]/Iptc4xmpExt:PersonId http://www.example.com/personid/039nmkojnsrgaioj4g04ew4gm http://www.example.com/personid/039nmkojnsrgaioj4g04ew4gm
Xmp.iptcExt.PersonInImageWDetails[1]/Iptc4xmpExt:PersonName lang="x-default" Nobody lang="x-default" Nobody
Xmp.iptcExt.ProductInImage type="Bag"
Xmp.iptcExt.ProductInImage[1] type="Struct"
Xmp.iptcExt.ProductInImage[1]/Iptc4xmpExt:ProductGTIN 12345678901234 12345678901234
Xmp.iptcExt.ProductInImage[1]/Iptc4xmpExt:ProductDescription lang="x-default" None lang="x-default" None
Xmp.iptcExt.ProductInImage[1]/Iptc4xmpExt:ProductName lang="x-default" None lang="x-default" None
Xmp.iptcExt.RegistryId type="Bag"
Xmp.iptcExt.RegistryId[1] type="Struct"
Xmp.iptcExt.RegistryId[1]/Iptc4xmpExt:RegEntryRole http://www.example.com/regentryrole/09mnwergomng409mg049 http://www.example.com/regentryrole/09mnwergomng409mg049
Xmp.iptcExt.RegistryId[1]/Iptc4xmpExt:RegItemId aeijt0293jtg0in340g0gh aeijt0293jtg0in340g0gh
Xmp.iptcExt.RegistryId[1]/Iptc4xmpExt:RegOrgId awring049j0gm4i03jh340 awring049j0gm4i03jh340
Xmp.plus.ImageCreatorImageID Test Image Creator Image ID Test Image Creator Image ID
Xmp.plus.ImageSupplierImageID Test Image Supplier Image ID Test Image Supplier Image ID
Xmp.plus.MinorModelAgeDisclosure http://ns.useplus.org/ldf/vocab/AG-A25 Age 25 or Over
Xmp.plus.ModelReleaseStatus http://ns.useplus.org/ldf/vocab/MR-NAP Not Applicable
Xmp.plus.PropertyReleaseStatus http://ns.useplus.org/ldf/vocab/PR-NAP Not Applicable
Xmp.plus.CopyrightOwner type="Seq"
Xmp.plus.CopyrightOwner[1] type="Struct"
Xmp.plus.CopyrightOwner[1]/plus:CopyrightOwnerID http://www.example.com/copyrightownerid/0n4w3g0m409mg04dalnowun9 http://www.example.com/copyrightownerid/0n4w3g0m409mg04dalnowun9
Xmp.plus.CopyrightOwner[1]/plus:CopyrightOwnerName Exiv2 Exiv2
Xmp.plus.ImageCreator type="Seq"
Xmp.plus.ImageCreator[1] type="Struct"
Xmp.plus.ImageCreator[1]/plus:ImageCreatorID http://www.example.com/imagecreatorid/09n4mg09jreokrmhglwkmgdv http://www.example.com/imagecreatorid/09n4mg09jreokrmhglwkmgdv
Xmp.plus.ImageCreator[1]/plus:ImageCreatorName postscript-dev postscript-dev
Xmp.plus.ImageSupplier type="Seq"
Xmp.plus.ImageSupplier[1] type="Struct"
Xmp.plus.ImageSupplier[1]/plus:ImageSupplierID http://www.example.com/imagesupplierid/09gmn0pamwpomgnhtuhn50 http://www.example.com/imagesupplierid/09gmn0pamwpomgnhtuhn50
Xmp.plus.ImageSupplier[1]/plus:ImageSupplierName Exiv2 Exiv2
Xmp.plus.Licensor type="Seq"
Xmp.plus.Licensor[1] type="Struct"
Xmp.plus.Licensor[1]/plus:LicensorCity Test City Test City
Xmp.plus.Licensor[1]/plus:LicensorCountry Test Country Test Country
Xmp.plus.Licensor[1]/plus:LicensorEmail testlicensoremail_q23048jtn042@example.com testlicensoremail_q23048jtn042@example.com
Xmp.plus.Licensor[1]/plus:LicensorExtendedAddress Test Licensor Extended Address Test Licensor Extended Address
Xmp.plus.Licensor[1]/plus:LicensorID http://www.example.com/licensorid/0iaskrgmnowim4g0934m90gm43 http://www.example.com/licensorid/0iaskrgmnowim4g0934m90gm43
Xmp.plus.Licensor[1]/plus:LicensorName Someone Someone
Xmp.plus.Licensor[1]/plus:LicensorPostalCode Test Licensor Postcode Test Licensor Postcode
Xmp.plus.Licensor[1]/plus:LicensorRegion Test Licensor Region Test Licensor Region
Xmp.plus.Licensor[1]/plus:LicensorStreetAddress Test Licensor Street Address Test Licensor Street Address
Xmp.plus.Licensor[1]/plus:LicensorTelephone1 +1 (234) 567890 +1 (234) 567890
Xmp.plus.Licensor[1]/plus:LicensorTelephone2 +1 (345) 678901 +1 (345) 678901
Xmp.plus.Licensor[1]/plus:LicensorTelephoneType1 http://ns.useplus.org/ldf/vocab/work http://ns.useplus.org/ldf/vocab/work
Xmp.plus.Licensor[1]/plus:LicensorTelephoneType2 http://ns.useplus.org/ldf/vocab/cell http://ns.useplus.org/ldf/vocab/cell
Xmp.plus.Licensor[1]/plus:LicensorURL http://www.example.com/licensorurl/okng0934j9jkrg0430gjn0mn03 http://www.example.com/licensorurl/okng0934j9jkrg0430gjn0mn03
Xmp.plus.ModelReleaseID http://www.example.com/modelreleaseid/jhgmw3m0932mg0943mh32 http://www.example.com/modelreleaseid/jhgmw3m0932mg0943mh32
Xmp.plus.PropertyReleaseID http://www.example.com/propertyreleaseid/wii09mng290mg0b3mgb0ebebt http://www.example.com/propertyreleaseid/wii09mng290mg0b3mgb0ebebt
Xmp.xmp.Rating 5.0 5.0
Xmp.xmpRights.WebStatement http://www.example.com/WebStatement/testing123 http://www.example.com/WebStatement/testing123
Xmp.xmpRights.UsageTerms lang="x-default" See https://github.com/Exiv2/exiv2/blob/main/COPYING lang="x-default" See https://github.com/Exiv2/exiv2/blob/main/COPYING
Xmp.tiff.YCbCrPositioning 1 Centered
Xmp.tiff.XResolution 72/1 72
Xmp.tiff.YResolution 72/1 72
Xmp.tiff.ResolutionUnit 2 inch
Xmp.exif.ExifVersion 0232 2.32
Xmp.exif.FlashpixVersion 0100 1.00
Xmp.exif.ColorSpace 65535 Uncalibrated
Xmp.exif.ComponentsConfiguration 1 Y
Xmp.photoshop.DateCreated 2022-01-04T09:41:01+00:00 2022-01-04T09:41:01+00:00
Xmp.photoshop.Instructions Test Instructions Test Instructions
Xmp.photoshop.AuthorsPosition Test Creator's Job Title Test Creator's Job Title
Xmp.photoshop.City Test City Test City
Xmp.photoshop.State Test Province/State) Test Province/State)
Xmp.photoshop.Country Test Country Test Country
Xmp.photoshop.TransmissionReference Test Job ID Test Job ID
Xmp.photoshop.Headline Test Headline Test Headline
Xmp.photoshop.Credit Test Credit Line Test Credit Line
Xmp.photoshop.Source Test Source Test Source
Xmp.photoshop.CaptionWriter Test Name Test Name
Xmp.dc.title lang="x-default" Test IPTC XMP file lang="x-default" Test IPTC XMP file
Xmp.dc.subject Test Test
Xmp.dc.creator postscript-dev postscript-dev
Xmp.dc.rights lang="x-default" Copyright Exiv2 lang="x-default" Copyright Exiv2
Xmp.dc.description lang="x-default" Test file for the IPTC XMP tags lang="x-default" Test file for the IPTC XMP tags
: Standard output does not match
----------------------------------------------------------------------
Ran 1 test in 0.020s
FAILED (failures=1)
[msa@hoodoo build]$
Michael @mallman Thanks for sharing this with me. I don't know why I'm only seeing this email today on Sunday when you posted it on Thursday. I know I've spoken to you elsewhere about this when I remembered how to "go home" to California. The issue is being caused by the metadata convertors.
I think the aim of the test is to read sidecar files (.xmp). Choosing a side-car file which doesn't have timestamps will probably evade this part of the convertor and the test will no longer be sensitive to the host TZ settings. @postscript-dev may have discovered a way in which to run all tests in TZ=UTC.
For sure this is ugly and undesirable. I'm confident that we can make this disappear with a change in the test suite. We need a better understanding of the rationale for the convertors. Perhaps the library needs a global switch to enable/disable metadata convertors.
This looks mostly pain free. There's a comment in src/xmpsidecar.cpp
// #1112 - store dates to deal with loss of TZ information during conversions
for (auto&& it : xmpData_) {
std::string key(it.key());
if ( key.find("Date") != std::string::npos ) {
std::string value(it.value().toString());
dates_[key] = value;
}
}
copyXmpToIptc(xmpData_, iptcData_);
copyXmpToExif(xmpData_, exifData_);
That refers to 1112 on redmine. So this was about 2014 or so.
The 1112 issue was that the XMP to Exif convertor rounded the XMP (XML date with TZ and decimal point seconds) to Exif seconds (which at that time didn't support sub-seconds, or TZ offsets). Then the Exif to XMP convertor copied the Exif DataTime into the XMP.
So my fix in 1112 was to store the XML date before the convertor dance and restore them in writeMetadata().
Here are examples of the date time formats in Exif and XML. You'll spot the image was taken in July when the UK was in Summer Time (+1.00). I labelled the image "Classic View" about 8:30pm when I got home from taking guests to visit the stones and Picasa correctly set Xmp.xmp.ModifyDate
543 rmills@rmillsmm-local:~/gnu/github/exiv2/main $ exiv2 -px https://exiv2.org/Stonehenge.jpg
Xmp.xmp.Rating XmpText 1 0
Xmp.xmp.ModifyDate XmpText 25 2015-07-16T20:25:28+01:00
Xmp.dc.description LangAlt 1 lang="x-default" Classic View
544 rmills@rmillsmm-local:~/gnu/github/exiv2/main $ exiv2 -g Original/i https://exiv2.org/Stonehenge.jpg
Exif.Photo.DateTimeOriginal Ascii 20 2015:07:16 15:38:54
Exif.Photo.SubSecTimeOriginal Ascii 3 00
545 rmills@rmillsmm-local:~/gnu/github/exiv2/main $
So, we have the XML date in our hands and have to add something like:
std::string dateTimeOriginal = 'Xmp.photoshop.DateCreated' ;
if ( exifData_.find("Exif.Photos.DateTimeOriginal") >= 0 && dates_.count(dateTimeOriginal) ) {
exifData_["Exif.Photo.DateTimeOriginal"] = xmlToExif(dates_[dateTimeOriginal]);
}
We'll need an xmlToExif() convertor which is almost certain in the code base. We might need to tell him to ignore TZ.
542 rmills@rmillsmm-local:~/gnu/github/exiv2/main $ grep date src/convert.cpp
@brief Exif date to XMP conversion function.
Sets the XMP property to an XmpText value containing date and time. This function
@brief XMP to Exif date conversion function.
Converts the XmpText value to Exif date and time. This function
XMP and Exif was updated more recently and copies metadata in appropriate direction.
...
This looks straight-forward to fix.
Hi @clanmills.
I don't think that an image with an embedded Exif.Photo.DateTimeOriginal
, such as https://exiv2.org/Stonehenge.jpg, is an accurate proxy for the problem described in this issue (and in #2084). In that case, we only have an XMP sidecar, and it does not provide a sort of DateTimeOriginal
—at least, that's my claim.
The problem is we don't have Exif.Photo.DateTimeOriginal
and are trying to derive it from a timestamp such as Xmp.photoshop.DateCreated
. Absent additional information, a timestamp says nothing definite about a local time and vice versa. I may shoot a photo at 14:22 local time but can't know the timestamp without knowing some additional information like the local UTC offset. Likewise, I may shoot a photo at 14:22 UTC but that doesn't tell me the local time without additional information such as the local UTC offset.
The problem isn't a lack of a conversion function or a bug in a conversion function. I think the problem is such a conversion function is impossible without timezone information.
So one solution to this problem is specifying a local time zone or UTC offset as a parameter of a "timestamp to local time" function. I think this is the essence of how and why exiv uses the system time zone or the TZ
environment variable in these conversions. My concern there is that TZ
is a system-defined concept, and the idea that it implies a local time zone for a metadata conversion is a bit specious IMHO. I think if we require a client library or user to specify a local time zone for converting from a timestamp to a local time, it should be supplied explicitly—in the library API as as an additional, required function parameter and in the cli tool as a cli parameter (ignoring the local system time or some TZ variable). In this scenario, failing to provide a local time zone parameter to the exiv2 tool when converting between timestamps and local times would either be an error or exiv2 would simply omit that data (e.g. omit Exif.Photo.DateTimeOriginal
when converting from a timestamp).
Likewise, I suggest a function that converts a local time to a timestamp, should require an additional time zone (or offset) function parameter to specify the time zone of the local time.
@mallman I think there are two different subjects here. The first and immediate puzzle is to get the #1959 test to pass. The test in #1959 arrived with a request from IPTC to provide support for changes to their standards. I've outlined an approach that I believe will result in #1959 passing without causing issues to existing tests.
The second puzzle is the specification for the convertors. Are they based on work by a standards committee? I don't know.
I don't want to get further drawn into this matter. I retired last year from Exiv2 (after 13 years). I'm continuing to support the 0.27-maintenance branch and made two releases in 2021. I expect another "dot" will be required in 2022 as my final contribution to the project.
The first and immediate puzzle is to get the https://github.com/Exiv2/exiv2/issues/1959 test to pass.
Done! (Indirectly, but done nonetheless)
The second puzzle is the specification for the convertors. Are they based on work by a standards committee? I don't know.
Let's take this out of scope. I thought—naively—that this time conversion issue could be contained to a tidy scope. Wrong. Moving on to more higher priorities...
Describe the bug
Unit test test_issue_1959.py fails when run on a system whose UTC offset is nonzero. For example, this test fails on my system, where the time zone is set to Pacific Standard Time. However, the failure is simply a result of the test expecting
exiv2
to run with a UTC offset of zero.To Reproduce
Steps to reproduce the behavior:
Run ctest on a machine with a time zone which has a nonzero offset from UTC.
Expected behavior
Test test_issue_1959 passes.
Desktop (please complete the following information):
Additional context
While I don't know if this is the "best" or "correct" solution to this issue, I was able to fix it by modifying the command in https://github.com/Exiv2/exiv2/blob/8505f4d9350ce84e7a775330911874889bc05efe/tests/bugfixes/github/test_issue_1959.py#L18
to
Unless I hear otherwise, I will submit a PR with this change. Cheers.