exiftool_vendored 13.31.0 → 13.36.0

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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +88 -2
  3. data/bin/MANIFEST +5 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/Makefile.PL +1 -0
  7. data/bin/README +47 -46
  8. data/bin/exiftool +155 -120
  9. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +7 -5
  10. data/bin/lib/Image/ExifTool/Canon.pm +46 -6
  11. data/bin/lib/Image/ExifTool/DJI.pm +54 -3
  12. data/bin/lib/Image/ExifTool/Exif.pm +9 -6
  13. data/bin/lib/Image/ExifTool/FlashPix.pm +4 -159
  14. data/bin/lib/Image/ExifTool/FujiFilm.pm +97 -32
  15. data/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
  16. data/bin/lib/Image/ExifTool/Geotag.pm +5 -3
  17. data/bin/lib/Image/ExifTool/GoPro.pm +14 -2
  18. data/bin/lib/Image/ExifTool/LNK.pm +4 -1
  19. data/bin/lib/Image/ExifTool/Lang/cs.pm +0 -1
  20. data/bin/lib/Image/ExifTool/Lang/de.pm +0 -1
  21. data/bin/lib/Image/ExifTool/Lang/fr.pm +0 -1
  22. data/bin/lib/Image/ExifTool/Lang/it.pm +0 -1
  23. data/bin/lib/Image/ExifTool/Lang/ja.pm +0 -1
  24. data/bin/lib/Image/ExifTool/Lang/nl.pm +0 -1
  25. data/bin/lib/Image/ExifTool/Lang/pl.pm +0 -1
  26. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +0 -1
  27. data/bin/lib/Image/ExifTool/M2TS.pm +2 -4
  28. data/bin/lib/Image/ExifTool/Microsoft.pm +158 -1
  29. data/bin/lib/Image/ExifTool/Minolta.pm +4 -2
  30. data/bin/lib/Image/ExifTool/Nikon.pm +73 -37
  31. data/bin/lib/Image/ExifTool/NikonCustom.pm +40 -10
  32. data/bin/lib/Image/ExifTool/Olympus.pm +258 -34
  33. data/bin/lib/Image/ExifTool/Panasonic.pm +3 -3
  34. data/bin/lib/Image/ExifTool/Pentax.pm +341 -61
  35. data/bin/lib/Image/ExifTool/Protobuf.pm +1 -1
  36. data/bin/lib/Image/ExifTool/QuickTime.pm +11 -4
  37. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -1
  38. data/bin/lib/Image/ExifTool/README +2 -1
  39. data/bin/lib/Image/ExifTool/RIFF.pm +5 -3
  40. data/bin/lib/Image/ExifTool/Sony.pm +46 -17
  41. data/bin/lib/Image/ExifTool/TNEF.pm +487 -0
  42. data/bin/lib/Image/ExifTool/TagLookup.pm +4384 -4265
  43. data/bin/lib/Image/ExifTool/TagNames.pod +291 -27
  44. data/bin/lib/Image/ExifTool/WriteExif.pl +14 -12
  45. data/bin/lib/Image/ExifTool/Writer.pl +21 -16
  46. data/bin/lib/Image/ExifTool/XMP.pm +8 -2
  47. data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
  48. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  49. data/bin/lib/Image/ExifTool.pm +14 -4
  50. data/bin/lib/Image/ExifTool.pod +50 -44
  51. data/bin/perl-Image-ExifTool.spec +46 -45
  52. data/lib/exiftool_vendored/version.rb +1 -1
  53. metadata +3 -2
@@ -695,12 +695,11 @@ TAG: foreach $tagInfo (@matchingTags) {
695
695
  my $src = GetTagTable($$table{SRC_TABLE});
696
696
  $writeProc = $$src{WRITE_PROC} unless $writeProc;
697
697
  }
698
- {
698
+ if ($writeProc) {
699
699
  # make sure module is loaded if the writeProc is a string
700
700
  unless (ref $writeProc) {
701
701
  my $module = $writeProc;
702
- $module =~ s/::\w+$//;
703
- eval "require $module";
702
+ $module =~ s/::\w+$// and eval "require $module";
704
703
  }
705
704
  no strict 'refs';
706
705
  next unless $writeProc and &$writeProc();
@@ -1353,7 +1352,8 @@ sub SetNewValuesFromFile($$;@)
1353
1352
  # get all tags from source file (including MakerNotes block)
1354
1353
  $info = $srcExifTool->ImageInfo($srcFile);
1355
1354
  }
1356
- return $info if $$info{Error} and $$info{Error} eq 'Error opening file';
1355
+ # (allow processing to continue if we have alternate files that may have been read OK)
1356
+ return $info if $$info{Error} and $$info{Error} eq 'Error opening file' and not $$self{ALT_EXIFTOOL};
1357
1357
  delete $$srcExifTool{VALUE}{Error}; # delete so we can check this later
1358
1358
 
1359
1359
  # sort tags in file order with priority tags last
@@ -1907,7 +1907,7 @@ sub RestoreNewValues($)
1907
1907
  #------------------------------------------------------------------------------
1908
1908
  # Set alternate file for extracting information
1909
1909
  # Inputs: 0) ExifTool ref, 1) family 8 group name (of the form "File#" where # is any number)
1910
- # 2) alternate file name, or undef to reset
1910
+ # 2) alternate file name (may contain tag names with leading "$"), or undef to reset
1911
1911
  # Returns: 1 on success, or 0 on invalid group name
1912
1912
  sub SetAlternateFile($$$)
1913
1913
  {
@@ -1917,7 +1917,9 @@ sub SetAlternateFile($$$)
1917
1917
  # keep the same file if already initialized (possibly has metadata extracted)
1918
1918
  if (not defined $file) {
1919
1919
  delete $$self{ALT_EXIFTOOL}{$g8};
1920
- } elsif (not ($$self{ALT_EXIFTOOL}{$g8} and $$self{ALT_EXIFTOOL}{$g8}{ALT_FILE} eq $file)) {
1920
+ } elsif (not ($$self{ALT_EXIFTOOL}{$g8} and $file !~ /\$/ and
1921
+ $$self{ALT_EXIFTOOL}{$g8}{ALT_FILE} eq $file))
1922
+ {
1921
1923
  my $altExifTool = Image::ExifTool->new;
1922
1924
  $$altExifTool{ALT_FILE} = $file;
1923
1925
  $$self{ALT_EXIFTOOL}{$g8} = $altExifTool;
@@ -3201,7 +3203,7 @@ sub InsertTagValues($$;$$$$)
3201
3203
  my ($docNum, $tag);
3202
3204
 
3203
3205
  if ($docGrp) {
3204
- $docNum = $docGrp =~ /(\d+)$/ ? $1 : 0;
3206
+ $docNum = $docGrp =~ /(\d+(-\d+)*)$/ ? $1 : 0;
3205
3207
  } else {
3206
3208
  undef $cache; # no cache if no document groups
3207
3209
  }
@@ -3269,25 +3271,25 @@ sub InsertTagValues($$;$$$$)
3269
3271
  # (similar to code in BuildCompositeTags(), but this is case-insensitive)
3270
3272
  my $cacheTag = $$cache{$lcTag};
3271
3273
  unless ($cacheTag) {
3272
- $cacheTag = $$cache{$lcTag} = [ ];
3274
+ $cacheTag = $$cache{$lcTag} = { };
3273
3275
  # find all matching keys, organize into groups, and store in cache
3274
3276
  my $ex = $$self{TAG_EXTRA};
3275
3277
  my @matches = grep /^$tag(\s|$)/i, @$foundTags;
3276
3278
  @matches = $self->GroupMatches($group, \@matches) if defined $group;
3277
3279
  foreach (@matches) {
3278
3280
  my $doc = $$ex{$_}{G3} || 0;
3279
- if (defined $$cacheTag[$doc]) {
3280
- next unless $$cacheTag[$doc] =~ / \((\d+)\)$/;
3281
+ if (defined $$cacheTag{$doc}) {
3282
+ next unless $$cacheTag{$doc} =~ / \((\d+)\)$/;
3281
3283
  my $cur = $1;
3282
3284
  # keep the most recently extracted tag
3283
3285
  next if / \((\d+)\)$/ and $1 < $cur;
3284
3286
  }
3285
- $$cacheTag[$doc] = $_;
3287
+ $$cacheTag{$doc} = $_;
3286
3288
  }
3287
3289
  }
3288
- my $doc = $lcTag =~ /\b(main|doc(\d+)):/ ? ($2 || 0) : $docNum;
3289
- if ($$cacheTag[$doc]) {
3290
- $tag = $$cacheTag[$doc];
3290
+ my $doc = $lcTag =~ /\b(main|doc(\d+(-\d+)*)):/ ? ($2 || 0) : $docNum;
3291
+ if ($$cacheTag{$doc}) {
3292
+ $tag = $$cacheTag{$doc};
3291
3293
  $val = $self->GetValue($tag, $type);
3292
3294
  }
3293
3295
  } else {
@@ -3403,7 +3405,7 @@ sub InsertTagValues($$;$$$$)
3403
3405
  undef $advFmtSelf;
3404
3406
  $didExpr = 1; # set flag indicating an expression was evaluated
3405
3407
  }
3406
- unless (defined $val) {
3408
+ unless (defined $val or (ref $opt and $$self{OPTIONS}{UndefTags})) {
3407
3409
  $val = $$self{OPTIONS}{MissingTagValue};
3408
3410
  unless (defined $val) {
3409
3411
  my $g3 = ($docGrp and $var !~ /\b(main|doc\d+):/i) ? $docGrp . ':' : '';
@@ -5051,6 +5053,7 @@ TryLib: for ($lib=$strptimeLib; ; $lib='') {
5051
5053
  last;
5052
5054
  }
5053
5055
  if (not $lib) {
5056
+ last unless $$self{OPTIONS}{StrictDate};
5054
5057
  warn $wrn || "Install POSIX::strptime or Time::Piece for inverse date/time conversions\n";
5055
5058
  return undef;
5056
5059
  } elsif ($lib eq 'POSIX::strptime') {
@@ -6921,7 +6924,7 @@ sub CheckBinaryData($$$)
6921
6924
  $format = $1;
6922
6925
  $count = $2;
6923
6926
  # can't evaluate $count now because we don't know $size yet
6924
- undef $count if $count =~ /\$size/;
6927
+ $count = -1 if $count =~ /\$size/; # (-1 = any count allowed)
6925
6928
  }
6926
6929
  return CheckValue($valPtr, $format, $count);
6927
6930
  }
@@ -7247,6 +7250,8 @@ sub WriteBinaryData($$$)
7247
7250
  $self->VerboseValue("- $dirName:$$tagInfo{Name}", $val);
7248
7251
  $self->VerboseValue("+ $dirName:$$tagInfo{Name}", $newVal);
7249
7252
  ++$$self{CHANGED};
7253
+ } else {
7254
+ $self->Warn("Error packing $$tagInfo{Name} value");
7250
7255
  }
7251
7256
  }
7252
7257
  # add necessary fixups for any offsets
@@ -3350,13 +3350,14 @@ sub PrintLensID(@)
3350
3350
  #------------------------------------------------------------------------------
3351
3351
  # Convert XMP date/time to EXIF format
3352
3352
  # Inputs: 0) XMP date/time string, 1) set if we aren't sure this is a date
3353
- # Returns: EXIF date/time
3353
+ # Returns: EXIF date/time, and flag in list context if this was a standard date/time value
3354
3354
  sub ConvertXMPDate($;$)
3355
3355
  {
3356
3356
  my ($val, $unsure) = @_;
3357
3357
  if ($val =~ /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}:\d{2})(:\d{2})?\s*(\S*)$/) {
3358
3358
  my $s = $5 || ''; # seconds may be missing
3359
3359
  $val = "$1:$2:$3 $4$s$6"; # convert back to EXIF time format
3360
+ return($val, 1) if wantarray;
3360
3361
  } elsif (not $unsure and $val =~ /^(\d{4})(-\d{2}){0,2}/) {
3361
3362
  $val =~ tr/-/:/;
3362
3363
  }
@@ -3647,7 +3648,12 @@ NoLoop:
3647
3648
  if (($new or $fmt eq 'rational') and ConvertRational($val)) {
3648
3649
  $rational = $rawVal;
3649
3650
  } else {
3650
- $val = ConvertXMPDate($val, $new) if $new or $fmt eq 'date';
3651
+ my $stdDate;
3652
+ ($val, $stdDate) = ConvertXMPDate($val, $new) if $new or $fmt eq 'date';
3653
+ if ($stdDate and $added) {
3654
+ $$tagInfo{Groups}{2} = 'Time';
3655
+ $$tagInfo{PrintConv} = '$self->ConvertDateTime($val)';
3656
+ }
3651
3657
  }
3652
3658
  if ($$et{XmpValidate} and $fmt and $fmt eq 'boolean' and $val!~/^True|False$/) {
3653
3659
  if ($val =~ /^true|false$/) {
@@ -1934,7 +1934,7 @@ my %sACDSeeRegionStruct = (
1934
1934
  BurstPrimary => { },
1935
1935
  PortraitNote => { },
1936
1936
  PortraitRequest => {
1937
- Notes => 'High Definition Render Pipeline (HDRP) data', #PH (guess)
1937
+ Notes => 'HDRPlus (HDRP) data', #NealKrawetz
1938
1938
  ValueConv => 'Image::ExifTool::XMP::DecodeBase64($val)',
1939
1939
  ValueConvInv => 'Image::ExifTool::XMP::EncodeBase64($val)',
1940
1940
  },
@@ -86,7 +86,7 @@ sub InflateStruct($$;$)
86
86
  my %struct;
87
87
  for (;;) {
88
88
  last unless $sfmt ? $$obj =~ s/^\s*"(.*?)"\s*://s :
89
- $$obj =~ s/^\s*([-\w:]+#?)\s*=//s;
89
+ $$obj =~ s/^\s*([-\w:.]+#?)\s*=//s;
90
90
  my $tag = $1;
91
91
  my ($v, $w) = InflateStruct($et, $obj, '}');
92
92
  $warn = $w if $w and not $warn;
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
29
29
  %jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
30
30
  %static_vars $advFmtSelf $configFile @configFiles $noConfig);
31
31
 
32
- $VERSION = '13.31';
32
+ $VERSION = '13.36';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -152,8 +152,8 @@ sub ReadValue($$$;$$$);
152
152
  APE::OldHeader Audible MPC MPEG::Audio MPEG::Video MPEG::Xing M2TS QuickTime
153
153
  QuickTime::ImageFile QuickTime::Stream QuickTime::Tags360Fly Matroska
154
154
  Matroska::StdTag MOI MXF DV Flash Flash::FLV Real::Media Real::Audio
155
- Real::Metafile Red RIFF AIFF ASF WTV DICOM FITS XISF MIE JSON HTML XMP::SVG
156
- Palm Palm::MOBI Palm::EXTH Torrent EXE EXE::PEVersion EXE::PEString
155
+ Real::Metafile Red RIFF AIFF ASF TNEF WTV DICOM FITS XISF MIE JSON HTML
156
+ XMP::SVG Palm Palm::MOBI Palm::EXTH Torrent EXE EXE::PEVersion EXE::PEString
157
157
  EXE::DebugRSDS EXE::DebugNB10 EXE::Misc EXE::MachO EXE::PEF EXE::ELF EXE::AR
158
158
  EXE::CHM LNK PCAP Font VCard Text VCard::VCalendar VCard::VNote RSRC Rawzor
159
159
  ZIP ZIP::GZIP ZIP::RAR ZIP::RAR5 RTF OOXML iWork ISO FLIR::AFF FLIR::FPF
@@ -200,7 +200,7 @@ $defaultLang = 'en'; # default language
200
200
  RAR 7Z BZ2 CZI TAR EXE EXR HDR CHM LNK WMF AVC DEX DPX RAW Font
201
201
  JUMBF RSRC M2TS MacOS PHP PCX DCX DWF DWG DXF WTV Torrent VCard
202
202
  LRI R3D AA PDB PFM2 MRC LIF JXL MOI ISO ALIAS PCAP JSON MP3
203
- DICOM PCD NKA ICO TXT AAC);
203
+ TNEF DICOM PCD NKA ICO TXT AAC);
204
204
 
205
205
  # file types that we can write (edit)
206
206
  my @writeTypes = qw(JPEG TIFF GIF CRW MRW ORF RAF RAW PNG MIE PSD XMP PPM EPS
@@ -536,6 +536,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
536
536
  THMX => [['ZIP','FPX'], 'Office Open XML Theme'],
537
537
  TIF => 'TIFF',
538
538
  TIFF => ['TIFF', 'Tagged Image File Format'],
539
+ TNEF => ['TNEF', 'Transport Neural Encapsulation Format'], # (actual extension is .DAT)
539
540
  TORRENT => ['Torrent', 'BitTorrent description file'],
540
541
  TS => 'M2TS',
541
542
  TTC => ['Font', 'True Type Font Collection'],
@@ -802,6 +803,7 @@ my %fileDescription = (
802
803
  TAR => 'application/x-tar',
803
804
  THMX => 'application/vnd.ms-officetheme',
804
805
  TIFF => 'image/tiff',
806
+ TNEF => 'application/vnd.ms-tnef',
805
807
  Torrent => 'application/x-bittorrent',
806
808
  TTC => 'application/font-ttf',
807
809
  TTF => 'application/font-ttf',
@@ -1012,6 +1014,7 @@ $testLen = 1024; # number of bytes to read when testing for magic number
1012
1014
  RWZ => 'rawzor',
1013
1015
  SWF => '[FC]WS[^\0]',
1014
1016
  TAR => '.{257}ustar( )?\0', # (this doesn't catch old-style tar files)
1017
+ TNEF => '\x78\x9f\x3e\x22..\x01\x06\x90\x08\0',
1015
1018
  TXT => '(\xff\xfe|(\0\0)?\xfe\xff|(\xef\xbb\xbf)?[\x07-\x0d\x20-\x7e\x80-\xfe]*$)',
1016
1019
  TIFF => '(II|MM)', # don't test magic number (some raw formats are different)
1017
1020
  VCard=> '(?i)BEGIN:(VCARD|VCALENDAR|VNOTE)\r\n',
@@ -1178,6 +1181,7 @@ my @availableOptions = (
1178
1181
  [ 'SystemTags', undef, 'extract additional File System tags' ],
1179
1182
  [ 'TextOut', \*STDOUT, 'file for Verbose/HtmlDump output' ],
1180
1183
  [ 'TimeZone', undef, 'local time zone' ],
1184
+ [ 'UndefTags', undef, 'leave undef tags in -if conditions when -m or -f are used' ],
1181
1185
  [ 'Unknown', 0, 'flag to get values of unknown tags (0-2)' ],
1182
1186
  [ 'UserParam', { }, 'user parameters for additional user-defined tag values' ],
1183
1187
  [ 'Validate', undef, 'perform additional validation' ],
@@ -2821,6 +2825,8 @@ sub ExtractInfo($;@)
2821
2825
  $isDir = 1;
2822
2826
  } else {
2823
2827
  $self->Error('Error opening file');
2828
+ # continue to process alt files if necessary
2829
+ $self->DoneExtract() if $$self{ALT_EXIFTOOL};
2824
2830
  }
2825
2831
  } else {
2826
2832
  $self->Error('No file specified');
@@ -4292,6 +4298,7 @@ sub Init($)
4292
4298
  $$self{LOW_PRIORITY_DIR} = { PreviewIFD => 1 }; # names of priority 0 directories
4293
4299
  $$self{TIFF_TYPE} = ''; # type of TIFF data (APP1, TIFF, NEF, etc...)
4294
4300
  $$self{FMT_EXPR} = undef; # current advanced formatting expression
4301
+ $$self{HAS_DOC} = { }; # lookup for all document numbers in this file
4295
4302
  $$self{Make} = ''; # camera make
4296
4303
  $$self{Model} = ''; # camera model
4297
4304
  $$self{CameraType} = ''; # Olympus camera type
@@ -6582,6 +6589,8 @@ sub ConvertDateTime($$)
6582
6589
  }
6583
6590
  $a[5] -= 1900; # strftime year starts from 1900
6584
6591
  $date = POSIX::strftime($fmt, @a); # generate the formatted date/time
6592
+ # apparently strftime can set the UTF-8 flag (argh!), so reset this if necessary
6593
+ $self->Sanitize(\$date) if $fmt =~ /[\x80-\xff]/;
6585
6594
  } elsif ($$self{OPTIONS}{StrictDate}) {
6586
6595
  undef $date;
6587
6596
  }
@@ -9480,6 +9489,7 @@ sub FoundTag($$$;@)
9480
9489
  $$self{TAG_EXTRA}{$tag}{G1} = $grps[1] if $grps[1];
9481
9490
  if ($$self{DOC_NUM}) {
9482
9491
  $$self{TAG_EXTRA}{$tag}{G3} = $$self{DOC_NUM};
9492
+ $$self{HAS_DOC}{$$self{DOC_NUM}} = 1;
9483
9493
  if ($$self{DOC_NUM} =~ /^(\d+)/) {
9484
9494
  # keep track of maximum 1st-level sub-document number
9485
9495
  $$self{DOC_COUNT} = $1 unless $$self{DOC_COUNT} >= $1;
@@ -65,50 +65,51 @@ supported by ExifTool (r = read, w = write, c = create):
65
65
 
66
66
  File Types
67
67
  ------------+-------------+-------------+-------------+------------
68
- 360 r/w | DOCX r | ITC r | NUMBERS r | RAM r
69
- 3FR r | DPX r | J2C r | NXD r | RAR r
70
- 3G2 r/w | DR4 r/w/c | JNG r/w | O r | RAW r/w
71
- 3GP r/w | DSS r | JP2 r/w | ODP r | RIFF r
72
- 7Z r | DV r | JPEG r/w | ODS r | RSRC r
73
- A r | DVB r/w | JSON r | ODT r | RTF r
74
- AA r | DVR-MS r | JXL r/w | OFR r | RW2 r/w
75
- AAC r | DYLIB r | K25 r | OGG r | RWL r/w
76
- AAE r | EIP r | KDC r | OGV r | RWZ r
77
- AAX r/w | EPS r/w | KEY r | ONP r | RM r
78
- ACR r | EPUB r | LA r | OPUS r | SEQ r
79
- AFM r | ERF r/w | LFP r | ORF r/w | SKETCH r
80
- AI r/w | EXE r | LIF r | ORI r/w | SO r
81
- AIFF r | EXIF r/w/c | LNK r | OTF r | SR2 r/w
82
- APE r | EXR r | LRV r/w | PAC r | SRF r
83
- ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SRW r/w
84
- ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | SVG r
85
- ASF r | FFF r/w | MACOS r | PCAP r | SWF r
86
- AVI r | FITS r | MAX r | PCAPNG r | THM r/w
87
- AVIF r/w | FLA r | MEF r/w | PCD r | TIFF r/w
88
- AZW r | FLAC r | MIE r/w/c | PCX r | TORRENT r
89
- BMP r | FLIF r/w | MIFF r | PDB r | TTC r
90
- BPG r | FLV r | MKA r | PDF r/w | TTF r
91
- BTF r | FPF r | MKS r | PEF r/w | TXT r
92
- C2PA r | FPX r | MKV r | PFA r | VCF r
93
- CHM r | GIF r/w | MNG r/w | PFB r | VNT r
94
- COS r | GLV r/w | MOBI r | PFM r | VRD r/w/c
95
- CR2 r/w | GPR r/w | MODD r | PGF r | VSD r
96
- CR3 r/w | GZ r | MOI r | PGM r/w | WAV r
97
- CRM r/w | HDP r/w | MOS r/w | PLIST r | WDP r/w
98
- CRW r/w | HDR r | MOV r/w | PICT r | WEBP r/w
99
- CS1 r/w | HEIC r/w | MP3 r | PMP r | WEBM r
100
- CSV r | HEIF r/w | MP4 r/w | PNG r/w | WMA r
101
- CUR r | HTML r | MPC r | PPM r/w | WMV r
102
- CZI r | ICC r/w/c | MPG r | PPT r | WPG r
103
- DCM r | ICO r | MPO r/w | PPTX r | WTV r
104
- DCP r/w | ICS r | MQV r/w | PS r/w | WV r
105
- DCR r | IDML r | MRC r | PSB r/w | X3F r/w
106
- DFONT r | IIQ r/w | MRW r/w | PSD r/w | XCF r
107
- DIVX r | IND r/w | MXF r | PSP r | XISF r
108
- DJVU r | INSP r/w | NEF r/w | QTIF r/w | XLS r
109
- DLL r | INSV r | NKA r | R3D r | XLSX r
110
- DNG r/w | INX r | NKSC r/w | RA r | XMP r/w/c
111
- DOC r | ISO r | NRW r/w | RAF r/w | ZIP r
68
+ 360 r/w | DPX r | JNG r/w | ODP r | RSRC r
69
+ 3FR r | DR4 r/w/c | JP2 r/w | ODS r | RTF r
70
+ 3G2 r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
71
+ 3GP r/w | DV r | JSON r | OFR r | RWL r/w
72
+ 7Z r | DVB r/w | JXL r/w | OGG r | RWZ r
73
+ A r | DVR-MS r | K25 r | OGV r | RM r
74
+ AA r | DYLIB r | KDC r | ONP r | SEQ r
75
+ AAC r | EIP r | KEY r | OPUS r | SKETCH r
76
+ AAE r | EPS r/w | LA r | ORF r/w | SO r
77
+ AAX r/w | EPUB r | LFP r | ORI r/w | SR2 r/w
78
+ ACR r | ERF r/w | LIF r | OTF r | SRF r
79
+ AFM r | EXE r | LNK r | PAC r | SRW r/w
80
+ AI r/w | EXIF r/w/c | LRV r/w | PAGES r | SVG r
81
+ AIFF r | EXR r | M2TS r | PBM r/w | SWF r
82
+ APE r | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
83
+ ARQ r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
84
+ ARW r/w | FFF r/w | MAX r | PCD r | TNEF r
85
+ ASF r | FITS r | MEF r/w | PCX r | TORRENT r
86
+ AVI r | FLA r | MIE r/w/c | PDB r | TTC r
87
+ AVIF r/w | FLAC r | MIFF r | PDF r/w | TTF r
88
+ AZW r | FLIF r/w | MKA r | PEF r/w | TXT r
89
+ BMP r | FLV r | MKS r | PFA r | VCF r
90
+ BPG r | FPF r | MKV r | PFB r | VNT r
91
+ BTF r | FPX r | MNG r/w | PFM r | VRD r/w/c
92
+ C2PA r | GIF r/w | MOBI r | PGF r | VSD r
93
+ CHM r | GLV r/w | MODD r | PGM r/w | WAV r
94
+ COS r | GPR r/w | MOI r | PLIST r | WDP r/w
95
+ CR2 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
96
+ CR3 r/w | HDP r/w | MOV r/w | PMP r | WEBM r
97
+ CRM r/w | HDR r | MP3 r | PNG r/w | WMA r
98
+ CRW r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
99
+ CS1 r/w | HEIF r/w | MPC r | PPT r | WPG r
100
+ CSV r | HTML r | MPG r | PPTX r | WTV r
101
+ CUR r | ICC r/w/c | MPO r/w | PS r/w | WV r
102
+ CZI r | ICO r | MQV r/w | PSB r/w | X3F r/w
103
+ DCM r | ICS r | MRC r | PSD r/w | XCF r
104
+ DCP r/w | IDML r | MRW r/w | PSP r | XISF r
105
+ DCR r | IIQ r/w | MXF r | QTIF r/w | XLS r
106
+ DFONT r | IND r/w | NEF r/w | R3D r | XLSX r
107
+ DIVX r | INSP r/w | NKA r | RA r | XMP r/w/c
108
+ DJVU r | INSV r | NKSC r/w | RAF r/w | ZIP r
109
+ DLL r | INX r | NRW r/w | RAM r |
110
+ DNG r/w | ISO r | NUMBERS r | RAR r |
111
+ DOC r | ITC r | NXD r | RAW r/w |
112
+ DOCX r | J2C r | O r | RIFF r |
112
113
 
113
114
  Meta Information
114
115
  ----------------------+----------------------+---------------------
@@ -1198,6 +1199,11 @@ For Unix-based systems, the value may also be a time zone ID like
1198
1199
  "America/New_York". Requires Time::Piece on Windows, or POSIX::tzset on
1199
1200
  other systems. Default is undef.
1200
1201
 
1202
+ =item UndefTags
1203
+
1204
+ Flag to maintain undefined tag values in the application B<-if> expression
1205
+ when the B<-f> or B<-m> option is also used. Default is undef.
1206
+
1201
1207
  =item Unknown
1202
1208
 
1203
1209
  Flag to get the values of unknown tags. If set to 1, unknown tags are
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 13.31
3
+ Version: 13.36
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -22,50 +22,51 @@ supported by ExifTool (r = read, w = write, c = create):
22
22
 
23
23
  File Types
24
24
  ------------+-------------+-------------+-------------+------------
25
- 360 r/w | DOCX r | ITC r | NUMBERS r | RAM r
26
- 3FR r | DPX r | J2C r | NXD r | RAR r
27
- 3G2 r/w | DR4 r/w/c | JNG r/w | O r | RAW r/w
28
- 3GP r/w | DSS r | JP2 r/w | ODP r | RIFF r
29
- 7Z r | DV r | JPEG r/w | ODS r | RSRC r
30
- A r | DVB r/w | JSON r | ODT r | RTF r
31
- AA r | DVR-MS r | JXL r/w | OFR r | RW2 r/w
32
- AAC r | DYLIB r | K25 r | OGG r | RWL r/w
33
- AAE r | EIP r | KDC r | OGV r | RWZ r
34
- AAX r/w | EPS r/w | KEY r | ONP r | RM r
35
- ACR r | EPUB r | LA r | OPUS r | SEQ r
36
- AFM r | ERF r/w | LFP r | ORF r/w | SKETCH r
37
- AI r/w | EXE r | LIF r | ORI r/w | SO r
38
- AIFF r | EXIF r/w/c | LNK r | OTF r | SR2 r/w
39
- APE r | EXR r | LRV r/w | PAC r | SRF r
40
- ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SRW r/w
41
- ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | SVG r
42
- ASF r | FFF r/w | MACOS r | PCAP r | SWF r
43
- AVI r | FITS r | MAX r | PCAPNG r | THM r/w
44
- AVIF r/w | FLA r | MEF r/w | PCD r | TIFF r/w
45
- AZW r | FLAC r | MIE r/w/c | PCX r | TORRENT r
46
- BMP r | FLIF r/w | MIFF r | PDB r | TTC r
47
- BPG r | FLV r | MKA r | PDF r/w | TTF r
48
- BTF r | FPF r | MKS r | PEF r/w | TXT r
49
- C2PA r | FPX r | MKV r | PFA r | VCF r
50
- CHM r | GIF r/w | MNG r/w | PFB r | VNT r
51
- COS r | GLV r/w | MOBI r | PFM r | VRD r/w/c
52
- CR2 r/w | GPR r/w | MODD r | PGF r | VSD r
53
- CR3 r/w | GZ r | MOI r | PGM r/w | WAV r
54
- CRM r/w | HDP r/w | MOS r/w | PLIST r | WDP r/w
55
- CRW r/w | HDR r | MOV r/w | PICT r | WEBP r/w
56
- CS1 r/w | HEIC r/w | MP3 r | PMP r | WEBM r
57
- CSV r | HEIF r/w | MP4 r/w | PNG r/w | WMA r
58
- CUR r | HTML r | MPC r | PPM r/w | WMV r
59
- CZI r | ICC r/w/c | MPG r | PPT r | WPG r
60
- DCM r | ICO r | MPO r/w | PPTX r | WTV r
61
- DCP r/w | ICS r | MQV r/w | PS r/w | WV r
62
- DCR r | IDML r | MRC r | PSB r/w | X3F r/w
63
- DFONT r | IIQ r/w | MRW r/w | PSD r/w | XCF r
64
- DIVX r | IND r/w | MXF r | PSP r | XISF r
65
- DJVU r | INSP r/w | NEF r/w | QTIF r/w | XLS r
66
- DLL r | INSV r | NKA r | R3D r | XLSX r
67
- DNG r/w | INX r | NKSC r/w | RA r | XMP r/w/c
68
- DOC r | ISO r | NRW r/w | RAF r/w | ZIP r
25
+ 360 r/w | DPX r | JNG r/w | ODP r | RSRC r
26
+ 3FR r | DR4 r/w/c | JP2 r/w | ODS r | RTF r
27
+ 3G2 r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
28
+ 3GP r/w | DV r | JSON r | OFR r | RWL r/w
29
+ 7Z r | DVB r/w | JXL r/w | OGG r | RWZ r
30
+ A r | DVR-MS r | K25 r | OGV r | RM r
31
+ AA r | DYLIB r | KDC r | ONP r | SEQ r
32
+ AAC r | EIP r | KEY r | OPUS r | SKETCH r
33
+ AAE r | EPS r/w | LA r | ORF r/w | SO r
34
+ AAX r/w | EPUB r | LFP r | ORI r/w | SR2 r/w
35
+ ACR r | ERF r/w | LIF r | OTF r | SRF r
36
+ AFM r | EXE r | LNK r | PAC r | SRW r/w
37
+ AI r/w | EXIF r/w/c | LRV r/w | PAGES r | SVG r
38
+ AIFF r | EXR r | M2TS r | PBM r/w | SWF r
39
+ APE r | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
40
+ ARQ r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
41
+ ARW r/w | FFF r/w | MAX r | PCD r | TNEF r
42
+ ASF r | FITS r | MEF r/w | PCX r | TORRENT r
43
+ AVI r | FLA r | MIE r/w/c | PDB r | TTC r
44
+ AVIF r/w | FLAC r | MIFF r | PDF r/w | TTF r
45
+ AZW r | FLIF r/w | MKA r | PEF r/w | TXT r
46
+ BMP r | FLV r | MKS r | PFA r | VCF r
47
+ BPG r | FPF r | MKV r | PFB r | VNT r
48
+ BTF r | FPX r | MNG r/w | PFM r | VRD r/w/c
49
+ C2PA r | GIF r/w | MOBI r | PGF r | VSD r
50
+ CHM r | GLV r/w | MODD r | PGM r/w | WAV r
51
+ COS r | GPR r/w | MOI r | PLIST r | WDP r/w
52
+ CR2 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
53
+ CR3 r/w | HDP r/w | MOV r/w | PMP r | WEBM r
54
+ CRM r/w | HDR r | MP3 r | PNG r/w | WMA r
55
+ CRW r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
56
+ CS1 r/w | HEIF r/w | MPC r | PPT r | WPG r
57
+ CSV r | HTML r | MPG r | PPTX r | WTV r
58
+ CUR r | ICC r/w/c | MPO r/w | PS r/w | WV r
59
+ CZI r | ICO r | MQV r/w | PSB r/w | X3F r/w
60
+ DCM r | ICS r | MRC r | PSD r/w | XCF r
61
+ DCP r/w | IDML r | MRW r/w | PSP r | XISF r
62
+ DCR r | IIQ r/w | MXF r | QTIF r/w | XLS r
63
+ DFONT r | IND r/w | NEF r/w | R3D r | XLSX r
64
+ DIVX r | INSP r/w | NKA r | RA r | XMP r/w/c
65
+ DJVU r | INSV r | NKSC r/w | RAF r/w | ZIP r
66
+ DLL r | INX r | NRW r/w | RAM r |
67
+ DNG r/w | ISO r | NUMBERS r | RAR r |
68
+ DOC r | ITC r | NXD r | RAW r/w |
69
+ DOCX r | J2C r | O r | RIFF r |
69
70
 
70
71
  Meta Information
71
72
  ----------------------+----------------------+---------------------
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ExiftoolVendored
4
- VERSION = Gem::Version.new('13.31.0')
4
+ VERSION = Gem::Version.new('13.36.0')
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exiftool_vendored
3
3
  version: !ruby/object:Gem::Version
4
- version: 13.31.0
4
+ version: 13.36.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew McEachen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-06-19 00:00:00.000000000 Z
12
+ date: 2025-09-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool
@@ -284,6 +284,7 @@ files:
284
284
  - bin/lib/Image/ExifTool/Sony.pm
285
285
  - bin/lib/Image/ExifTool/SonyIDC.pm
286
286
  - bin/lib/Image/ExifTool/Stim.pm
287
+ - bin/lib/Image/ExifTool/TNEF.pm
287
288
  - bin/lib/Image/ExifTool/TagInfoXML.pm
288
289
  - bin/lib/Image/ExifTool/TagLookup.pm
289
290
  - bin/lib/Image/ExifTool/TagNames.pod