exiftool_vendored 12.62.0 → 12.64.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.
- checksums.yaml +4 -4
- data/bin/Changes +50 -1
- data/bin/MANIFEST +4 -0
- data/bin/META.json +4 -1
- data/bin/META.yml +4 -1
- data/bin/Makefile.PL +7 -1
- data/bin/README +50 -46
- data/bin/config_files/guano.config +161 -0
- data/bin/exiftool +88 -62
- data/bin/lib/Image/ExifTool/7Z.pm +793 -0
- data/bin/lib/Image/ExifTool/Apple.pm +6 -3
- data/bin/lib/Image/ExifTool/Canon.pm +1 -0
- data/bin/lib/Image/ExifTool/CanonRaw.pm +4 -4
- data/bin/lib/Image/ExifTool/CanonVRD.pm +4 -1
- data/bin/lib/Image/ExifTool/Exif.pm +31 -14
- data/bin/lib/Image/ExifTool/FujiFilm.pm +3 -3
- data/bin/lib/Image/ExifTool/GPS.pm +5 -2
- data/bin/lib/Image/ExifTool/Geotag.pm +4 -1
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +226 -28
- data/bin/lib/Image/ExifTool/Lang/fr.pm +1467 -202
- data/bin/lib/Image/ExifTool/MPF.pm +2 -1
- data/bin/lib/Image/ExifTool/Matroska.pm +16 -1
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +419 -5
- data/bin/lib/Image/ExifTool/NikonCustom.pm +13 -3
- data/bin/lib/Image/ExifTool/PDF.pm +9 -1
- data/bin/lib/Image/ExifTool/PLIST.pm +8 -1
- data/bin/lib/Image/ExifTool/PNG.pm +6 -6
- data/bin/lib/Image/ExifTool/PhaseOne.pm +5 -5
- data/bin/lib/Image/ExifTool/QuickTime.pm +74 -21
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +20 -19
- data/bin/lib/Image/ExifTool/README +2 -2
- data/bin/lib/Image/ExifTool/RIFF.pm +11 -9
- data/bin/lib/Image/ExifTool/Shortcuts.pm +2 -1
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +4 -4
- data/bin/lib/Image/ExifTool/Sony.pm +103 -8
- data/bin/lib/Image/ExifTool/TagLookup.pm +4738 -4630
- data/bin/lib/Image/ExifTool/TagNames.pod +249 -5
- data/bin/lib/Image/ExifTool/Validate.pm +17 -1
- data/bin/lib/Image/ExifTool/WriteExif.pl +9 -7
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +21 -9
- data/bin/lib/Image/ExifTool/WriteXMP.pl +2 -2
- data/bin/lib/Image/ExifTool/Writer.pl +28 -10
- data/bin/lib/Image/ExifTool/XMP.pm +14 -2
- data/bin/lib/Image/ExifTool/XMP2.pl +32 -0
- data/bin/lib/Image/ExifTool/XMPStruct.pl +96 -28
- data/bin/lib/Image/ExifTool/ZIP.pm +5 -5
- data/bin/lib/Image/ExifTool.pm +67 -39
- data/bin/lib/Image/ExifTool.pod +83 -52
- data/bin/perl-Image-ExifTool.spec +44 -44
- data/lib/exiftool_vendored/version.rb +1 -1
- 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.
|
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
|
-
|
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 |
|
4609
|
-
3FR r |
|
4610
|
-
3G2 r/w |
|
4611
|
-
3GP r/w |
|
4612
|
-
|
4613
|
-
|
4614
|
-
|
4615
|
-
|
4616
|
-
|
4617
|
-
|
4618
|
-
|
4619
|
-
|
4620
|
-
|
4621
|
-
|
4622
|
-
|
4623
|
-
|
4624
|
-
|
4625
|
-
|
4626
|
-
|
4627
|
-
|
4628
|
-
|
4629
|
-
|
4630
|
-
|
4631
|
-
|
4632
|
-
|
4633
|
-
|
4634
|
-
|
4635
|
-
|
4636
|
-
|
4637
|
-
|
4638
|
-
|
4639
|
-
|
4640
|
-
|
4641
|
-
|
4642
|
-
|
4643
|
-
|
4644
|
-
|
4645
|
-
|
4646
|
-
|
4647
|
-
|
4648
|
-
|
4649
|
-
|
4650
|
-
|
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
|
4864
|
-
|
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.
|
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
|
6084
|
-
|
6085
|
-
|
6086
|
-
|
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
|
6274
|
-
|
6275
|
-
|
6276
|
-
|
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
|