exiftool_vendored 12.64.1 → 12.65.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 +26 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +22 -15
- data/bin/lib/Image/ExifTool/Apple.pm +9 -5
- data/bin/lib/Image/ExifTool/BigTIFF.pm +8 -1
- data/bin/lib/Image/ExifTool/Canon.pm +3 -1
- data/bin/lib/Image/ExifTool/FlashPix.pm +8 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +561 -67
- data/bin/lib/Image/ExifTool/NikonCustom.pm +862 -61
- data/bin/lib/Image/ExifTool/PDF.pm +18 -8
- data/bin/lib/Image/ExifTool/QuickTime.pm +18 -10
- data/bin/lib/Image/ExifTool/Samsung.pm +227 -227
- data/bin/lib/Image/ExifTool/Sony.pm +128 -24
- data/bin/lib/Image/ExifTool/TagLookup.pm +4607 -4591
- data/bin/lib/Image/ExifTool/TagNames.pod +465 -21
- data/bin/lib/Image/ExifTool/Writer.pl +7 -2
- data/bin/lib/Image/ExifTool.pm +112 -92
- data/bin/lib/Image/ExifTool.pod +26 -1
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -184
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 043102c6d2f82c4799b2885cbd9fdd7e9dfac5f1fe0450dea8bc2392a995dca3
|
4
|
+
data.tar.gz: f188b33293746a02b5b8814a5b566cfefebb9311146d75a383522686424dc547
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af7e7099dbf145f6ad9000691f208cd15bac17f74b5051e5e3273837f3d6d09b121171d3b593029bca036b6b58b23dddc55b962ddf9b2d7e0638a9d926de5400
|
7
|
+
data.tar.gz: f92aae3415a5d73e8c449c466584798d66941ec0c28d97ebe1e88c0d917cecfce642c7bf2b20608fd425ddd412ff2b2a3659da97519a413903524fc99d98da73
|
data/bin/Changes
CHANGED
@@ -7,6 +7,32 @@ RSS feed: https://exiftool.org/rss.xml
|
|
7
7
|
Note: The most recent production release is Version 12.60. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
Aug. 10, 2023 - Version 12.65
|
11
|
+
|
12
|
+
- Added a new QuickTime Keys tag
|
13
|
+
- Added a new CanonModelID (thanks Laurent Clevy)
|
14
|
+
- Added a new Canon LensType (thanks Norbert Wasser)
|
15
|
+
- Added number in brackets to converted Samsung MCCData value
|
16
|
+
- Decode a number of new Sony tags (thanks Jos Roost)
|
17
|
+
- Decode a few new FlashPix tags (github #217)
|
18
|
+
- Improved decoding of Nikon Z9 firmware 4.0 tags (thanks Warren Hatch)
|
19
|
+
- Improved parsing of PDF:Keywords to support semicolon-separated lists
|
20
|
+
- Enhanced -api option to show list of available options if no argument is
|
21
|
+
provided
|
22
|
+
- Lowered priority of IFD1 tags in ARW images so IFD0/SubIFD take precedence
|
23
|
+
- Changed QuickTime tag names for atID (AlbumTitleID to ArtistID) and plID
|
24
|
+
(PlayListID to AlbumID) (github issue #216), and added cmID (ComposerID)
|
25
|
+
- Changed Apple:MediaGroupUUID tag name back to ContentIdentifier
|
26
|
+
- Patched the -d option to handle the %s format code internally when writing
|
27
|
+
(avoids problems due to inconsistent behaviour of this format code in the
|
28
|
+
strptime function on different systems)
|
29
|
+
- Patched patch of version 12.32 to restore ability to read from named pipes
|
30
|
+
- Fixed bug which could cause a hang when processing a corrupt BigTIFF image
|
31
|
+
- Fixed document number for auxiliary image metadata in HEIC files
|
32
|
+
- Fixed misspelt Apple tag name (thanks Neal Krawetz)
|
33
|
+
- API Changes:
|
34
|
+
- Added AvailableOptions method
|
35
|
+
|
10
36
|
June 28, 2023 - Version 12.64
|
11
37
|
|
12
38
|
- Added a new Sony LensType (thanks Jos Roost)
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -108,8 +108,8 @@ your home directory, then you would type the following commands in a
|
|
108
108
|
terminal window to extract and run ExifTool:
|
109
109
|
|
110
110
|
cd ~/Desktop
|
111
|
-
gzip -dc Image-ExifTool-12.
|
112
|
-
cd Image-ExifTool-12.
|
111
|
+
gzip -dc Image-ExifTool-12.65.tar.gz | tar -xf -
|
112
|
+
cd Image-ExifTool-12.65
|
113
113
|
./exiftool t/images/ExifTool.jpg
|
114
114
|
|
115
115
|
Note: These commands extract meta information from one of the test images.
|
data/bin/exiftool
CHANGED
@@ -11,7 +11,7 @@ use strict;
|
|
11
11
|
use warnings;
|
12
12
|
require 5.004;
|
13
13
|
|
14
|
-
my $version = '12.
|
14
|
+
my $version = '12.65';
|
15
15
|
|
16
16
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
17
17
|
my $exePath;
|
@@ -814,11 +814,17 @@ for (;;) {
|
|
814
814
|
/^(-?)(a|duplicates)$/i and $mt->Options(Duplicates => ($1 ? 0 : 1)), next;
|
815
815
|
if ($a eq 'api') {
|
816
816
|
my $opt = shift;
|
817
|
-
defined $opt
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
817
|
+
if (defined $opt and length $opt) {
|
818
|
+
my $val = ($opt =~ s/=(.*)//s) ? $1 : 1;
|
819
|
+
# empty string means an undefined value unless ^= is used
|
820
|
+
$val = undef unless $opt =~ s/\^$// or length $val;
|
821
|
+
$mt->Options($opt => $val);
|
822
|
+
} else {
|
823
|
+
print "Available API Options:\n";
|
824
|
+
my $availableOptions = Image::ExifTool::AvailableOptions();
|
825
|
+
printf(" %-17s - %s\n", $$_[0], $$_[2]) foreach @$availableOptions;
|
826
|
+
$helped = 1;
|
827
|
+
}
|
822
828
|
next;
|
823
829
|
}
|
824
830
|
/^arg(s|format)$/i and $argFormat = 1, next;
|
@@ -2874,7 +2880,7 @@ sub SetImageInfo($$$)
|
|
2874
2880
|
}
|
2875
2881
|
unless ($isStdout) {
|
2876
2882
|
$outfile = NextUnusedFilename($outfile);
|
2877
|
-
if ($et->Exists($outfile) and not $doSetFileName) {
|
2883
|
+
if ($et->Exists($outfile, 1) and not $doSetFileName) {
|
2878
2884
|
Warn "Error: '${outfile}' already exists - $infile\n";
|
2879
2885
|
EFile($infile);
|
2880
2886
|
++$countBadWr;
|
@@ -3005,7 +3011,7 @@ sub SetImageInfo($$$)
|
|
3005
3011
|
$outfile = Image::ExifTool::GetNewFileName(defined $outfile ? $outfile : $file, $newDir);
|
3006
3012
|
}
|
3007
3013
|
$outfile = NextUnusedFilename($outfile, $infile);
|
3008
|
-
if ($et->Exists($outfile)) {
|
3014
|
+
if ($et->Exists($outfile, 1)) {
|
3009
3015
|
if ($infile eq $outfile) {
|
3010
3016
|
undef $outfile; # not changing the file name after all
|
3011
3017
|
# (allow for case-insensitive filesystems)
|
@@ -4233,7 +4239,7 @@ sub NextUnusedFilename($;$)
|
|
4233
4239
|
}
|
4234
4240
|
$filename .= substr($fmt, $pos); # add rest of file name
|
4235
4241
|
# return now with filename unless file exists
|
4236
|
-
return $filename unless ($mt->Exists($filename) and not defined $usedFileName{$filename}) or $usedFileName{$filename};
|
4242
|
+
return $filename unless ($mt->Exists($filename, 1) and not defined $usedFileName{$filename}) or $usedFileName{$filename};
|
4237
4243
|
if (defined $okfile) {
|
4238
4244
|
return $filename if $filename eq $okfile;
|
4239
4245
|
my ($fn, $ok) = (AbsPath($filename), AbsPath($okfile));
|
@@ -4313,7 +4319,7 @@ sub OpenOutputFile($;@)
|
|
4313
4319
|
$outfile .= $textOut;
|
4314
4320
|
}
|
4315
4321
|
my $mode = '>';
|
4316
|
-
if ($mt->Exists($outfile)) {
|
4322
|
+
if ($mt->Exists($outfile, 1)) {
|
4317
4323
|
unless ($textOverwrite) {
|
4318
4324
|
Warn "Output file $outfile already exists for $file\n";
|
4319
4325
|
return ();
|
@@ -5576,7 +5582,7 @@ with this command:
|
|
5576
5582
|
|
5577
5583
|
produces output like this:
|
5578
5584
|
|
5579
|
-
-- Generated by ExifTool 12.
|
5585
|
+
-- Generated by ExifTool 12.65 --
|
5580
5586
|
File: a.jpg - 2003:10:31 15:44:19
|
5581
5587
|
(f/5.6, 1/60s, ISO 100)
|
5582
5588
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -6516,13 +6522,14 @@ load exiftool for each invocation.
|
|
6516
6522
|
|
6517
6523
|
=over 5
|
6518
6524
|
|
6519
|
-
=item B<-api> I<OPT[[^]=[VAL]]>
|
6525
|
+
=item B<-api> [I<OPT[[^]=[VAL]]>]
|
6520
6526
|
|
6521
6527
|
Set ExifTool API option. I<OPT> is an API option name. The option value is
|
6522
6528
|
set to 1 if I<=VAL> is omitted. If I<VAL> is omitted, the option value is
|
6523
|
-
set to undef if C<=> is used, or an empty string with C<^=>.
|
6524
|
-
|
6525
|
-
|
6529
|
+
set to undef if C<=> is used, or an empty string with C<^=>. If I<OPT> is
|
6530
|
+
not specified a list of available options is returned. See
|
6531
|
+
L<Image::ExifTool Options|Image::ExifTool/Options> for option details. This
|
6532
|
+
overrides API options set via the config file.
|
6526
6533
|
|
6527
6534
|
=item B<-common_args>
|
6528
6535
|
|
@@ -16,7 +16,7 @@ use vars qw($VERSION);
|
|
16
16
|
use Image::ExifTool::Exif;
|
17
17
|
use Image::ExifTool::PLIST;
|
18
18
|
|
19
|
-
$VERSION = '1.
|
19
|
+
$VERSION = '1.10';
|
20
20
|
|
21
21
|
sub ConvertPLIST($$);
|
22
22
|
|
@@ -110,9 +110,13 @@ sub ConvertPLIST($$);
|
|
110
110
|
},
|
111
111
|
# 0x0010 - int32s: 1 (SphereStatus, ref 2)
|
112
112
|
0x0011 => { # (if defined, there is a live photo associated with the video, #forum13565) (AssetIdentifier, ref 2)
|
113
|
-
Name => '
|
114
|
-
|
113
|
+
Name => 'ContentIdentifier',
|
114
|
+
Notes => 'called MediaGroupUUID when it appears as an XAttr',
|
115
|
+
# - originally called ContentIdentifier, forum8750
|
116
|
+
# - changed in 12.19 to MediaGroupUUID, NealKrawetz private communication
|
117
|
+
# - changed back to ContentIdentifier since Apple writes this to Keys content.identifier (forum14874)
|
115
118
|
Writable => 'string',
|
119
|
+
|
116
120
|
},
|
117
121
|
# 0x0012 - (QRMOutputType, ref 2)
|
118
122
|
# 0x0013 - (SphereExternalForceOffset, ref 2)
|
@@ -127,7 +131,7 @@ sub ConvertPLIST($$);
|
|
127
131
|
Writable => 'string',
|
128
132
|
},
|
129
133
|
# 0x0016 - string[29]: "AXZ6pMTOh2L+acSh4Kg630XCScoO\0" (PhotosOriginatingSignature, ref 2)
|
130
|
-
0x0017 => { #forum13565 (only valid if MediaGroupUUID exists) (StillImageCaptureFlags, ref 2)
|
134
|
+
0x0017 => { #forum13565 (only valid if MediaGroupUUID/ContentIdentifier exists) (StillImageCaptureFlags, ref 2)
|
131
135
|
Name => 'LivePhotoVideoIndex',
|
132
136
|
Notes => 'divide by RunTimeScale to get time in seconds',
|
133
137
|
},
|
@@ -153,7 +157,7 @@ sub ConvertPLIST($$);
|
|
153
157
|
# 0x001e - (OriginatingAppID, ref 2)
|
154
158
|
# 0x001f - int32s: 0,1 (PhotosAppFeatureFlags, ref 2)
|
155
159
|
0x0020 => { # (ImageCaptureRequestIdentifier, ref 2)
|
156
|
-
Name => '
|
160
|
+
Name => 'ImageCaptureRequestID',
|
157
161
|
Writable => 'string',
|
158
162
|
Unknown => 1,
|
159
163
|
},
|
@@ -15,7 +15,7 @@ use vars qw($VERSION);
|
|
15
15
|
use Image::ExifTool qw(:DataAccess :Utils);
|
16
16
|
use Image::ExifTool::Exif;
|
17
17
|
|
18
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.08';
|
19
19
|
|
20
20
|
my $maxOffset = 0x7fffffff; # currently supported maximum data offset/size
|
21
21
|
|
@@ -216,6 +216,13 @@ sub ProcessBigIFD($$$)
|
|
216
216
|
$dirStart = Image::ExifTool::Get64u(\$nextIFD, 0);
|
217
217
|
$dirStart or last;
|
218
218
|
$offName = $nextOffName;
|
219
|
+
# protect against infinite loop
|
220
|
+
if ($$et{PROCESSED}{$dirStart}) {
|
221
|
+
$et->Warn("$dirName pointer references previous $$et{PROCESSED}{$dirStart} directory");
|
222
|
+
last;
|
223
|
+
} else {
|
224
|
+
$$et{PROCESSED}{$dirStart} = $dirName;
|
225
|
+
}
|
219
226
|
}
|
220
227
|
return 1;
|
221
228
|
}
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.67';
|
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)
|
@@ -476,6 +476,7 @@ $VERSION = '4.66';
|
|
476
476
|
255.1 => 'Sigma 180mm f/2.8 EX DG OS HSM APO Macro', #50
|
477
477
|
255.2 => 'Tamron SP 70-200mm f/2.8 Di VC USD', #exiv issue 1202 (A009)
|
478
478
|
255.3 => 'Yongnuo YN 50mm f/1.8', #50
|
479
|
+
313 => 'Canon RF 28mm F2.8 STM', #42
|
479
480
|
368 => 'Sigma 14-24mm f/2.8 DG HSM | A or other Sigma Lens', #IB (A018)
|
480
481
|
368.1 => 'Sigma 20mm f/1.4 DG HSM | A', #50 (newer firmware)
|
481
482
|
368.2 => 'Sigma 50mm f/1.4 DG HSM | A', #50
|
@@ -983,6 +984,7 @@ $VERSION = '4.66';
|
|
983
984
|
0x80000480 => 'EOS R50', #42
|
984
985
|
0x80000481 => 'EOS R6 Mark II', #42
|
985
986
|
0x80000487 => 'EOS R8', #42
|
987
|
+
0x80000491 => 'PowerShot V10', #25
|
986
988
|
0x80000520 => 'EOS D2000C', #IB
|
987
989
|
0x80000560 => 'EOS D6000C', #PH (guess)
|
988
990
|
);
|
@@ -11,6 +11,7 @@
|
|
11
11
|
# 4) http://msdn.microsoft.com/en-us/library/aa380374.aspx
|
12
12
|
# 5) http://www.cpan.org/modules/by-authors/id/H/HC/HCARVEY/File-MSWord-0.1.zip
|
13
13
|
# 6) https://msdn.microsoft.com/en-us/library/cc313153(v=office.12).aspx
|
14
|
+
# 7) https://learn.microsoft.com/en-us/openspecs/office_file_formats/ms-oshared/3ef02e83-afef-4b6c-9585-c109edd24e07
|
14
15
|
#------------------------------------------------------------------------------
|
15
16
|
|
16
17
|
package Image::ExifTool::FlashPix;
|
@@ -21,7 +22,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
21
22
|
use Image::ExifTool::Exif;
|
22
23
|
use Image::ExifTool::ASF; # for GetGUID()
|
23
24
|
|
24
|
-
$VERSION = '1.
|
25
|
+
$VERSION = '1.46';
|
25
26
|
|
26
27
|
sub ProcessFPX($$);
|
27
28
|
sub ProcessFPXR($$$);
|
@@ -587,6 +588,7 @@ my %fpxFileType = (
|
|
587
588
|
However, ExifTool will also extract any other information found in the
|
588
589
|
UserDefined properties.
|
589
590
|
},
|
591
|
+
# 0x01 => 'CodePage', #7
|
590
592
|
0x02 => 'Category',
|
591
593
|
0x03 => 'PresentationTarget',
|
592
594
|
0x04 => 'Bytes',
|
@@ -631,12 +633,16 @@ my %fpxFileType = (
|
|
631
633
|
Name => 'AppVersion',
|
632
634
|
ValueConv => 'sprintf("%d.%.4d",$val >> 16, $val & 0xffff)',
|
633
635
|
},
|
634
|
-
# 0x18 ? seen -1
|
636
|
+
# 0x18 ? seen -1 (DigitalSignature, VtDigSig format, ref 7)
|
635
637
|
# 0x19 ? seen 0
|
636
638
|
# 0x1a ? seen 0
|
637
639
|
# 0x1b ? seen 0
|
638
640
|
# 0x1c ? seen 0,1
|
639
641
|
# 0x1d ? seen 1
|
642
|
+
0x1a => 'ContentType', #7, github#217
|
643
|
+
0x1b => 'ContentStatus', #7, github#217
|
644
|
+
0x1c => 'Language', #7, github#217
|
645
|
+
0x1d => 'DocVersion', #7, github#217
|
640
646
|
# 0x1e ? seen 1
|
641
647
|
# 0x1f ? seen 1,5
|
642
648
|
# 0x20 ? seen 0,5
|