Hey Phil, i am wondering if it might be possible to automate including a list of new fields in each revision announcement? for example:
"Added a new QuickTime tag"
could include the field name?
"Added a new QuickTime tag
QuickTime:Camm1:RollingShutterSkewTime" (fake example for illustrative purposes)
or maybe it's just a list of new fields separate from your description, dunno.
otherwise every time you announce a new field, we have to try and figure out which one is new.
as usual, i demand nothing, am grateful for everything, and respect any decision you make on this. - J
The quick and dirty way would be to diff the -list* option (https://exiftool.org/exiftool_pod.html#list--listw--listf--listr--listwf--listg-NUM--listd--listx) outputs.
For example, the difference of -listx between 13.13 and 13.16
2c2
< <!-- Generated by Image::ExifTool 13.13 -->
---
> <!-- Generated by Image::ExifTool 13.16 -->
17514a17515,17651
> <table name='Nikon::MenuSettingsZ9v5' g0='MakerNotes' g1='Nikon' g2='Camera'>
> <tag id='72' name='HighFrameRate' type='int8u' writable='true'/>
> <tag id='158' name='MultipleExposureMode' type='int8u' writable='true'/>
> <tag id='160' name='MultiExposureShots' type='int8u' writable='true'/>
> <tag id='208' name='Intervals' type='int32u' writable='true'/>
> <tag id='212' name='ShotsPerInterval' type='int32u' writable='true'/>
> <tag id='252' name='FocusShiftNumberShots' type='int8u' writable='true'/>
> <tag id='256' name='FocusShiftStepWidth' type='int8u' writable='true'/>
> <tag id='260' name='FocusShiftInterval' type='int8u' writable='false'/>
> <tag id='264' name='FocusShiftExposureLock' type='int8u' writable='true'/>
> <tag id='294' name='PhotoShootingMenuBank' type='int8u' writable='true'/>
> <tag id='296' name='ExtendedMenuBanks' type='int8u' writable='true'/>
> <tag id='332' name='PhotoShootingMenuBankImageArea' type='int8u' writable='true'/>
> <tag id='346' name='AutoISO' type='int8u' writable='true'/>
> <tag id='348' name='ISOAutoHiLimit' type='int16u' writable='true'/>
> <tag id='350' name='ISOAutoFlashLimit' type='int16u' writable='true'/>
> <tag id='358' name='ISOAutoShutterTime' type='int16s' writable='false'/>
> <tag id='440' name='MovieVignetteControl' type='int8u' writable='true'/>
> <tag id='442' name='DiffractionCompensation' type='int8u' writable='true'/>
> <tag id='444' name='FlickerReductionShooting' type='int8u' writable='true'/>
> <tag id='448' name='FlashControlMode' type='int8u' writable='true'/>
> <tag id='450' name='FlashMasterCompensation' type='int8s' writable='true'/>
> <tag id='454' name='FlashGNDistance' type='int8u' writable='false'/>
> <tag id='458' name='FlashOutput' type='int8u' writable='true'/>
> <tag id='552' name='AFAreaMode' type='int8u' writable='true'/>
> <tag id='554' name='VRMode' type='int8u' writable='true'/>
> <tag id='558' name='BracketSet' type='int8u' writable='true'/>
> <tag id='560' name='BracketProgram' type='int8u' writable='true'/>
> <tag id='562' name='BracketIncrement' type='int8u' writable='true'/>
> <tag id='574' name='HDR' type='int8u' writable='true'/>
> <tag id='580' name='SecondarySlotFunction' type='int8u' writable='true'/>
> <tag id='586' name='HDRLevel' type='int8u' writable='true'/>
> <tag id='590' name='Slot2JpgSize' type='int8u' writable='true'/>
> <tag id='596' name='DXCropAlert' type='int8u' writable='true'/>
> <tag id='598' name='SubjectDetection' type='int8u' writable='true'/>
> <tag id='600' name='DynamicAFAreaSize' type='int8u' writable='true'/>
> <tag id='640' name='HighFrequencyFlickerReduction' type='int8u' writable='true'/>
> <tag id='650' name='MovieImageArea' type='int8u' writable='true'/>
> <tag id='660' name='MovieType' type='int8u' writable='true'/>
> <tag id='662' name='MovieISOAutoHiLimit' type='int16u' writable='true'/>
> <tag id='664' name='MovieISOAutoControlManualMode' type='int8u' writable='true'/>
> <tag id='666' name='MovieISOAutoManualMode' type='int16u' writable='true'/>
> <tag id='740' name='MovieActiveD-Lighting' type='int8u' writable='true'/>
> <tag id='742' name='MovieHighISONoiseReduction' type='int8u' writable='true'/>
> <tag id='748' name='MovieFlickerReduction' type='int8u' writable='true'/>
> <tag id='750' name='MovieMeteringMode' type='int8u' writable='true'/>
> <tag id='752' name='MovieFocusMode' type='int8u' writable='true'/>
> <tag id='754' name='MovieAFAreaMode' type='int8u' writable='true'/>
> <tag id='756' name='MovieVRMode' type='int8u' writable='true'/>
> <tag id='760' name='MovieElectronicVR' type='int8u' writable='true'/>
> <tag id='762' name='MovieSoundRecording' type='int8u' writable='true'/>
> <tag id='764' name='MicrophoneSensitivity' type='int8u' writable='true'/>
> <tag id='766' name='MicrophoneAttenuator' type='int8u' writable='true'/>
> <tag id='768' name='MicrophoneFrequencyResponse' type='int8u' writable='true'/>
> <tag id='770' name='WindNoiseReduction' type='int8u' writable='true'/>
> <tag id='792' name='MovieToneMap' type='int8u' writable='true'/>
> <tag id='798' name='MovieFrameSize' type='int8u' writable='true'/>
> <tag id='800' name='MovieFrameRate' type='int8u' writable='true'/>
> <tag id='806' name='MicrophoneJackPower' type='int8u' writable='true'/>
> <tag id='807' name='MovieDXCropAlert' type='int8u' writable='true'/>
> <tag id='808' name='MovieSubjectDetection' type='int8u' writable='true'/>
> <tag id='816' name='MovieHighResZoom' type='int8u' writable='true'/>
> <tag id='1502' name='Language' type='int8u' writable='true'/>
> <tag id='1504' name='TimeZone' type='int8u' writable='true'/>
> <tag id='1510' name='MonitorBrightness' type='int8u' writable='true'/>
> <tag id='1532' name='AFFineTune' type='int8u' writable='true'/>
> <tag id='1536' name='NonCPULens1FocalLength' type='int16s' writable='false'/>
> <tag id='1540' name='NonCPULens2FocalLength' type='int16s' writable='false'/>
> <tag id='1542' name='NonCPULens3FocalLength' type='int16s' writable='false'/>
> <tag id='1548' name='NonCPULens4FocalLength' type='int16s' writable='false'/>
> <tag id='1552' name='NonCPULens5FocalLength' type='int16s' writable='false'/>
> <tag id='1556' name='NonCPULens6FocalLength' type='int16s' writable='false'/>
> <tag id='1560' name='NonCPULens7FocalLength' type='int16s' writable='false'/>
> <tag id='1564' name='NonCPULens8FocalLength' type='int16s' writable='false'/>
> <tag id='1568' name='NonCPULens9FocalLength' type='int16s' writable='false'/>
> <tag id='1572' name='NonCPULens10FocalLength' type='int16s' writable='false'/>
> <tag id='1576' name='NonCPULens11FocalLength' type='int16s' writable='false'/>
> <tag id='1580' name='NonCPULens12FocalLength' type='int16s' writable='false'/>
> <tag id='1584' name='NonCPULens13FocalLength' type='int16s' writable='false'/>
> <tag id='1588' name='NonCPULens14FocalLength' type='int16s' writable='false'/>
> <tag id='1592' name='NonCPULens15FocalLength' type='int16s' writable='false'/>
> <tag id='1596' name='NonCPULens16FocalLength' type='int16s' writable='false'/>
> <tag id='1600' name='NonCPULens17FocalLength' type='int16s' writable='false'/>
> <tag id='1604' name='NonCPULens18FocalLength' type='int16s' writable='false'/>
> <tag id='1608' name='NonCPULens19FocalLength' type='int16s' writable='false'/>
> <tag id='1612' name='NonCPULens20FocalLength' type='int16s' writable='false'/>
> <tag id='1616' name='NonCPULens1MaxAperture' type='int16s' writable='false'/>
> <tag id='1620' name='NonCPULens2MaxAperture' type='int16s' writable='false'/>
> <tag id='1624' name='NonCPULens3MaxAperture' type='int16s' writable='false'/>
> <tag id='1628' name='NonCPULens4MaxAperture' type='int16s' writable='false'/>
> <tag id='1632' name='NonCPULens5MaxAperture' type='int16s' writable='false'/>
> <tag id='1636' name='NonCPULens6MaxAperture' type='int16s' writable='false'/>
> <tag id='1640' name='NonCPULens7MaxAperture' type='int16s' writable='false'/>
> <tag id='1644' name='NonCPULens8MaxAperture' type='int16s' writable='false'/>
> <tag id='1648' name='NonCPULens9MaxAperture' type='int16s' writable='false'/>
> <tag id='1652' name='NonCPULens10MaxAperture' type='int16s' writable='false'/>
> <tag id='1656' name='NonCPULens11MaxAperture' type='int16s' writable='false'/>
> <tag id='1660' name='NonCPULens12MaxAperture' type='int16s' writable='false'/>
> <tag id='1664' name='NonCPULens13MaxAperture' type='int16s' writable='false'/>
> <tag id='1668' name='NonCPULens14MaxAperture' type='int16s' writable='false'/>
> <tag id='1672' name='NonCPULens15MaxAperture' type='int16s' writable='false'/>
> <tag id='1676' name='NonCPULens16MaxAperture' type='int16s' writable='false'/>
> <tag id='1680' name='NonCPULens17MaxAperture' type='int16s' writable='false'/>
> <tag id='1684' name='NonCPULens18MaxAperture' type='int16s' writable='false'/>
> <tag id='1688' name='NonCPULens19MaxAperture' type='int16s' writable='false'/>
> <tag id='1692' name='NonCPULens20MaxAperture' type='int16s' writable='false'/>
> <tag id='1708' name='HDMIOutputResolution' type='int8u' writable='true'/>
> <tag id='1721' name='SetClockFromLocationData' type='int8u' writable='true'/>
> <tag id='1728' name='AirplaneMode' type='int8u' writable='true'/>
> <tag id='1729' name='EmptySlotRelease' type='int8u' writable='true'/>
> <tag id='1764' name='EnergySavingMode' type='int8u' writable='true'/>
> <tag id='1788' name='RecordLocationData' type='int8u' writable='true'/>
> <tag id='1792' name='USBPowerDelivery' type='int8u' writable='true'/>
> <tag id='1801' name='SensorShield' type='int8u' writable='true'/>
> <tag id='1866' name='AutoCapturePreset' type='int8u' writable='true'/>
> <tag id='1868' name='FocusShiftAutoReset' type='int8u' writable='true'/>
> <tag id='1926' name='PreReleaseBurstLength' type='int8u' writable='true'/>
> <tag id='1928' name='PostReleaseBurstLength' type='int8u' writable='true'/>
> <tag id='1942' name='VerticalISOButton' type='int8u' writable='true'/>
> <tag id='1944' name='ExposureCompensationButton' type='int8u' writable='true'/>
> <tag id='1946' name='ISOButton' type='int8u' writable='true'/>
> <tag id='2006' name='ViewModeShowEffectsOfSettings' type='int8u' writable='true'/>
> <tag id='2008' name='DispButton' type='int8u' writable='true'/>
> <tag id='2052' name='ExposureDelay' type='fixed32u' writable='false'/>
> <tag id='2056' name='CommandDialFrameAdvanceZoom' type='int8u' writable='true'/>
> <tag id='2058' name='SubCommandDialFrameAdvanceZoom' type='int8u' writable='true'/>
> <tag id='2060' name='PlaybackButton' type='int8u' writable='true'/>
> <tag id='2062' name='WBButton' type='int8u' writable='true'/>
> <tag id='2064' name='BracketButton' type='int8u' writable='true'/>
> <tag id='2066' name='FlashModeButton' type='int8u' writable='true'/>
> <tag id='2068' name='LensFunc1ButtonPlaybackMode' type='int8u' writable='true'/>
> <tag id='2070' name='LensFunc2ButtonPlaybackMode' type='int8u' writable='true'/>
> <tag id='2072' name='PlaybackButtonPlaybackMode' type='int8u' writable='true'/>
> <tag id='2074' name='BracketButtonPlaybackMode' type='int8u' writable='true'/>
> <tag id='2076' name='FlashModeButtonPlaybackMode' type='int8u' writable='true'/>
> </table>
>
25213a25351
> <tag id='4' name='AlphaIsUsed' type='int8u' writable='false'/>
But there are still problems with it. For example, you don't know what group the AlphaIsUsed tag in the output belongs to.
can you please share the command you used to produce this output?
- J
exiftool_13.13 -listx -s >temp1.txt
exiftool -listx -s >temp2.txt
(at the time my regular exiftool was 13.16)
Then
diff temp1.txt temp2.txt
I wonder if there's an XML diff program. Something that would make the differences more human-readable.