exiftool-vendored.pl 13.32.0 → 13.34.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +2 -2
  2. package/bin/Changes +43 -4
  3. package/bin/MANIFEST +5 -0
  4. package/bin/META.json +1 -1
  5. package/bin/META.yml +1 -1
  6. package/bin/README +47 -46
  7. package/bin/exiftool +100 -83
  8. package/bin/lib/Image/ExifTool/BuildTagLookup.pm +4 -2
  9. package/bin/lib/Image/ExifTool/Canon.pm +15 -2
  10. package/bin/lib/Image/ExifTool/Exif.pm +6 -5
  11. package/bin/lib/Image/ExifTool/FlashPix.pm +4 -159
  12. package/bin/lib/Image/ExifTool/FujiFilm.pm +11 -3
  13. package/bin/lib/Image/ExifTool/Geotag.pm +5 -3
  14. package/bin/lib/Image/ExifTool/GoPro.pm +14 -2
  15. package/bin/lib/Image/ExifTool/LNK.pm +4 -1
  16. package/bin/lib/Image/ExifTool/Lang/cs.pm +0 -1
  17. package/bin/lib/Image/ExifTool/Lang/de.pm +0 -1
  18. package/bin/lib/Image/ExifTool/Lang/fr.pm +0 -1
  19. package/bin/lib/Image/ExifTool/Lang/it.pm +0 -1
  20. package/bin/lib/Image/ExifTool/Lang/ja.pm +0 -1
  21. package/bin/lib/Image/ExifTool/Lang/nl.pm +0 -1
  22. package/bin/lib/Image/ExifTool/Lang/pl.pm +0 -1
  23. package/bin/lib/Image/ExifTool/Lang/zh_cn.pm +0 -1
  24. package/bin/lib/Image/ExifTool/Microsoft.pm +158 -1
  25. package/bin/lib/Image/ExifTool/Minolta.pm +4 -2
  26. package/bin/lib/Image/ExifTool/Nikon.pm +69 -35
  27. package/bin/lib/Image/ExifTool/NikonCustom.pm +40 -10
  28. package/bin/lib/Image/ExifTool/Olympus.pm +253 -34
  29. package/bin/lib/Image/ExifTool/Panasonic.pm +3 -3
  30. package/bin/lib/Image/ExifTool/Pentax.pm +168 -14
  31. package/bin/lib/Image/ExifTool/QuickTime.pm +11 -4
  32. package/bin/lib/Image/ExifTool/README +2 -1
  33. package/bin/lib/Image/ExifTool/Sony.pm +43 -17
  34. package/bin/lib/Image/ExifTool/TNEF.pm +487 -0
  35. package/bin/lib/Image/ExifTool/TagLookup.pm +4375 -4267
  36. package/bin/lib/Image/ExifTool/TagNames.pod +244 -16
  37. package/bin/lib/Image/ExifTool/WriteExif.pl +14 -12
  38. package/bin/lib/Image/ExifTool/Writer.pl +12 -12
  39. package/bin/lib/Image/ExifTool.pm +12 -4
  40. package/bin/lib/Image/ExifTool.pod +50 -44
  41. package/bin/perl-Image-ExifTool.spec +46 -45
  42. package/index.js +2 -2
  43. package/package.json +9 -7
  44. package/bin/windows_exiftool.txt +0 -2936
package/README.md CHANGED
@@ -6,7 +6,7 @@ files are omitted, as they almost double the size of the package and more than
6
6
  triple the number of files in the package.
7
7
 
8
8
  [![npm version](https://img.shields.io/npm/v/exiftool-vendored.pl.svg)](https://www.npmjs.com/package/exiftool-vendored.pl)
9
- [![Node.js CI](https://github.com/photostructure/exiftool-vendored.pl/actions/workflows/node.js.yml/badge.svg)](https://github.com/photostructure/exiftool-vendored.pl/actions/workflows/node.js.yml)
9
+ [![Build](https://github.com/photostructure/exiftool-vendored.pl/actions/workflows/build.yml/badge.svg)](https://github.com/photostructure/exiftool-vendored.pl/actions/workflows/build.yml)
10
10
 
11
11
  ## Usage
12
12
 
@@ -23,4 +23,4 @@ number, if necessary, to follow SemVer.
23
23
  1. The `check-updates` workflow automatically detects new ExifTool versions and creates PRs
24
24
  2. Update PRs use a `-pre` suffix during development (e.g., `13.26.0-pre`)
25
25
  3. The `release` workflow removes the `-pre` suffix when publishing to npm
26
- 4. Final npm package versions match the vendored ExifTool version exactly
26
+ 4. Final npm package versions match the vendored ExifTool version exactly
package/bin/Changes CHANGED
@@ -7,6 +7,45 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 13.30. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Aug. 18, 2025 - Version 13.34
11
+
12
+ - Decode a number of new Pentax tags (thanks Karsten Gieselmann)
13
+ - Decode a new Canon tag (thanks Peter Wem, github #344)
14
+ - Updated Sony decoding for the ILME-FX2 and DSC-RX1RM3 (thanks Jos Roost)
15
+ - Minor fixes to decoding of new Olympus tags (thanks Karsten Gieselmann)
16
+ - Reverted change of 13.20 which changed the behaviour when writing
17
+ incorrectly-formatted date/time values
18
+ - Patched to avoid "uninitialized value $module" when using some custom config
19
+ files
20
+ - Fixed issue reading maker notes from some Sony ILCE models
21
+ - API Changes:
22
+ - Added UndefTags option to allow -m
23
+ and/or -f to be used without modifying the value of undef tags in -if
24
+ expressions (which was the behaviour prior to version 12.60)
25
+
26
+ July 25, 2025 - Version 13.33
27
+
28
+ - Added read support for TNEF files (eg. "winmail.dat")
29
+ - Added a new Canon HighlightTonePriority value (github #339)
30
+ - Decode Canon FocusBracketing tag (github #340)
31
+ - Decode more tags for newer Nikon Z models (thanks Warren Hatch)
32
+ - Decode a few more Olympus tags (thanks Karsten Gieselmann)
33
+ - Decode face detection tags for the Pentax K-3III (thanks Karsten Gieselmann)
34
+ - Decode a few more FujiFilm tags (github #343)
35
+ - Handle Olympus RawDev2IFD tag 0x8000 (named it RawDevSubIFD)
36
+ - Improved recognition of some Sony lenses (github #342)
37
+ - Enhanced the -p option to cycle through sub-documents
38
+ - Improved extraction of GoPro timed GPS to use sub-document numbers to
39
+ separate the individual fixes, allowing -p to extract all fixes at
40
+ sub-second resolution (although for earlier models these may not contain
41
+ timestamps)
42
+ - Extract EXIF information from Sigma fp MOV videos
43
+ - Patched to avoid "multi-segment EXIF with external pointers" error when
44
+ writing Olympus OM-1 JPG files converted by some utilities
45
+ - Fixed decoding of Panasonic LongExposureNRUsed (thanks AndrewJ)
46
+ - Fixed long-standing bug when using special characters in the -d option
47
+ argument
48
+
10
49
  July 2, 2025 - Version 13.32
11
50
 
12
51
  - Added a new Olympus CameraType (thanks Herb and Albert Shan)
@@ -19,9 +58,9 @@ July 2, 2025 - Version 13.32
19
58
  - Extract a couple more EXIF tags
20
59
  - Patched to allow a dot (.) in the name of a structure element when writing
21
60
  - Fixed "uninitialized value" bug when using -w with the -stay_open feature
22
- - Fixed bug in -file option when tag names were used to specify the name of
23
- the alternate file (the tags were taken only from the first input file
24
- unless a file name formatting code was also specified)
61
+ - Fixed bug in -file option when using tag names to specify the name of the
62
+ alternate file (the tags were taken only from the first input file unless a
63
+ file name formatting code was also specified)
25
64
 
26
65
  June 19, 2025 - Version 13.31
27
66
 
@@ -423,7 +462,7 @@ Nov. 12, 2024 - Version 13.03
423
462
  Nov. 5, 2024 - Version 13.02
424
463
 
425
464
  - Enhanced -j -l output to add optional "fmt" and "hex" fields
426
- - Enhanced -geotag option to support Android "Export Timeline data" JSON
465
+ - Enhanced -geotag option to support Google Maps "Export Timeline data" JSON
427
466
  format
428
467
  - Changed ProductVersion of Windows launcher to match ExifTool version
429
468
  - Patched to use empty group name instead of "Copy0" for family 4 group name
package/bin/MANIFEST CHANGED
@@ -177,6 +177,7 @@ html/TagNames/SigmaRaw.html
177
177
  html/TagNames/Sony.html
178
178
  html/TagNames/SonyIDC.html
179
179
  html/TagNames/Stim.html
180
+ html/TagNames/TNEF.html
180
181
  html/TagNames/Text.html
181
182
  html/TagNames/Theora.html
182
183
  html/TagNames/Torrent.html
@@ -434,6 +435,7 @@ lib/Image/ExifTool/SigmaRaw.pm
434
435
  lib/Image/ExifTool/Sony.pm
435
436
  lib/Image/ExifTool/SonyIDC.pm
436
437
  lib/Image/ExifTool/Stim.pm
438
+ lib/Image/ExifTool/TNEF.pm
437
439
  lib/Image/ExifTool/TagInfoXML.pm
438
440
  lib/Image/ExifTool/TagLookup.pm
439
441
  lib/Image/ExifTool/TagNames.pod
@@ -887,6 +889,8 @@ t/Sony.t
887
889
  t/Sony_2.out
888
890
  t/Sony_3.out
889
891
  t/Sony_5.out
892
+ t/TNEF.t
893
+ t/TNEF_2.out
890
894
  t/TestLib.pm
891
895
  t/Text.t
892
896
  t/Text_2.out
@@ -1179,6 +1183,7 @@ t/images/Sigma.x3f
1179
1183
  t/images/SigmaDP2.x3f
1180
1184
  t/images/Sony.jpg
1181
1185
  t/images/Sony.pmp
1186
+ t/images/TNEF.tnef
1182
1187
  t/images/Text.csv
1183
1188
  t/images/Text1.txt
1184
1189
  t/images/Text2.txt
package/bin/META.json CHANGED
@@ -50,6 +50,6 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "13.32",
53
+ "version" : "13.34",
54
54
  "x_serialization_backend" : "JSON::PP version 4.06"
55
55
  }
package/bin/META.yml CHANGED
@@ -31,5 +31,5 @@ recommends:
31
31
  Time::HiRes: '0'
32
32
  requires:
33
33
  perl: '5.004'
34
- version: '13.32'
34
+ version: '13.34'
35
35
  x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
package/bin/README CHANGED
@@ -14,50 +14,51 @@ supported by ExifTool (r = read, w = write, c = create):
14
14
 
15
15
  File Types
16
16
  ------------+-------------+-------------+-------------+------------
17
- 360 r/w | DOCX r | ITC r | NUMBERS r | RAM r
18
- 3FR r | DPX r | J2C r | NXD r | RAR r
19
- 3G2 r/w | DR4 r/w/c | JNG r/w | O r | RAW r/w
20
- 3GP r/w | DSS r | JP2 r/w | ODP r | RIFF r
21
- 7Z r | DV r | JPEG r/w | ODS r | RSRC r
22
- A r | DVB r/w | JSON r | ODT r | RTF r
23
- AA r | DVR-MS r | JXL r/w | OFR r | RW2 r/w
24
- AAC r | DYLIB r | K25 r | OGG r | RWL r/w
25
- AAE r | EIP r | KDC r | OGV r | RWZ r
26
- AAX r/w | EPS r/w | KEY r | ONP r | RM r
27
- ACR r | EPUB r | LA r | OPUS r | SEQ r
28
- AFM r | ERF r/w | LFP r | ORF r/w | SKETCH r
29
- AI r/w | EXE r | LIF r | ORI r/w | SO r
30
- AIFF r | EXIF r/w/c | LNK r | OTF r | SR2 r/w
31
- APE r | EXR r | LRV r/w | PAC r | SRF r
32
- ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SRW r/w
33
- ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | SVG r
34
- ASF r | FFF r/w | MACOS r | PCAP r | SWF r
35
- AVI r | FITS r | MAX r | PCAPNG r | THM r/w
36
- AVIF r/w | FLA r | MEF r/w | PCD r | TIFF r/w
37
- AZW r | FLAC r | MIE r/w/c | PCX r | TORRENT r
38
- BMP r | FLIF r/w | MIFF r | PDB r | TTC r
39
- BPG r | FLV r | MKA r | PDF r/w | TTF r
40
- BTF r | FPF r | MKS r | PEF r/w | TXT r
41
- C2PA r | FPX r | MKV r | PFA r | VCF r
42
- CHM r | GIF r/w | MNG r/w | PFB r | VNT r
43
- COS r | GLV r/w | MOBI r | PFM r | VRD r/w/c
44
- CR2 r/w | GPR r/w | MODD r | PGF r | VSD r
45
- CR3 r/w | GZ r | MOI r | PGM r/w | WAV r
46
- CRM r/w | HDP r/w | MOS r/w | PLIST r | WDP r/w
47
- CRW r/w | HDR r | MOV r/w | PICT r | WEBP r/w
48
- CS1 r/w | HEIC r/w | MP3 r | PMP r | WEBM r
49
- CSV r | HEIF r/w | MP4 r/w | PNG r/w | WMA r
50
- CUR r | HTML r | MPC r | PPM r/w | WMV r
51
- CZI r | ICC r/w/c | MPG r | PPT r | WPG r
52
- DCM r | ICO r | MPO r/w | PPTX r | WTV r
53
- DCP r/w | ICS r | MQV r/w | PS r/w | WV r
54
- DCR r | IDML r | MRC r | PSB r/w | X3F r/w
55
- DFONT r | IIQ r/w | MRW r/w | PSD r/w | XCF r
56
- DIVX r | IND r/w | MXF r | PSP r | XISF r
57
- DJVU r | INSP r/w | NEF r/w | QTIF r/w | XLS r
58
- DLL r | INSV r | NKA r | R3D r | XLSX r
59
- DNG r/w | INX r | NKSC r/w | RA r | XMP r/w/c
60
- DOC r | ISO r | NRW r/w | RAF r/w | ZIP r
17
+ 360 r/w | DPX r | JNG r/w | ODP r | RSRC r
18
+ 3FR r | DR4 r/w/c | JP2 r/w | ODS r | RTF r
19
+ 3G2 r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
20
+ 3GP r/w | DV r | JSON r | OFR r | RWL r/w
21
+ 7Z r | DVB r/w | JXL r/w | OGG r | RWZ r
22
+ A r | DVR-MS r | K25 r | OGV r | RM r
23
+ AA r | DYLIB r | KDC r | ONP r | SEQ r
24
+ AAC r | EIP r | KEY r | OPUS r | SKETCH r
25
+ AAE r | EPS r/w | LA r | ORF r/w | SO r
26
+ AAX r/w | EPUB r | LFP r | ORI r/w | SR2 r/w
27
+ ACR r | ERF r/w | LIF r | OTF r | SRF r
28
+ AFM r | EXE r | LNK r | PAC r | SRW r/w
29
+ AI r/w | EXIF r/w/c | LRV r/w | PAGES r | SVG r
30
+ AIFF r | EXR r | M2TS r | PBM r/w | SWF r
31
+ APE r | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
32
+ ARQ r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
33
+ ARW r/w | FFF r/w | MAX r | PCD r | TNEF r
34
+ ASF r | FITS r | MEF r/w | PCX r | TORRENT r
35
+ AVI r | FLA r | MIE r/w/c | PDB r | TTC r
36
+ AVIF r/w | FLAC r | MIFF r | PDF r/w | TTF r
37
+ AZW r | FLIF r/w | MKA r | PEF r/w | TXT r
38
+ BMP r | FLV r | MKS r | PFA r | VCF r
39
+ BPG r | FPF r | MKV r | PFB r | VNT r
40
+ BTF r | FPX r | MNG r/w | PFM r | VRD r/w/c
41
+ C2PA r | GIF r/w | MOBI r | PGF r | VSD r
42
+ CHM r | GLV r/w | MODD r | PGM r/w | WAV r
43
+ COS r | GPR r/w | MOI r | PLIST r | WDP r/w
44
+ CR2 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
45
+ CR3 r/w | HDP r/w | MOV r/w | PMP r | WEBM r
46
+ CRM r/w | HDR r | MP3 r | PNG r/w | WMA r
47
+ CRW r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
48
+ CS1 r/w | HEIF r/w | MPC r | PPT r | WPG r
49
+ CSV r | HTML r | MPG r | PPTX r | WTV r
50
+ CUR r | ICC r/w/c | MPO r/w | PS r/w | WV r
51
+ CZI r | ICO r | MQV r/w | PSB r/w | X3F r/w
52
+ DCM r | ICS r | MRC r | PSD r/w | XCF r
53
+ DCP r/w | IDML r | MRW r/w | PSP r | XISF r
54
+ DCR r | IIQ r/w | MXF r | QTIF r/w | XLS r
55
+ DFONT r | IND r/w | NEF r/w | R3D r | XLSX r
56
+ DIVX r | INSP r/w | NKA r | RA r | XMP r/w/c
57
+ DJVU r | INSV r | NKSC r/w | RAF r/w | ZIP r
58
+ DLL r | INX r | NRW r/w | RAM r |
59
+ DNG r/w | ISO r | NUMBERS r | RAR r |
60
+ DOC r | ITC r | NXD r | RAW r/w |
61
+ DOCX r | J2C r | O r | RIFF r |
61
62
 
62
63
  Meta Information
63
64
  ----------------------+----------------------+---------------------
@@ -109,8 +110,8 @@ your home directory, then you would type the following commands in a
109
110
  terminal window to extract and run ExifTool:
110
111
 
111
112
  cd ~/Desktop
112
- gzip -dc Image-ExifTool-13.32.tar.gz | tar -xf -
113
- cd Image-ExifTool-13.32
113
+ gzip -dc Image-ExifTool-13.34.tar.gz | tar -xf -
114
+ cd Image-ExifTool-13.34
114
115
  ./exiftool t/images/ExifTool.jpg
115
116
 
116
117
  Note: These commands extract meta information from one of the test images.
package/bin/exiftool CHANGED
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '13.32';
14
+ my $version = '13.34';
15
15
 
16
16
  $^W = 1; # enable global warnings
17
17
 
@@ -2537,7 +2537,7 @@ T2: foreach $t2 (@tags2) {
2537
2537
  # print the results for this file
2538
2538
  if (%printFmt) {
2539
2539
  # output using print format file (-p) option
2540
- my ($type, $doc, $grp, $lastDoc, $cache);
2540
+ my ($type, @doc, $grp, $lastDoc, $cache);
2541
2541
  $fileTrailer = '';
2542
2542
  # repeat for each embedded document if necessary (only if -ee used)
2543
2543
  if ($et->Options('ExtractEmbedded')) {
@@ -2546,7 +2546,8 @@ T2: foreach $t2 (@tags2) {
2546
2546
  } else {
2547
2547
  $lastDoc = 0;
2548
2548
  }
2549
- for ($doc=0; $doc<=$lastDoc; ++$doc) {
2549
+ for ($doc[0]=0; $doc[0]<=$lastDoc; ) {
2550
+ my $doc = join '-', @doc;
2550
2551
  my ($skipBody, $opt);
2551
2552
  foreach $type (qw(HEAD SECT IF BODY ENDS TAIL)) {
2552
2553
  my $prf = $printFmt{$type} or next;
@@ -2556,7 +2557,7 @@ T2: foreach $t2 (@tags2) {
2556
2557
  }
2557
2558
  next if $type eq 'BODY' and $skipBody;
2558
2559
  # silence "IF" warnings and warnings for subdocuments > 1
2559
- if ($type eq 'IF' or ($doc > 1 and not $$et{OPTIONS}{IgnoreMinorErrors})) {
2560
+ if ($type eq 'IF' or (($doc[0] > 1 or @doc > 1) and not $$et{OPTIONS}{IgnoreMinorErrors})) {
2560
2561
  $opt = 'Silent';
2561
2562
  } else {
2562
2563
  $opt = 'Warn';
@@ -2595,6 +2596,14 @@ T2: foreach $t2 (@tags2) {
2595
2596
  print $fp @lines;
2596
2597
  }
2597
2598
  }
2599
+ # find next available doc-subdoc
2600
+ push @doc, 1;
2601
+ while (@doc > 1) {
2602
+ my $nextDoc = join '-', @doc;
2603
+ last if $$et{HAS_DOC}{$nextDoc};
2604
+ pop @doc;
2605
+ ++$doc[-1];
2606
+ }
2598
2607
  }
2599
2608
  delete $printFmt{HEAD} unless defined $outfile; # print header only once per output file
2600
2609
  my $errs = $et->GetInfo('Warning', 'Error');
@@ -4526,6 +4535,10 @@ sub SuggestedExtension($$$)
4526
4535
  } elsif ($$valPt =~ /^.{4}ftyp(3gp|mp4|f4v|qt )/s) {
4527
4536
  my %movType = ( 'qt ' => 'mov' );
4528
4537
  $ext = $movType{$1} || $1;
4538
+ } elsif ($$valPt =~ /^<(!DOCTYPE )?html/i) {
4539
+ $ext = 'html';
4540
+ } elsif ($$valPt =~ /^[\n\r]*\{[\n\r]*\\rtf/) {
4541
+ $ext = 'rtf';
4529
4542
  } elsif ($$valPt !~ /^.{0,4096}\0/s) {
4530
4543
  $ext = 'txt';
4531
4544
  } elsif ($$valPt =~ /^BM.{15}\0/s) {
@@ -5062,50 +5075,51 @@ supported by ExifTool (r = read, w = write, c = create):
5062
5075
 
5063
5076
  File Types
5064
5077
  ------------+-------------+-------------+-------------+------------
5065
- 360 r/w | DOCX r | ITC r | NUMBERS r | RAM r
5066
- 3FR r | DPX r | J2C r | NXD r | RAR r
5067
- 3G2 r/w | DR4 r/w/c | JNG r/w | O r | RAW r/w
5068
- 3GP r/w | DSS r | JP2 r/w | ODP r | RIFF r
5069
- 7Z r | DV r | JPEG r/w | ODS r | RSRC r
5070
- A r | DVB r/w | JSON r | ODT r | RTF r
5071
- AA r | DVR-MS r | JXL r/w | OFR r | RW2 r/w
5072
- AAC r | DYLIB r | K25 r | OGG r | RWL r/w
5073
- AAE r | EIP r | KDC r | OGV r | RWZ r
5074
- AAX r/w | EPS r/w | KEY r | ONP r | RM r
5075
- ACR r | EPUB r | LA r | OPUS r | SEQ r
5076
- AFM r | ERF r/w | LFP r | ORF r/w | SKETCH r
5077
- AI r/w | EXE r | LIF r | ORI r/w | SO r
5078
- AIFF r | EXIF r/w/c | LNK r | OTF r | SR2 r/w
5079
- APE r | EXR r | LRV r/w | PAC r | SRF r
5080
- ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SRW r/w
5081
- ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | SVG r
5082
- ASF r | FFF r/w | MACOS r | PCAP r | SWF r
5083
- AVI r | FITS r | MAX r | PCAPNG r | THM r/w
5084
- AVIF r/w | FLA r | MEF r/w | PCD r | TIFF r/w
5085
- AZW r | FLAC r | MIE r/w/c | PCX r | TORRENT r
5086
- BMP r | FLIF r/w | MIFF r | PDB r | TTC r
5087
- BPG r | FLV r | MKA r | PDF r/w | TTF r
5088
- BTF r | FPF r | MKS r | PEF r/w | TXT r
5089
- C2PA r | FPX r | MKV r | PFA r | VCF r
5090
- CHM r | GIF r/w | MNG r/w | PFB r | VNT r
5091
- COS r | GLV r/w | MOBI r | PFM r | VRD r/w/c
5092
- CR2 r/w | GPR r/w | MODD r | PGF r | VSD r
5093
- CR3 r/w | GZ r | MOI r | PGM r/w | WAV r
5094
- CRM r/w | HDP r/w | MOS r/w | PLIST r | WDP r/w
5095
- CRW r/w | HDR r | MOV r/w | PICT r | WEBP r/w
5096
- CS1 r/w | HEIC r/w | MP3 r | PMP r | WEBM r
5097
- CSV r | HEIF r/w | MP4 r/w | PNG r/w | WMA r
5098
- CUR r | HTML r | MPC r | PPM r/w | WMV r
5099
- CZI r | ICC r/w/c | MPG r | PPT r | WPG r
5100
- DCM r | ICO r | MPO r/w | PPTX r | WTV r
5101
- DCP r/w | ICS r | MQV r/w | PS r/w | WV r
5102
- DCR r | IDML r | MRC r | PSB r/w | X3F r/w
5103
- DFONT r | IIQ r/w | MRW r/w | PSD r/w | XCF r
5104
- DIVX r | IND r/w | MXF r | PSP r | XISF r
5105
- DJVU r | INSP r/w | NEF r/w | QTIF r/w | XLS r
5106
- DLL r | INSV r | NKA r | R3D r | XLSX r
5107
- DNG r/w | INX r | NKSC r/w | RA r | XMP r/w/c
5108
- DOC r | ISO r | NRW r/w | RAF r/w | ZIP r
5078
+ 360 r/w | DPX r | JNG r/w | ODP r | RSRC r
5079
+ 3FR r | DR4 r/w/c | JP2 r/w | ODS r | RTF r
5080
+ 3G2 r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
5081
+ 3GP r/w | DV r | JSON r | OFR r | RWL r/w
5082
+ 7Z r | DVB r/w | JXL r/w | OGG r | RWZ r
5083
+ A r | DVR-MS r | K25 r | OGV r | RM r
5084
+ AA r | DYLIB r | KDC r | ONP r | SEQ r
5085
+ AAC r | EIP r | KEY r | OPUS r | SKETCH r
5086
+ AAE r | EPS r/w | LA r | ORF r/w | SO r
5087
+ AAX r/w | EPUB r | LFP r | ORI r/w | SR2 r/w
5088
+ ACR r | ERF r/w | LIF r | OTF r | SRF r
5089
+ AFM r | EXE r | LNK r | PAC r | SRW r/w
5090
+ AI r/w | EXIF r/w/c | LRV r/w | PAGES r | SVG r
5091
+ AIFF r | EXR r | M2TS r | PBM r/w | SWF r
5092
+ APE r | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
5093
+ ARQ r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
5094
+ ARW r/w | FFF r/w | MAX r | PCD r | TNEF r
5095
+ ASF r | FITS r | MEF r/w | PCX r | TORRENT r
5096
+ AVI r | FLA r | MIE r/w/c | PDB r | TTC r
5097
+ AVIF r/w | FLAC r | MIFF r | PDF r/w | TTF r
5098
+ AZW r | FLIF r/w | MKA r | PEF r/w | TXT r
5099
+ BMP r | FLV r | MKS r | PFA r | VCF r
5100
+ BPG r | FPF r | MKV r | PFB r | VNT r
5101
+ BTF r | FPX r | MNG r/w | PFM r | VRD r/w/c
5102
+ C2PA r | GIF r/w | MOBI r | PGF r | VSD r
5103
+ CHM r | GLV r/w | MODD r | PGM r/w | WAV r
5104
+ COS r | GPR r/w | MOI r | PLIST r | WDP r/w
5105
+ CR2 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
5106
+ CR3 r/w | HDP r/w | MOV r/w | PMP r | WEBM r
5107
+ CRM r/w | HDR r | MP3 r | PNG r/w | WMA r
5108
+ CRW r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
5109
+ CS1 r/w | HEIF r/w | MPC r | PPT r | WPG r
5110
+ CSV r | HTML r | MPG r | PPTX r | WTV r
5111
+ CUR r | ICC r/w/c | MPO r/w | PS r/w | WV r
5112
+ CZI r | ICO r | MQV r/w | PSB r/w | X3F r/w
5113
+ DCM r | ICS r | MRC r | PSD r/w | XCF r
5114
+ DCP r/w | IDML r | MRW r/w | PSP r | XISF r
5115
+ DCR r | IIQ r/w | MXF r | QTIF r/w | XLS r
5116
+ DFONT r | IND r/w | NEF r/w | R3D r | XLSX r
5117
+ DIVX r | INSP r/w | NKA r | RA r | XMP r/w/c
5118
+ DJVU r | INSV r | NKSC r/w | RAF r/w | ZIP r
5119
+ DLL r | INX r | NRW r/w | RAM r |
5120
+ DNG r/w | ISO r | NUMBERS r | RAR r |
5121
+ DOC r | ITC r | NXD r | RAW r/w |
5122
+ DOCX r | J2C r | O r | RIFF r |
5109
5123
 
5110
5124
  Meta Information
5111
5125
  ----------------------+----------------------+---------------------
@@ -5817,12 +5831,12 @@ escaped. The inverse conversion is applied when writing tags.
5817
5831
  =item B<-f> (B<-forcePrint>)
5818
5832
 
5819
5833
  Force printing of tags even if they don't exist. This option applies to
5820
- tags specified on the command line, or with the B<-p>, B<-if> or
5821
- B<-tagsFromFile> options. When B<-f> is used, the value of any missing tag
5822
- is set to a dash (C<->) by default, but this may be configured via the API
5823
- MissingTagValue option. B<-f> is also used to add a 'flags' attribute to
5824
- the B<-listx> output, or to allow tags to be deleted when writing with the
5825
- B<-csv>=I<CSVFILE> feature.
5834
+ tags specified on the command line, or with the B<-p>, B<-if> (unless the
5835
+ API UndefTags option is set), B<-fileNUM> or B<-tagsFromFile> options. When
5836
+ B<-f> is used, the value of any missing tag is set to a dash (C<->) by
5837
+ default, but this may be configured via the API MissingTagValue option.
5838
+ B<-f> is also used to add a 'flags' attribute to the B<-listx> output, or to
5839
+ allow tags to be deleted when writing with the B<-csv>=I<CSVFILE> feature.
5826
5840
 
5827
5841
  =item B<-g>[I<NUM>][:I<NUM>...] (B<-groupHeadings>)
5828
5842
 
@@ -5987,7 +6001,7 @@ translation, follow these steps (you must have Perl installed for this):
5987
6001
  6. Edit the generated language module lib/Image/ExifTool/Lang/ru.pm, and
5988
6002
  search and replace all 'MISSING' strings in the file with your translations.
5989
6003
 
5990
- 7. Email the module ('ru.pm' in this example) to philharvey66 at gmail.com
6004
+ 7. Email the module ('ru.pm' in this example) to exiftool@gmail.com
5991
6005
 
5992
6006
  8. Thank you!!
5993
6007
 
@@ -5997,7 +6011,7 @@ For list-type tags, this causes only the item with the specified index to be
5997
6011
  extracted. I<INDEX> is 0 for the first item in the list. Negative indices
5998
6012
  may also be used to reference items from the end of the list. Has no effect
5999
6013
  on single-valued tags. Also applies to tag values when copying from a tag,
6000
- and in B<-if> conditions.
6014
+ and in B<-if>, B<-p> and B<-fileNUM> arguments.
6001
6015
 
6002
6016
  =item B<-n> (B<--printConv>)
6003
6017
 
@@ -6062,7 +6076,7 @@ with this command:
6062
6076
 
6063
6077
  produces output like this:
6064
6078
 
6065
- -- Generated by ExifTool 13.32 --
6079
+ -- Generated by ExifTool 13.34 --
6066
6080
  File: a.jpg - 2003:10:31 15:44:19
6067
6081
  (f/5.6, 1/60s, ISO 100)
6068
6082
  File: b.jpg - 2006:05:23 11:57:38
@@ -6610,11 +6624,8 @@ Notes:
6610
6624
 
6611
6625
  1) The B<-n> and B<-b> options also apply to tags used in I<EXPR>.
6612
6626
 
6613
- 2) Some binary data blocks are not extracted unless specified explicitly.
6614
- These tags are not available for use in the B<-if> condition unless they are
6615
- also specified on the command line. The alternative is to use the
6616
- C<$GROUP:all> syntax. (eg. Use C<$exif:all> instead of C<$exif> in I<EXPR>
6617
- to test for the existence of EXIF tags.)
6627
+ 2) The API RequestTags option is automatically set for all tags used in the
6628
+ B<-if> condition.
6618
6629
 
6619
6630
  3) Tags in the string are interpolated in a similar way to B<-p> before the
6620
6631
  expression is evaluated. In this interpolation, C<$/> is converted to a
@@ -6636,8 +6647,11 @@ C<$Copy1:TAG>, C<$Copy2:TAG>, etc).
6636
6647
  command when B<-execute> was used, and may be used like any other tag in the
6637
6648
  condition (ie. "$OK").
6638
6649
 
6639
- 7) The API RequestTags option is automatically set for all tags used in the
6640
- B<-if> condition.
6650
+ 7) The values of undefined tags in the expression are affected by the B<-f>
6651
+ and B<-m> options unless the API UndefTags option is also set.
6652
+
6653
+ 8) The condition fails if a Perl error occurs. This could happen for
6654
+ instance if an undefined value (eg. a missing tag) is used improperly.
6641
6655
 
6642
6656
  =item B<-m> (B<-ignoreMinorErrors>)
6643
6657
 
@@ -6649,8 +6663,9 @@ so ExifTool leaves it up to you to make the final decision. Minor errors
6649
6663
  and warnings are indicated by "[minor]" at the start of the message.
6650
6664
  Warnings which affect processing when ignored are indicated by "[Minor]"
6651
6665
  (with a capital "M"). Note that this causes missing values in
6652
- B<-tagsFromFile>, B<-p> and B<-if> strings to be set to an empty string
6653
- rather than an undefined value.
6666
+ B<-tagsFromFile>, B<-p>, B<-if> and B<-fileNUM> strings to be set to an
6667
+ empty string rather than an undefined value (but this may be avoided for
6668
+ B<-if> using the API UndefTags option).
6654
6669
 
6655
6670
  =item B<-o> I<OUTFILE> or I<FMT> (B<-out>)
6656
6671
 
@@ -7262,11 +7277,11 @@ Set user parameter. I<PARAM> is an arbitrary user parameter name. This is
7262
7277
  an interface to the API UserParam option (see the
7263
7278
  L<Image::ExifTool Options|Image::ExifTool/Options> documentation), and
7264
7279
  provides a method to access user-defined parameters in arguments to the
7265
- B<-if> and B<-p> options as if they were any other tag. Appending a hash
7266
- tag (C<#>) to I<PARAM> (eg. C<-userParam MyTag#=yes>) also causes the
7267
- parameter to be extracted as a normal tag in the UserParam group. Similar
7268
- to the B<-api> option, the parameter value is set to 1 if I<=VAL> is
7269
- omitted, undef if just I<VAL> is omitted with C<=>, or an empty string if
7280
+ B<-if>, B<-p> and B<-fileNUM> options as if they were any other tag.
7281
+ Appending a hash tag (C<#>) to I<PARAM> (eg. C<-userParam MyTag#=yes>) also
7282
+ causes the parameter to be extracted as a normal tag in the UserParam group.
7283
+ Similar to the B<-api> option, the parameter value is set to 1 if I<=VAL>
7284
+ is omitted, undef if just I<VAL> is omitted with C<=>, or an empty string if
7270
7285
  I<VAL> is omitted with C<^=>.
7271
7286
 
7272
7287
  exiftool -p '$test from $filename' -userparam test=Hello FILE
@@ -7276,18 +7291,20 @@ I<VAL> is omitted with C<^=>.
7276
7291
  =head3 Advanced formatting feature
7277
7292
 
7278
7293
  An advanced formatting feature allows modification of the value of any tag
7279
- interpolated within a B<-if> or B<-p> option argument, or a B<-tagsFromFile>
7280
- redirection string. Tag names within these strings are prefixed by a C<$>
7281
- symbol, and an arbitrary Perl expression may be applied to the tag value by
7282
- placing braces around the tag name and inserting the expression after the
7283
- name, separated by a semicolon (ie. C<${TAG;EXPR}>). The expression acts on
7284
- the value of the tag through the default input variable (C<$_>), and has
7285
- access to the full ExifTool API through the current ExifTool object
7286
- (C<$self>) and the tag key (C<$tag>). It may contain any valid Perl code,
7287
- including translation (C<tr///>) and substitution (C<s///>) operations, but
7288
- note that braces within the expression must be balanced. The example below
7289
- prints the camera Make with spaces translated to underlines, and multiple
7290
- consecutive underlines replaced by a single underline:
7294
+ interpolated within a B<-if>, B<-p> or B<-fileNUM> argument, or a
7295
+ B<-tagsFromFile> redirection string. Tag names within these strings are
7296
+ prefixed by a C<$> symbol, and an arbitrary Perl expression may be applied
7297
+ to the tag value by placing braces around the tag name and inserting the
7298
+ expression after the name, separated by a semicolon (ie. C<${TAG;EXPR}>).
7299
+ The expression acts on the value of the tag through the default input
7300
+ variable (C<$_>), and has access to the full ExifTool API through the
7301
+ current ExifTool object (C<$self>) and the tag key (C<$tag>). It may
7302
+ contain any valid Perl code, including translation (C<tr///>) and
7303
+ substitution (C<s///>) operations, but note that braces within the
7304
+ expression must be balanced. If the expression does not modify C<$_> the
7305
+ original tag value is returned. The example below prints the camera Make
7306
+ with spaces translated to underlines, and multiple consecutive underlines
7307
+ replaced by a single underline:
7291
7308
 
7292
7309
  exiftool -p '${make;tr/ /_/;s/__+/_/g}' image.jpg
7293
7310
 
@@ -2338,7 +2338,8 @@ sub WriteTagNames($$)
2338
2338
  my ($hid, $showGrp);
2339
2339
  # widths of the different columns in the POD documentation
2340
2340
  my ($wID,$wTag,$wReq,$wGrp) = (8,36,24,10);
2341
- my ($composite, $derived, $notes, $longTags, $wasLong, $prefix);
2341
+ my ($composite, $derived, $notes, $longTags, $prefix);
2342
+ my $wasLong = 0;
2342
2343
  if ($short eq 'Shortcuts') {
2343
2344
  $derived = '<th>Refers To</th>';
2344
2345
  $composite = 2;
@@ -2396,7 +2397,7 @@ sub WriteTagNames($$)
2396
2397
  $wID -= $longTag - $wTag;
2397
2398
  $wTag = $longTag;
2398
2399
  }
2399
- $wasLong = 1 if $wID <= $self->{LONG_ID}->{$tableName};
2400
+ ++$wasLong if $wID <= $self->{LONG_ID}->{$tableName};
2400
2401
  }
2401
2402
  } elsif ($composite) {
2402
2403
  $wTag += $wID - $wReq;
@@ -2471,6 +2472,7 @@ sub WriteTagNames($$)
2471
2472
  if ($over <= $wTag - length($$tagNames[0])) {
2472
2473
  $wTag2 -= $over;
2473
2474
  $w += $over;
2475
+ --$wasLong;
2474
2476
  } else {
2475
2477
  # put tag name on next line if ID is too long
2476
2478
  $idStr = " $tagIDstr\n " . (' ' x $w);
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.93';
91
+ $VERSION = '4.95';
92
92
 
93
93
  # Note: Removed 'USM' from 'L' lenses since it is redundant - PH
94
94
  # (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -2151,6 +2151,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
2151
2151
  TagTable => 'Image::ExifTool::Canon::RawBurstInfo',
2152
2152
  }
2153
2153
  },
2154
+ # 0x4049 - related to croping (forum13491) - "8 0 0 0" = no crop, "8 1 0 1" = crop enabled
2154
2155
  0x4059 => { #forum16111
2155
2156
  Name => 'LevelInfo',
2156
2157
  SubDirectory => {
@@ -2621,6 +2622,10 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
2621
2622
  # 47 - related to aspect ratio: 100=4:3,70=1:1/16:9,90=3:2,60=4:5 (PH G12)
2622
2623
  # (roughly image area in percent - 4:3=100%,1:1/16:9=75%,3:2=89%,4:5=60%)
2623
2624
  # 48 - 3 for CR2/CR3, 4 or 7 for JPG, -1 for edited JPG (see forum16127)
2625
+ 50 => { #github340
2626
+ Name => 'FocusBracketing',
2627
+ PrintConv => { 0 => 'Disable', 1 => 'Enable' },
2628
+ },
2624
2629
  51 => { #forum16036 (EOS R models)
2625
2630
  Name => 'Clarity',
2626
2631
  PrintConv => {
@@ -8935,7 +8940,7 @@ my %ciMaxFocal = (
8935
8940
  },
8936
8941
  3 => {
8937
8942
  Name => 'HighlightTonePriority',
8938
- PrintConv => \%offOn,
8943
+ PrintConv => { %offOn, 2 => 'Enhanced' }, #github339 (Enhanced)
8939
8944
  },
8940
8945
  4 => {
8941
8946
  Name => 'LongExposureNoiseReduction',
@@ -9327,6 +9332,14 @@ my %filterConv = (
9327
9332
  3 => 'Vehicles',
9328
9333
  },
9329
9334
  },
9335
+ 21 => { #github344 (R6)
9336
+ Name => 'SubjectSwitching',
9337
+ PrintConv => {
9338
+ 0 => 'Initial Priority',
9339
+ 1 => 'On Subject',
9340
+ 2 => 'Switch Subject',
9341
+ },
9342
+ },
9330
9343
  24 => { #forum16068
9331
9344
  Name => 'EyeDetection',
9332
9345
  PrintConv => \%offOn,