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.
- 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
|