exiftool_vendored 12.62.0 → 12.64.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +50 -1
  3. data/bin/MANIFEST +4 -0
  4. data/bin/META.json +4 -1
  5. data/bin/META.yml +4 -1
  6. data/bin/Makefile.PL +7 -1
  7. data/bin/README +50 -46
  8. data/bin/config_files/guano.config +161 -0
  9. data/bin/exiftool +88 -62
  10. data/bin/lib/Image/ExifTool/7Z.pm +793 -0
  11. data/bin/lib/Image/ExifTool/Apple.pm +6 -3
  12. data/bin/lib/Image/ExifTool/Canon.pm +1 -0
  13. data/bin/lib/Image/ExifTool/CanonRaw.pm +4 -4
  14. data/bin/lib/Image/ExifTool/CanonVRD.pm +4 -1
  15. data/bin/lib/Image/ExifTool/Exif.pm +31 -14
  16. data/bin/lib/Image/ExifTool/FujiFilm.pm +3 -3
  17. data/bin/lib/Image/ExifTool/GPS.pm +5 -2
  18. data/bin/lib/Image/ExifTool/Geotag.pm +4 -1
  19. data/bin/lib/Image/ExifTool/Jpeg2000.pm +226 -28
  20. data/bin/lib/Image/ExifTool/Lang/fr.pm +1467 -202
  21. data/bin/lib/Image/ExifTool/MPF.pm +2 -1
  22. data/bin/lib/Image/ExifTool/Matroska.pm +16 -1
  23. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
  24. data/bin/lib/Image/ExifTool/Nikon.pm +419 -5
  25. data/bin/lib/Image/ExifTool/NikonCustom.pm +13 -3
  26. data/bin/lib/Image/ExifTool/PDF.pm +9 -1
  27. data/bin/lib/Image/ExifTool/PLIST.pm +8 -1
  28. data/bin/lib/Image/ExifTool/PNG.pm +6 -6
  29. data/bin/lib/Image/ExifTool/PhaseOne.pm +5 -5
  30. data/bin/lib/Image/ExifTool/QuickTime.pm +74 -21
  31. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +20 -19
  32. data/bin/lib/Image/ExifTool/README +2 -2
  33. data/bin/lib/Image/ExifTool/RIFF.pm +11 -9
  34. data/bin/lib/Image/ExifTool/Shortcuts.pm +2 -1
  35. data/bin/lib/Image/ExifTool/SigmaRaw.pm +4 -4
  36. data/bin/lib/Image/ExifTool/Sony.pm +103 -8
  37. data/bin/lib/Image/ExifTool/TagLookup.pm +4738 -4630
  38. data/bin/lib/Image/ExifTool/TagNames.pod +249 -5
  39. data/bin/lib/Image/ExifTool/Validate.pm +17 -1
  40. data/bin/lib/Image/ExifTool/WriteExif.pl +9 -7
  41. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +21 -9
  42. data/bin/lib/Image/ExifTool/WriteXMP.pl +2 -2
  43. data/bin/lib/Image/ExifTool/Writer.pl +28 -10
  44. data/bin/lib/Image/ExifTool/XMP.pm +14 -2
  45. data/bin/lib/Image/ExifTool/XMP2.pl +32 -0
  46. data/bin/lib/Image/ExifTool/XMPStruct.pl +96 -28
  47. data/bin/lib/Image/ExifTool/ZIP.pm +5 -5
  48. data/bin/lib/Image/ExifTool.pm +67 -39
  49. data/bin/lib/Image/ExifTool.pod +83 -52
  50. data/bin/perl-Image-ExifTool.spec +44 -44
  51. data/lib/exiftool_vendored/version.rb +1 -1
  52. metadata +4 -2
data/bin/exiftool CHANGED
@@ -11,12 +11,13 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '12.62';
14
+ my $version = '12.64';
15
15
 
16
16
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
17
+ my $exePath;
17
18
  BEGIN {
18
19
  # (undocumented -xpath option added in 11.91, must come before other options)
19
- my $exePath = @ARGV && lc($ARGV[0]) eq '-xpath' && shift() ? $^X : $0;
20
+ $exePath = @ARGV && lc($ARGV[0]) eq '-xpath' && shift() ? $^X : $0;
20
21
  # get exe directory
21
22
  my $exeDir = ($exePath =~ /(.*)[\\\/]/) ? $1 : '.';
22
23
  my $incDir = ($0 =~ /(.*)[\\\/]/) ? "$1/lib" : './lib';
@@ -297,8 +298,11 @@ my @recommends = qw(
297
298
  POSIX::strptime
298
299
  Time::Local
299
300
  Unicode::LineBreak
301
+ Compress::Raw::Lzma
300
302
  IO::Compress::RawDeflate
301
303
  IO::Uncompress::RawInflate
304
+ IO::Compress::Brotli
305
+ IO::Uncompress::Brotli
302
306
  Win32::API
303
307
  Win32::FindFile
304
308
  Win32API::File
@@ -722,6 +726,13 @@ for (;;) {
722
726
  print "ExifTool version $version$str$Image::ExifTool::RELEASE\n";
723
727
  printf "Perl version %s%s\n", $], (defined ${^UNICODE} ? " (-C${^UNICODE})" : '');
724
728
  print "Platform: $^O\n";
729
+ if ($verbose > 8) {
730
+ print "Current Dir: " . Cwd::getcwd() . "\n" if (eval { require Cwd });
731
+ print "Script Name: $0\n";
732
+ print "Exe Name: $^X\n";
733
+ print "Exe Dir: $Image::ExifTool::exeDir\n";
734
+ print "Exe Path: $exePath\n";
735
+ }
725
736
  print "Optional libraries:\n";
726
737
  foreach (@recommends) {
727
738
  next if /^Win32/ and $^O ne 'MSWin32';
@@ -1465,6 +1476,10 @@ if ($csv and $csv eq 'CSV' and not $isWriting) {
1465
1476
  $binaryOutput = 0;
1466
1477
  $setCharset = 'default' unless defined $setCharset;
1467
1478
  }
1479
+ if (%printFmt) {
1480
+ Warn "The -csv option has no effect when -p is used\n";
1481
+ undef $csv;
1482
+ }
1468
1483
  require Image::ExifTool::XMP if $setCharset;
1469
1484
  }
1470
1485
 
@@ -2363,7 +2378,7 @@ TAG: foreach $tag (@foundTags) {
2363
2378
  next unless defined $val;
2364
2379
  if ($structOpt and ref $val) {
2365
2380
  # serialize structure if necessary
2366
- $val = Image::ExifTool::XMP::SerializeStruct($val) unless $xml or $json;
2381
+ $val = Image::ExifTool::XMP::SerializeStruct($et, $val) unless $xml or $json;
2367
2382
  } elsif (ref $val eq 'ARRAY') {
2368
2383
  if (defined $listItem) {
2369
2384
  # take only the specified item
@@ -2512,7 +2527,7 @@ TAG: foreach $tag (@foundTags) {
2512
2527
  my $tok = "$group:$tagName";
2513
2528
  if ($outFormat > 0) {
2514
2529
  if ($structOpt and ref $val) {
2515
- $val = Image::ExifTool::XMP::SerializeStruct($val);
2530
+ $val = Image::ExifTool::XMP::SerializeStruct($et, $val);
2516
2531
  }
2517
2532
  if ($escapeHTML) {
2518
2533
  $val =~ tr/\0-\x08\x0b\x0c\x0e-\x1f/./;
@@ -4070,6 +4085,8 @@ sub SuggestedExtension($$$)
4070
4085
  $ext = 'dr4';
4071
4086
  } elsif ($$valPt =~ /^(.{10}|.{522})(\x11\x01|\x00\x11)/s) {
4072
4087
  $ext = 'pict';
4088
+ } elsif ($$valPt =~ /^\xff\x0a|\0\0\0\x0cJXL \x0d\x0a......ftypjxl/s) {
4089
+ $ext = 'jxl';
4073
4090
  } else {
4074
4091
  $ext = 'dat';
4075
4092
  }
@@ -4605,49 +4622,49 @@ supported by ExifTool (r = read, w = write, c = create):
4605
4622
 
4606
4623
  File Types
4607
4624
  ------------+-------------+-------------+-------------+------------
4608
- 360 r/w | DR4 r/w/c | JNG r/w | ODP r | RSRC r
4609
- 3FR r | DSS r | JP2 r/w | ODS r | RTF r
4610
- 3G2 r/w | DV r | JPEG r/w | ODT r | RW2 r/w
4611
- 3GP r/w | DVB r/w | JSON r | OFR r | RWL r/w
4612
- A r | DVR-MS r | JXL r | OGG r | RWZ r
4613
- AA r | DYLIB r | K25 r | OGV r | RM r
4614
- AAE r | EIP r | KDC r | ONP r | SEQ r
4615
- AAX r/w | EPS r/w | KEY r | OPUS r | SKETCH r
4616
- ACR r | EPUB r | LA r | ORF r/w | SO r
4617
- AFM r | ERF r/w | LFP r | ORI r/w | SR2 r/w
4618
- AI r/w | EXE r | LIF r | OTF r | SRF r
4619
- AIFF r | EXIF r/w/c | LNK r | PAC r | SRW r/w
4620
- APE r | EXR r | LRV r/w | PAGES r | SVG r
4621
- ARQ r/w | EXV r/w/c | M2TS r | PBM r/w | SWF r
4622
- ARW r/w | F4A/V r/w | M4A/V r/w | PCD r | THM r/w
4623
- ASF r | FFF r/w | MACOS r | PCX r | TIFF r/w
4624
- AVI r | FITS r | MAX r | PDB r | TORRENT r
4625
- AVIF r/w | FLA r | MEF r/w | PDF r/w | TTC r
4626
- AZW r | FLAC r | MIE r/w/c | PEF r/w | TTF r
4627
- BMP r | FLIF r/w | MIFF r | PFA r | TXT r
4628
- BPG r | FLV r | MKA r | PFB r | VCF r
4629
- BTF r | FPF r | MKS r | PFM r | VNT r
4630
- CHM r | FPX r | MKV r | PGF r | VRD r/w/c
4631
- COS r | GIF r/w | MNG r/w | PGM r/w | VSD r
4632
- CR2 r/w | GPR r/w | MOBI r | PLIST r | WAV r
4633
- CR3 r/w | GZ r | MODD r | PICT r | WDP r/w
4634
- CRM r/w | HDP r/w | MOI r | PMP r | WEBP r/w
4635
- CRW r/w | HDR r | MOS r/w | PNG r/w | WEBM r
4636
- CS1 r/w | HEIC r/w | MOV r/w | PPM r/w | WMA r
4637
- CSV r | HEIF r/w | MP3 r | PPT r | WMV r
4638
- CUR r | HTML r | MP4 r/w | PPTX r | WPG r
4639
- CZI r | ICC r/w/c | MPC r | PS r/w | WTV r
4640
- DCM r | ICO r | MPG r | PSB r/w | WV r
4641
- DCP r/w | ICS r | MPO r/w | PSD r/w | X3F r/w
4642
- DCR r | IDML r | MQV r/w | PSP r | XCF r
4643
- DFONT r | IIQ r/w | MRC r | QTIF r/w | XLS r
4644
- DIVX r | IND r/w | MRW r/w | R3D r | XLSX r
4645
- DJVU r | INSP r/w | MXF r | RA r | XMP r/w/c
4646
- DLL r | INSV r | NEF r/w | RAF r/w | ZIP r
4647
- DNG r/w | INX r | NKSC r/w | RAM r |
4648
- DOC r | ISO r | NRW r/w | RAR r |
4649
- DOCX r | ITC r | NUMBERS r | RAW r/w |
4650
- DPX r | J2C r | O r | RIFF r |
4625
+ 360 r/w | DPX r | ITC r | NUMBERS r | RAW r/w
4626
+ 3FR r | DR4 r/w/c | J2C r | O r | RIFF r
4627
+ 3G2 r/w | DSS r | JNG r/w | ODP r | RSRC r
4628
+ 3GP r/w | DV r | JP2 r/w | ODS r | RTF r
4629
+ 7Z r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
4630
+ A r | DVR-MS r | JSON r | OFR r | RWL r/w
4631
+ AA r | DYLIB r | JXL r | OGG r | RWZ r
4632
+ AAE r | EIP r | K25 r | OGV r | RM r
4633
+ AAX r/w | EPS r/w | KDC r | ONP r | SEQ r
4634
+ ACR r | EPUB r | KEY r | OPUS r | SKETCH r
4635
+ AFM r | ERF r/w | LA r | ORF r/w | SO r
4636
+ AI r/w | EXE r | LFP r | ORI r/w | SR2 r/w
4637
+ AIFF r | EXIF r/w/c | LIF r | OTF r | SRF r
4638
+ APE r | EXR r | LNK r | PAC r | SRW r/w
4639
+ ARQ r/w | EXV r/w/c | LRV r/w | PAGES r | SVG r
4640
+ ARW r/w | F4A/V r/w | M2TS r | PBM r/w | SWF r
4641
+ ASF r | FFF r/w | M4A/V r/w | PCD r | THM r/w
4642
+ AVI r | FITS r | MACOS r | PCX r | TIFF r/w
4643
+ AVIF r/w | FLA r | MAX r | PDB r | TORRENT r
4644
+ AZW r | FLAC r | MEF r/w | PDF r/w | TTC r
4645
+ BMP r | FLIF r/w | MIE r/w/c | PEF r/w | TTF r
4646
+ BPG r | FLV r | MIFF r | PFA r | TXT r
4647
+ BTF r | FPF r | MKA r | PFB r | VCF r
4648
+ CHM r | FPX r | MKS r | PFM r | VNT r
4649
+ COS r | GIF r/w | MKV r | PGF r | VRD r/w/c
4650
+ CR2 r/w | GLV r/w | MNG r/w | PGM r/w | VSD r
4651
+ CR3 r/w | GPR r/w | MOBI r | PLIST r | WAV r
4652
+ CRM r/w | GZ r | MODD r | PICT r | WDP r/w
4653
+ CRW r/w | HDP r/w | MOI r | PMP r | WEBP r/w
4654
+ CS1 r/w | HDR r | MOS r/w | PNG r/w | WEBM r
4655
+ CSV r | HEIC r/w | MOV r/w | PPM r/w | WMA r
4656
+ CUR r | HEIF r/w | MP3 r | PPT r | WMV r
4657
+ CZI r | HTML r | MP4 r/w | PPTX r | WPG r
4658
+ DCM r | ICC r/w/c | MPC r | PS r/w | WTV r
4659
+ DCP r/w | ICO r | MPG r | PSB r/w | WV r
4660
+ DCR r | ICS r | MPO r/w | PSD r/w | X3F r/w
4661
+ DFONT r | IDML r | MQV r/w | PSP r | XCF r
4662
+ DIVX r | IIQ r/w | MRC r | QTIF r/w | XLS r
4663
+ DJVU r | IND r/w | MRW r/w | R3D r | XLSX r
4664
+ DLL r | INSP r/w | MXF r | RA r | XMP r/w/c
4665
+ DNG r/w | INSV r | NEF r/w | RAF r/w | ZIP r
4666
+ DOC r | INX r | NKSC r/w | RAM r |
4667
+ DOCX r | ISO r | NRW r/w | RAR r |
4651
4668
 
4652
4669
  Meta Information
4653
4670
  ----------------------+----------------------+---------------------
@@ -4860,8 +4877,8 @@ for more details). C<+=> may also be used to increment numerical values (or
4860
4877
  decrement if I<VALUE> is negative), and C<-=> may be used to conditionally
4861
4878
  delete or replace a tag (see L</WRITING EXAMPLES> for examples). C<^=> is
4862
4879
  used to write an empty string instead of deleting the tag when no I<VALUE>
4863
- is given, but otherwise it is equivalent to C<=>, but note that the caret
4864
- must be quoted on the Windows command line.
4880
+ is given, but otherwise it is equivalent to C<=>. (Note that the caret must
4881
+ be quoted on the Windows command line.)
4865
4882
 
4866
4883
  I<TAG> may contain one or more leading family 0, 1, 2 or 7 group names,
4867
4884
  prefixed by optional family numbers, and separated colons. If no group name
@@ -4927,7 +4944,9 @@ while C<-all:all=> deletes entire blocks.
4927
4944
  5) The "APP" group names ("APP0" through "APP15") are used to delete JPEG
4928
4945
  application segments which are not associated with another deletable group.
4929
4946
  For example, specifying C<-APP14:All=> will NOT delete the APP14 "Adobe"
4930
- segment because this is accomplished with C<-Adobe:All>.
4947
+ segment because this is accomplished with C<-Adobe:All>. But note that
4948
+ these unnamed APP segments may not be excluded with C<--APPxx:all>) when
4949
+ deleting all information.
4931
4950
 
4932
4951
  6) When shifting a value, the shift is applied to the original value of the
4933
4952
  tag, overriding any other values previously assigned to the tag on the same
@@ -5557,7 +5576,7 @@ with this command:
5557
5576
 
5558
5577
  produces output like this:
5559
5578
 
5560
- -- Generated by ExifTool 12.62 --
5579
+ -- Generated by ExifTool 12.64 --
5561
5580
  File: a.jpg - 2003:10:31 15:44:19
5562
5581
  (f/5.6, 1/60s, ISO 100)
5563
5582
  File: b.jpg - 2006:05:23 11:57:38
@@ -6080,13 +6099,10 @@ newline and C<$$> represents a single C<$> symbol. So Perl variables, if
6080
6099
  used, require a double C<$>, and regular expressions ending in C<$/> must
6081
6100
  use C<$$/> instead.
6082
6101
 
6083
- 4) The condition may only test tags from the file being processed. To
6084
- process one file based on tags from another, two steps are required. For
6085
- example, to process XMP sidecar files in directory C<DIR> based on tags from
6086
- the associated NEF:
6087
-
6088
- exiftool -if EXPR -p '$directory/$filename' -ext nef DIR > nef.txt
6089
- exiftool -@ nef.txt -srcfile %d%f.xmp ...
6102
+ 4) The condition accesses only tags from the file being processed unless the
6103
+ B<-fileNUM> option is used to read an alternate file and the corresponding
6104
+ family 8 group name is specified for the tag. See the B<-fileNUM> option
6105
+ details for more information.
6090
6106
 
6091
6107
  5) The B<-a> option has no effect on the evaluation of the expression, and
6092
6108
  the values of duplicate tags are accessible only by specifying a group name
@@ -6270,10 +6286,12 @@ for EXIF this is the individual IFD (the family 1 group).
6270
6286
  When reading, causes information to be extracted from .gz and .bz2
6271
6287
  compressed images (only one image per archive; requires gzip and bzip2 to be
6272
6288
  available). When writing, causes compressed information to be written if
6273
- supported by the metadata format (eg. compressed textual metadata in PNG),
6274
- disables the recommended padding in embedded XMP (saving 2424 bytes when
6275
- writing XMP in a file), and writes XMP in shorthand format -- the equivalent
6276
- of setting the API Compress=1 and Compact="NoPadding,Shorthand".
6289
+ supported by the metadata format (eg. PNG supports compressed textual
6290
+ metadata, JXL supports compressed EXIF and XML, and MIE supports any
6291
+ compressed metadata), disables the recommended padding in embedded XMP
6292
+ (saving 2424 bytes when writing XMP in a file), and writes XMP in shorthand
6293
+ format -- the equivalent of setting the API Compress=1 and
6294
+ Compact="NoPadding,Shorthand".
6277
6295
 
6278
6296
  =back
6279
6297
 
@@ -6758,6 +6776,14 @@ rewritten unnecessarily:
6758
6776
 
6759
6777
  Note that function names are case sensitive.
6760
6778
 
6779
+ ExifTool 12.64 adds an API NoDups option which makes the NoDups helper
6780
+ function largely redundant, with all the functionality except the ability to
6781
+ avoid rewriting the file if there are no duplicates, but with the advantage
6782
+ the duplicates may be removed when accumulating list items from multiple
6783
+ sources. An equivalent to the above commands using this feature would be:
6784
+
6785
+ exiftool -tagsfromfile @ -keywords -api nodups a.jpg
6786
+
6761
6787
  =head1 WINDOWS UNICODE FILE NAMES
6762
6788
 
6763
6789
  In Windows, command-line arguments are specified using the current code page