exiftool_vendored 11.79.0 → 11.80.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 +13 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +21 -11
- data/bin/lib/Image/ExifTool.pm +26 -15
- data/bin/lib/Image/ExifTool/Canon.pm +23 -22
- data/bin/lib/Image/ExifTool/Nikon.pm +2 -1
- data/bin/lib/Image/ExifTool/README +9 -7
- data/bin/lib/Image/ExifTool/Samsung.pm +23 -24
- data/bin/lib/Image/ExifTool/Sony.pm +4 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +0 -1
- data/bin/lib/Image/ExifTool/TagNames.pod +1 -8
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +29 -9
- data/bin/lib/Image/ExifTool/WriteXMP.pl +3 -3
- data/bin/lib/Image/ExifTool/XMP.pm +2 -2
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 31e5c0c123db980d212dfb83add8dd6fa6134d00
|
|
4
|
+
data.tar.gz: 551490100ae182f14dc7096534861c60b0e5aed9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b1ab651417aea07d82635d2152192dfb48f566d088fe36d717066ef5ab26e0d288501c7c331597f2d7fda28cd8fd513c42b2456cc59aca197917fa7790e1a643
|
|
7
|
+
data.tar.gz: 427b08f65545027e38e3078e50e8dab78adb4de80a3cd64094a0171556092ec9250b4049a5f6d6878664ba9bbf6582a78066e9a76eb399165b114fbd426de974
|
data/bin/Changes
CHANGED
|
@@ -7,6 +7,19 @@ RSS feed: https://exiftool.org/rss.xml
|
|
|
7
7
|
Note: The most recent production release is Version 11.70. (Other versions are
|
|
8
8
|
considered development releases, and are not uploaded to CPAN.)
|
|
9
9
|
|
|
10
|
+
Dec. 17, 2019 - Version 11.80
|
|
11
|
+
|
|
12
|
+
- Added a new Canon LensType
|
|
13
|
+
- Added a new Nikon Z LensID (thanks LibRaw)
|
|
14
|
+
- Added a few new Sony LensType values (thanks Jos Roost)
|
|
15
|
+
- Attempt to improve reliability of Samsung DepthMapWidth/Height decoding
|
|
16
|
+
- Updated a number of Canon-mount Tamron lens names to include the Tamron
|
|
17
|
+
model number
|
|
18
|
+
- Patched MOV/MP4 writer to allow a small amount of garbage at the end of a
|
|
19
|
+
file to be deleted when writing with the -m option
|
|
20
|
+
- Fixed bug where some Composite tags may not have taken priority over other
|
|
21
|
+
tags as they should have
|
|
22
|
+
|
|
10
23
|
Dec. 12, 2019 - Version 11.79
|
|
11
24
|
|
|
12
25
|
- Added support for AVIF files
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
|
@@ -105,8 +105,8 @@ your home directory, then you would type the following commands in a
|
|
|
105
105
|
terminal window to extract and run ExifTool:
|
|
106
106
|
|
|
107
107
|
cd ~/Desktop
|
|
108
|
-
gzip -dc Image-ExifTool-11.
|
|
109
|
-
cd Image-ExifTool-11.
|
|
108
|
+
gzip -dc Image-ExifTool-11.80.tar.gz | tar -xf -
|
|
109
|
+
cd Image-ExifTool-11.80
|
|
110
110
|
./exiftool t/images/ExifTool.jpg
|
|
111
111
|
|
|
112
112
|
Note: These commands extract meta information from one of the test images.
|
data/bin/exiftool
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
use strict;
|
|
11
11
|
require 5.004;
|
|
12
12
|
|
|
13
|
-
my $version = '11.
|
|
13
|
+
my $version = '11.80';
|
|
14
14
|
|
|
15
15
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
|
16
16
|
my $exeDir;
|
|
@@ -4481,15 +4481,15 @@ C<-1IPTC:City>). Use the B<-listg> option to list available group names by
|
|
|
4481
4481
|
family.
|
|
4482
4482
|
|
|
4483
4483
|
A special tag name of C<All> may be used to indicate all meta information
|
|
4484
|
-
(ie. B<-All>).
|
|
4485
|
-
extract all information in a group (but beware that unless the B<-a>
|
|
4486
|
-
is also used, some tags in the group may be suppressed by same-named
|
|
4487
|
-
other groups). The wildcard characters C<?> and C<*> may be used in
|
|
4488
|
-
name to match any single character and zero or more characters
|
|
4489
|
-
These may not be used in a group name, with the exception that
|
|
4490
|
-
of C<*> (or C<All>) may be used to extract all instances of a
|
|
4491
|
-
B<-a> was used).
|
|
4492
|
-
the command line of most systems to prevent shell globbing.
|
|
4484
|
+
(ie. B<-All>). This is particularly useful when a group name is specified
|
|
4485
|
+
to extract all information in a group (but beware that unless the B<-a>
|
|
4486
|
+
option is also used, some tags in the group may be suppressed by same-named
|
|
4487
|
+
tags in other groups). The wildcard characters C<?> and C<*> may be used in
|
|
4488
|
+
a tag name to match any single character and zero or more characters
|
|
4489
|
+
respectively. These may not be used in a group name, with the exception that
|
|
4490
|
+
a group name of C<*> (or C<All>) may be used to extract all instances of a
|
|
4491
|
+
tag (as if B<-a> was used). Note that arguments containing wildcards must
|
|
4492
|
+
be quoted on the command line of most systems to prevent shell globbing.
|
|
4493
4493
|
|
|
4494
4494
|
A C<#> may be appended to the tag name to disable the print conversion on a
|
|
4495
4495
|
per-tag basis (see the B<-n> option). This may also be used when writing or
|
|
@@ -4745,6 +4745,16 @@ in a string. Another difference is that a minor warning is generated if a
|
|
|
4745
4745
|
tag doesn't exist when interpolating its value in a string (with C<$>), but
|
|
4746
4746
|
isn't when copying the tag directly.
|
|
4747
4747
|
|
|
4748
|
+
Finally, the behaviour is different when a destination tag or group of
|
|
4749
|
+
C<All> is used. When copying directly, a destination group and/or tag name
|
|
4750
|
+
of C<All> writes to the same family 1 group and/or tag name as the source.
|
|
4751
|
+
But when interpolated in a string, the identity of the source tags are lost
|
|
4752
|
+
and the value is written to all possible groups/tags. For example, the
|
|
4753
|
+
string form must be used in the following command since the intent is to set
|
|
4754
|
+
the value of all existing date/time tags from C<CreateDate>:
|
|
4755
|
+
|
|
4756
|
+
exiftool "-time:all<$createdate" -wm w FILE
|
|
4757
|
+
|
|
4748
4758
|
=item B<-x> I<TAG> (B<-exclude>)
|
|
4749
4759
|
|
|
4750
4760
|
Exclude the specified tag. There may be multiple B<-x> options. This has
|
|
@@ -5180,7 +5190,7 @@ with this command:
|
|
|
5180
5190
|
|
|
5181
5191
|
produces output like this:
|
|
5182
5192
|
|
|
5183
|
-
-- Generated by ExifTool 11.
|
|
5193
|
+
-- Generated by ExifTool 11.80 --
|
|
5184
5194
|
File: a.jpg - 2003:10:31 15:44:19
|
|
5185
5195
|
(f/5.6, 1/60s, ISO 100)
|
|
5186
5196
|
File: b.jpg - 2006:05:23 11:57:38
|
data/bin/lib/Image/ExifTool.pm
CHANGED
|
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
|
27
27
|
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
|
|
28
28
|
%jpegMarker %specialTags %fileTypeLookup $testLen);
|
|
29
29
|
|
|
30
|
-
$VERSION = '11.
|
|
30
|
+
$VERSION = '11.80';
|
|
31
31
|
$RELEASE = '';
|
|
32
32
|
@ISA = qw(Exporter);
|
|
33
33
|
%EXPORT_TAGS = (
|
|
@@ -3401,7 +3401,8 @@ sub BuildCompositeTags($)
|
|
|
3401
3401
|
my $compTable = GetTagTable('Image::ExifTool::Composite');
|
|
3402
3402
|
my @tagList = sort keys %$compTable;
|
|
3403
3403
|
my $rawValue = $$self{VALUE};
|
|
3404
|
-
my
|
|
3404
|
+
my $compKeys = $$self{COMP_KEYS};
|
|
3405
|
+
my (%cache, $allBuilt);
|
|
3405
3406
|
|
|
3406
3407
|
for (;;) {
|
|
3407
3408
|
my (%notBuilt, $tag, @deferredTags);
|
|
@@ -3503,6 +3504,11 @@ COMPOSITE_TAG:
|
|
|
3503
3504
|
if ($docNum) {
|
|
3504
3505
|
if ($found) {
|
|
3505
3506
|
$$self{DOC_NUM} = $docNum;
|
|
3507
|
+
# save pointers to all used tag keys
|
|
3508
|
+
foreach (keys %tagKey) {
|
|
3509
|
+
$$compKeys{$_} or $$compKeys{$_} = [ ];
|
|
3510
|
+
push @{$$compKeys{$tagKey{$_}}}, [ \%tagKey, $_ ];
|
|
3511
|
+
}
|
|
3506
3512
|
$self->FoundTag($tagInfo, \%tagKey);
|
|
3507
3513
|
delete $$self{DOC_NUM};
|
|
3508
3514
|
}
|
|
@@ -3516,19 +3522,14 @@ COMPOSITE_TAG:
|
|
|
3516
3522
|
# can be replaced (also eliminates keys with
|
|
3517
3523
|
# instance numbers which can't be replaced either)
|
|
3518
3524
|
next unless $compositeID{$tagKey{$_}};
|
|
3519
|
-
|
|
3520
|
-
|
|
3521
|
-
|
|
3525
|
+
}
|
|
3526
|
+
# save pointers to all used tag keys
|
|
3527
|
+
foreach (keys %tagKey) {
|
|
3528
|
+
$$compKeys{$_} or $$compKeys{$_} = [ ];
|
|
3529
|
+
push @{$$compKeys{$tagKey{$_}}}, [ \%tagKey, $_ ];
|
|
3522
3530
|
}
|
|
3523
3531
|
# save reference to tag key lookup as value for Composite tag
|
|
3524
3532
|
my $key = $self->FoundTag($tagInfo, \%tagKey);
|
|
3525
|
-
# check to see if we just replaced one of the tag keys we Require'd
|
|
3526
|
-
if (defined $key and $tagsUsed{$key}) {
|
|
3527
|
-
foreach (@{$tagsUsed{$key}}) {
|
|
3528
|
-
$$_ = $$self{MOVED_KEY}; # replace with new tag key
|
|
3529
|
-
}
|
|
3530
|
-
delete $tagsUsed{$key}; # can't be replaced again
|
|
3531
|
-
}
|
|
3532
3533
|
} elsif (not defined $found) {
|
|
3533
3534
|
delete $notBuilt{$tagName}; # tag can't be built anyway
|
|
3534
3535
|
}
|
|
@@ -3733,6 +3734,7 @@ sub Init($)
|
|
|
3733
3734
|
$$self{WRITTEN} = { }; # list of tags written (selected tags only)
|
|
3734
3735
|
$$self{FORCE_WRITE}= { }; # ForceWrite lookup (set from ForceWrite tag)
|
|
3735
3736
|
$$self{FOUND_DIR} = { }; # hash of directory names found in file
|
|
3737
|
+
$$self{COMP_KEYS} = { }; # lookup for tag keys used in Composite tags
|
|
3736
3738
|
$$self{PATH} = [ ]; # current subdirectory path in file when reading
|
|
3737
3739
|
$$self{NUM_FOUND} = 0; # total number of tags found (incl. duplicates)
|
|
3738
3740
|
$$self{CHANGED} = 0; # number of tags changed (writer only)
|
|
@@ -7867,10 +7869,12 @@ sub FoundTag($$$;@)
|
|
|
7867
7869
|
} else {
|
|
7868
7870
|
$priority = 1; # the normal default
|
|
7869
7871
|
}
|
|
7870
|
-
if ($priority >= $oldPriority and not $$self{DOC_NUM}
|
|
7872
|
+
if ($priority >= $oldPriority and (not $$self{DOC_NUM} or
|
|
7873
|
+
($$self{TAG_EXTRA}{$tag} and $$self{TAG_EXTRA}{$tag}{G3} and
|
|
7874
|
+
$$self{DOC_NUM} eq $$self{TAG_EXTRA}{$tag}{G3})) and not $noListDel)
|
|
7875
|
+
{
|
|
7871
7876
|
# move existing tag out of the way since this tag is higher priority
|
|
7872
7877
|
# (NOTE: any new members added here must also be added to DeleteTag())
|
|
7873
|
-
$$self{MOVED_KEY} = $nextTag; # used in BuildCompositeTags()
|
|
7874
7878
|
$$self{PRIORITY}{$nextTag} = $$self{PRIORITY}{$tag};
|
|
7875
7879
|
$$valueHash{$nextTag} = $$valueHash{$tag};
|
|
7876
7880
|
$$self{FILE_ORDER}{$nextTag} = $$self{FILE_ORDER}{$tag};
|
|
@@ -7884,6 +7888,12 @@ sub FoundTag($$$;@)
|
|
|
7884
7888
|
delete $$self{BOTH}{$tag};
|
|
7885
7889
|
# update tag key for list if necessary
|
|
7886
7890
|
$$self{LIST_TAGS}{$oldInfo} = $nextTag if $$self{LIST_TAGS}{$oldInfo};
|
|
7891
|
+
# update this key if used in a Composite tag
|
|
7892
|
+
if ($$self{COMP_KEYS}{$tag}) {
|
|
7893
|
+
$$_[0]{$$_[1]} = $nextTag foreach @{$$self{COMP_KEYS}{$tag}};
|
|
7894
|
+
$$self{COMP_KEYS}{$nextTag} = $$self{COMP_KEYS}{$tag};
|
|
7895
|
+
delete $$self{COMP_KEYS}{$tag};
|
|
7896
|
+
}
|
|
7887
7897
|
} else {
|
|
7888
7898
|
$tag = $nextTag; # don't override the existing tag
|
|
7889
7899
|
}
|
|
@@ -8338,7 +8348,8 @@ sub ProcessBinaryData($$$)
|
|
|
8338
8348
|
# hook to allow format, etc to be set dynamically
|
|
8339
8349
|
if (defined $$tagInfo{Hook}) {
|
|
8340
8350
|
my $oldVarSize = $varSize;
|
|
8341
|
-
|
|
8351
|
+
my $pos = $entry + $offset;
|
|
8352
|
+
#### eval Hook ($format, $varSize, $size, $dataPt, $pos)
|
|
8342
8353
|
eval $$tagInfo{Hook};
|
|
8343
8354
|
# save variable size data if required for writing (in case changed by Hook)
|
|
8344
8355
|
if ($$dirInfo{VarFormatData}) {
|
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
|
88
88
|
sub ProcessExifInfo($$$);
|
|
89
89
|
sub SwapWords($);
|
|
90
90
|
|
|
91
|
-
$VERSION = '4.
|
|
91
|
+
$VERSION = '4.30';
|
|
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)
|
|
@@ -184,7 +184,7 @@ $VERSION = '4.29';
|
|
|
184
184
|
36 => 'Canon EF 38-76mm f/4.5-5.6', #32
|
|
185
185
|
37 => 'Canon EF 35-80mm f/4-5.6 or Tamron Lens', #32
|
|
186
186
|
37.1 => 'Tamron 70-200mm f/2.8 Di LD IF Macro', #PH
|
|
187
|
-
37.2 => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro
|
|
187
|
+
37.2 => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro (A20)', #38
|
|
188
188
|
37.3 => 'Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical [IF]', #34
|
|
189
189
|
37.4 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical [IF] Macro', #forum2937
|
|
190
190
|
38 => 'Canon EF 80-200mm f/4.5-5.6', #32
|
|
@@ -192,7 +192,7 @@ $VERSION = '4.29';
|
|
|
192
192
|
40 => 'Canon EF 28-80mm f/3.5-5.6',
|
|
193
193
|
41 => 'Canon EF 28-90mm f/4-5.6', #32
|
|
194
194
|
42 => 'Canon EF 28-200mm f/3.5-5.6 or Tamron Lens', #32
|
|
195
|
-
42.1 => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro
|
|
195
|
+
42.1 => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro (A20)', #15
|
|
196
196
|
43 => 'Canon EF 28-105mm f/4-5.6', #10
|
|
197
197
|
44 => 'Canon EF 90-300mm f/4.5-5.6', #32
|
|
198
198
|
45 => 'Canon EF-S 18-55mm f/3.5-5.6 [II]', #PH (same ID for version II, ref 20)
|
|
@@ -220,13 +220,13 @@ $VERSION = '4.29';
|
|
|
220
220
|
112 => 'Sigma 28mm f/1.5 FF High-speed Prime or other Sigma Lens', #IB
|
|
221
221
|
112.1 => 'Sigma 40mm f/1.5 FF High-speed Prime', #IB
|
|
222
222
|
112.2 => 'Sigma 105mm f/1.5 FF High-speed Prime', #IB
|
|
223
|
-
117 => 'Tamron 35-150mm f/2.8-4.0 Di VC OSD or other Tamron Lens', #IB
|
|
224
|
-
117.1 => 'Tamron SP 35mm f/1.4 Di USD', #
|
|
223
|
+
117 => 'Tamron 35-150mm f/2.8-4.0 Di VC OSD (A043) or other Tamron Lens', #IB
|
|
224
|
+
117.1 => 'Tamron SP 35mm f/1.4 Di USD (F045)', #Exiv2#1064
|
|
225
225
|
124 => 'Canon MP-E 65mm f/2.8 1-5x Macro Photo', #9
|
|
226
226
|
125 => 'Canon TS-E 24mm f/3.5L',
|
|
227
227
|
126 => 'Canon TS-E 45mm f/2.8', #15
|
|
228
228
|
127 => 'Canon TS-E 90mm f/2.8 or Tamron Lens', #15
|
|
229
|
-
127.1 => 'Tamron 18-200mm f/3.5-6.3 Di II VC', #TomLachecki
|
|
229
|
+
127.1 => 'Tamron 18-200mm f/3.5-6.3 Di II VC (B018)', #TomLachecki
|
|
230
230
|
129 => 'Canon EF 300mm f/2.8L USM', #32
|
|
231
231
|
130 => 'Canon EF 50mm f/1.0L USM', #10/15
|
|
232
232
|
131 => 'Canon EF 28-80mm f/2.8-4L USM or Sigma Lens', #32
|
|
@@ -244,7 +244,7 @@ $VERSION = '4.29';
|
|
|
244
244
|
134 => 'Canon EF 600mm f/4L IS USM', #15
|
|
245
245
|
135 => 'Canon EF 200mm f/1.8L USM',
|
|
246
246
|
136 => 'Canon EF 300mm f/2.8L USM',
|
|
247
|
-
136.1 => 'Tamron SP 15-30mm f/2.8 Di VC USD', #TomLachecki
|
|
247
|
+
136.1 => 'Tamron SP 15-30mm f/2.8 Di VC USD (A012)', #TomLachecki
|
|
248
248
|
137 => 'Canon EF 85mm f/1.2L USM or Sigma or Tamron Lens', #10
|
|
249
249
|
137.1 => 'Sigma 18-50mm f/2.8-4.5 DC OS HSM', #PH
|
|
250
250
|
137.2 => 'Sigma 50-200mm f/4-5.6 DC OS HSM', #PH
|
|
@@ -254,10 +254,10 @@ $VERSION = '4.29';
|
|
|
254
254
|
137.6 => 'Sigma 17-70mm f/2.8-4 DC Macro OS HSM | C', #forum2819 (Contemporary version has this ID - PH)
|
|
255
255
|
137.7 => 'Sigma 17-50mm f/2.8 OS HSM', #47
|
|
256
256
|
137.8 => 'Sigma 18-200mm f/3.5-6.3 DC OS HSM [II]', #PH
|
|
257
|
-
137.9 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD', #
|
|
257
|
+
137.9 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD (B008)', #forum3090
|
|
258
258
|
'137.10' => 'Sigma 8-16mm f/4.5-5.6 DC HSM', #50-Zwielicht
|
|
259
|
-
'137.11' => 'Tamron SP 17-50mm f/2.8 XR Di II VC', #50
|
|
260
|
-
'137.12' => 'Tamron SP 60mm f/2 Macro Di II', #50
|
|
259
|
+
'137.11' => 'Tamron SP 17-50mm f/2.8 XR Di II VC (B005)', #50
|
|
260
|
+
'137.12' => 'Tamron SP 60mm f/2 Macro Di II (G005)', #50
|
|
261
261
|
'137.13' => 'Sigma 10-20mm f/3.5 EX DC HSM', #Gerald Erdmann
|
|
262
262
|
'137.14' => 'Tamron SP 24-70mm f/2.8 Di VC USD', #PH
|
|
263
263
|
'137.15' => 'Sigma 18-35mm f/1.8 DC HSM', #David Monro
|
|
@@ -292,7 +292,7 @@ $VERSION = '4.29';
|
|
|
292
292
|
153 => 'Canon EF 35-350mm f/3.5-5.6L USM or Sigma or Tamron Lens', #PH
|
|
293
293
|
153.1 => 'Sigma 50-500mm f/4-6.3 APO HSM EX', #15
|
|
294
294
|
153.2 => 'Tamron AF 28-300mm f/3.5-6.3 XR LD Aspherical [IF] Macro',
|
|
295
|
-
153.3 => 'Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical [IF] Macro
|
|
295
|
+
153.3 => 'Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical [IF] Macro (A14)', #15
|
|
296
296
|
153.4 => 'Tamron 18-250mm f/3.5-6.3 Di II LD Aspherical [IF] Macro', #PH
|
|
297
297
|
154 => 'Canon EF 20mm f/2.8 USM or Zeiss Lens', #15
|
|
298
298
|
154.1 => 'Zeiss Milvus 21mm f/2.8', #IB
|
|
@@ -301,8 +301,8 @@ $VERSION = '4.29';
|
|
|
301
301
|
155 => 'Canon EF 85mm f/1.8 USM or Sigma Lens',
|
|
302
302
|
155.1 => 'Sigma 14mm f/1.8 DG HSM | A', #IB (A017)
|
|
303
303
|
156 => 'Canon EF 28-105mm f/3.5-4.5 USM or Tamron Lens',
|
|
304
|
-
156.1 => 'Tamron SP 70-300mm f/4-5.6 Di VC USD', #PH
|
|
305
|
-
156.2 => 'Tamron SP AF 28-105mm f/2.8 LD Aspherical IF', #JR
|
|
304
|
+
156.1 => 'Tamron SP 70-300mm f/4-5.6 Di VC USD (A005)', #PH
|
|
305
|
+
156.2 => 'Tamron SP AF 28-105mm f/2.8 LD Aspherical IF (176D)', #JR
|
|
306
306
|
160 => 'Canon EF 20-35mm f/3.5-4.5 USM or Tamron or Tokina Lens',
|
|
307
307
|
160.1 => 'Tamron AF 19-35mm f/3.5-4.5', #44
|
|
308
308
|
160.2 => 'Tokina AT-X 124 AF Pro DX 12-24mm f/4', #49
|
|
@@ -315,7 +315,7 @@ $VERSION = '4.29';
|
|
|
315
315
|
161.3 => 'Sigma 24-60mm f/2.8 EX DG', #PH (http://www.lensrentals.com/blog/2012/08/canon-illumination-correction-and-third-party-lenses)
|
|
316
316
|
161.4 => 'Tamron AF 17-50mm f/2.8 Di-II LD Aspherical', #40
|
|
317
317
|
161.5 => 'Tamron 90mm f/2.8',
|
|
318
|
-
161.6 => 'Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF', #IB
|
|
318
|
+
161.6 => 'Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF (A05)', #IB
|
|
319
319
|
161.7 => 'Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro', #IB/NJ
|
|
320
320
|
161.8 => 'Tokina AT-X 24-70mm f/2.8 PRO FX (IF)', #IB
|
|
321
321
|
162 => 'Canon EF 200mm f/2.8L USM', #32
|
|
@@ -419,10 +419,10 @@ $VERSION = '4.29';
|
|
|
419
419
|
211 => 'Canon EF 28-200mm f/3.5-5.6 USM', #15
|
|
420
420
|
212 => 'Canon EF 28-105mm f/4-5.6 USM', #15
|
|
421
421
|
213 => 'Canon EF 90-300mm f/4.5-5.6 USM or Tamron Lens',
|
|
422
|
-
213.1 => 'Tamron SP 150-600mm f/5-6.3 Di VC USD', #
|
|
423
|
-
213.2 => 'Tamron 16-300mm f/3.5-6.3 Di II VC PZD Macro', #PH
|
|
424
|
-
213.3 => 'Tamron SP 35mm f/1.8 Di VC USD', #PH
|
|
425
|
-
213.4 => 'Tamron SP 45mm f/1.8 Di VC USD', #PH
|
|
422
|
+
213.1 => 'Tamron SP 150-600mm f/5-6.3 Di VC USD (A011)', #forum5565
|
|
423
|
+
213.2 => 'Tamron 16-300mm f/3.5-6.3 Di II VC PZD Macro (B016)', #PH
|
|
424
|
+
213.3 => 'Tamron SP 35mm f/1.8 Di VC USD (F012)', #PH
|
|
425
|
+
213.4 => 'Tamron SP 45mm f/1.8 Di VC USD (F013)', #PH
|
|
426
426
|
214 => 'Canon EF-S 18-55mm f/3.5-5.6 USM', #PH/34
|
|
427
427
|
215 => 'Canon EF 55-200mm f/4.5-5.6 II USM',
|
|
428
428
|
217 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD', #47
|
|
@@ -503,7 +503,7 @@ $VERSION = '4.29';
|
|
|
503
503
|
493.1 => 'Canon EF 24-105mm f/4L IS USM', #PH (should recheck this)
|
|
504
504
|
494 => 'Canon EF 600mm f/4L IS II USM', #PH
|
|
505
505
|
495 => 'Canon EF 24-70mm f/2.8L II USM or Sigma Lens', #PH
|
|
506
|
-
495.1 => 'Sigma 24-70mm
|
|
506
|
+
495.1 => 'Sigma 24-70mm f/2.8 DG OS HSM | A', #IB (017)
|
|
507
507
|
496 => 'Canon EF 200-400mm f/4L IS USM', #PH
|
|
508
508
|
499 => 'Canon EF 200-400mm f/4L IS USM + 1.4x', #50
|
|
509
509
|
502 => 'Canon EF 28mm f/2.8 IS USM or Tamron Lens', #PH
|
|
@@ -514,15 +514,16 @@ $VERSION = '4.29';
|
|
|
514
514
|
506 => 'Canon EF 400mm f/4 DO IS II USM', #42
|
|
515
515
|
507 => 'Canon EF 16-35mm f/4L IS USM', #42
|
|
516
516
|
508 => 'Canon EF 11-24mm f/4L USM or Tamron Lens', #PH
|
|
517
|
-
508.1 => 'Tamron 10-24mm f/3.5-4.5 Di II VC HLD', #PH
|
|
518
|
-
624 => 'Sigma 70-200mm
|
|
517
|
+
508.1 => 'Tamron 10-24mm f/3.5-4.5 Di II VC HLD (B023)', #PH
|
|
518
|
+
624 => 'Sigma 70-200mm f/2.8 DG OS HSM | S', #IB (018)
|
|
519
519
|
747 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM or Tamron Lens', #JR
|
|
520
520
|
747.1 => 'Tamron SP 150-600mm f/5-6.3 Di VC USD G2', #50
|
|
521
521
|
748 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x or Tamron Lens', #JR (1.4x Mk III)
|
|
522
522
|
748.1 => 'Tamron 100-400mm f/4.5-6.3 Di VC USD A035E + 1.4x', #IB
|
|
523
523
|
748.2 => 'Tamron 70-210mm f/4 Di VC USD (A034) + 2x', #IB
|
|
524
524
|
749 => 'Tamron 100-400mm f/4.5-6.3 Di VC USD A035E + 2x', #IB
|
|
525
|
-
750 => 'Canon EF 35mm f/1.4L II USM', #42
|
|
525
|
+
750 => 'Canon EF 35mm f/1.4L II USM or Tamron Lens', #42
|
|
526
|
+
750.1 => 'Tamron SP 85mm f/1.8 Di VC USD (F016)', #Exiv2#1072
|
|
526
527
|
751 => 'Canon EF 16-35mm f/2.8L III USM', #42
|
|
527
528
|
752 => 'Canon EF 24-105mm f/4L IS II USM', #42
|
|
528
529
|
753 => 'Canon EF 85mm f/1.4L IS USM', #42
|
|
@@ -61,7 +61,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
61
61
|
use Image::ExifTool::Exif;
|
|
62
62
|
use Image::ExifTool::GPS;
|
|
63
63
|
|
|
64
|
-
$VERSION = '3.
|
|
64
|
+
$VERSION = '3.76';
|
|
65
65
|
|
|
66
66
|
sub LensIDConv($$$);
|
|
67
67
|
sub ProcessNikonAVI($$$);
|
|
@@ -4493,6 +4493,7 @@ my %nikonFocalConversions = (
|
|
|
4493
4493
|
12 => 'Nikkor Z DX 50-250mm f/4.5-6.3 VR',
|
|
4494
4494
|
13 => 'Nikkor Z 24-70mm f/2.8 S',
|
|
4495
4495
|
14 => 'Nikkor Z 85mm f/1.8 S',
|
|
4496
|
+
15 => 'Nikkor Z 24mm f/1.8 S', #IB
|
|
4496
4497
|
},
|
|
4497
4498
|
},
|
|
4498
4499
|
0x36 => {
|
|
@@ -910,13 +910,15 @@ numerical, and generated automatically otherwise.
|
|
|
910
910
|
|
|
911
911
|
Hook : [BinaryData tags only] Expression to be evaluated when
|
|
912
912
|
extracting tag to allow dynamic Format, etc for BinaryData
|
|
913
|
-
tags. May access $self,
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
a
|
|
918
|
-
|
|
919
|
-
|
|
913
|
+
tags. May access $self, $size (the full size of the binary
|
|
914
|
+
data record), $dataPt (reference to the data block), and $pos
|
|
915
|
+
(position of this tag in the data block), and assign a new
|
|
916
|
+
value to $format to dynamically set the tag format, and/or
|
|
917
|
+
increment $varSize to add a byte offset to subsequent tags.
|
|
918
|
+
$varSize may be set to a large number to effectively abort
|
|
919
|
+
processing of the directory after this tag. Must have
|
|
920
|
+
corresponding DATAMEMBER entry in writable tables. Must not
|
|
921
|
+
have Unknown set.
|
|
920
922
|
|
|
921
923
|
LargeTag : [BinaryData tags only] Flag to indicate that the data for this
|
|
922
924
|
tag is large, and that it shouldn't be stored in the %val
|
|
@@ -22,7 +22,7 @@ use vars qw($VERSION %samsungLensTypes);
|
|
|
22
22
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
23
23
|
use Image::ExifTool::Exif;
|
|
24
24
|
|
|
25
|
-
$VERSION = '1.
|
|
25
|
+
$VERSION = '1.48';
|
|
26
26
|
|
|
27
27
|
sub WriteSTMN($$$);
|
|
28
28
|
sub ProcessINFO($$$);
|
|
@@ -1001,35 +1001,34 @@ my %formatMinMax = (
|
|
|
1001
1001
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
|
|
1002
1002
|
FIRST_ENTRY => 0,
|
|
1003
1003
|
FORMAT => 'int32u',
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1004
|
+
# This is a pain, but the DepthMapWidth/Height move around in this record.
|
|
1005
|
+
# In all of my samples so far, the bytes "01 00 ff ff" precede these tags.
|
|
1006
|
+
# I have seen this byte sequence at offsets 32, 60, 64 and 68, so look for
|
|
1007
|
+
# it in bytes 32-95, and use its location to adjust the tag positions
|
|
1008
|
+
8 => {
|
|
1009
|
+
Name => 'DualShotDummy',
|
|
1010
|
+
Format => 'undef[64]',
|
|
1011
|
+
Hidden => 1,
|
|
1012
|
+
Hook => q{
|
|
1013
|
+
if ($size >= 96) {
|
|
1014
|
+
my $tmp = substr($$dataPt, $pos, 64);
|
|
1015
|
+
if ($tmp =~ /\x01\0\xff\xff/g and not pos($tmp) % 4) {
|
|
1016
|
+
$$self{DepthMapTagPos} = pos($tmp);
|
|
1017
|
+
$varSize += $$self{DepthMapTagPos} - 32;
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
},
|
|
1021
|
+
RawConv => 'undef', # not a real tag
|
|
1017
1022
|
},
|
|
1018
1023
|
16 => {
|
|
1019
1024
|
Name => 'DepthMapWidth',
|
|
1020
|
-
Condition => '$$self{
|
|
1025
|
+
Condition => '$$self{DepthMapTagPos}',
|
|
1026
|
+
Notes => 'index varies depending on model',
|
|
1021
1027
|
},
|
|
1022
1028
|
17 => {
|
|
1023
1029
|
Name => 'DepthMapHeight',
|
|
1024
|
-
Condition => '$$self{
|
|
1025
|
-
|
|
1026
|
-
18 => {
|
|
1027
|
-
Name => 'DepthMapWidth',
|
|
1028
|
-
Condition => '$$self{DualShotVersion} > 4',
|
|
1029
|
-
},
|
|
1030
|
-
19 => {
|
|
1031
|
-
Name => 'DepthMapHeight',
|
|
1032
|
-
Condition => '$$self{DualShotVersion} > 4',
|
|
1030
|
+
Condition => '$$self{DepthMapTagPos}',
|
|
1031
|
+
Notes => 'index varies depending on model',
|
|
1033
1032
|
},
|
|
1034
1033
|
);
|
|
1035
1034
|
|
|
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
34
34
|
use Image::ExifTool::Exif;
|
|
35
35
|
use Image::ExifTool::Minolta;
|
|
36
36
|
|
|
37
|
-
$VERSION = '3.
|
|
37
|
+
$VERSION = '3.19';
|
|
38
38
|
|
|
39
39
|
sub ProcessSRF($$$);
|
|
40
40
|
sub ProcessSR2($$$);
|
|
@@ -176,6 +176,7 @@ sub PrintInvLensSpec($;$$);
|
|
|
176
176
|
49457 => 'Tamron 28-75mm F2.8 Di III RXD', #JR (Model A036)
|
|
177
177
|
49458 => 'Tamron 17-28mm F2.8 Di III RXD', #JR (Model A046)
|
|
178
178
|
49459 => 'Tamron 35mm F2.8 Di III OSD M1:2', #IB (Model F053)
|
|
179
|
+
49460 => 'Tamron 24mm F2.8 Di III OSD M1:2', #JR (Model F051)
|
|
179
180
|
|
|
180
181
|
49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
|
|
181
182
|
49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
|
|
@@ -215,6 +216,7 @@ sub PrintInvLensSpec($;$$);
|
|
|
215
216
|
50999 => 'Voigtlander COLOR-SKOPAR 21mm F3.5 Aspherical', #IB
|
|
216
217
|
51000 => 'Voigtlander NOKTON 50mm F1.2 Aspherical', #JR
|
|
217
218
|
51001 => 'Voigtlander NOKTON 21mm F1.4 Aspherical', #JR
|
|
219
|
+
51002 => 'Voigtlander APO-LANTHAR 50mm F2 Aspherical', #JR
|
|
218
220
|
|
|
219
221
|
# lenses listed in the Sigma MC-11 list, but not yet seen:
|
|
220
222
|
# 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014)
|
|
@@ -225,6 +227,7 @@ sub PrintInvLensSpec($;$$);
|
|
|
225
227
|
51505.1 => 'Samyang AF 35mm F2.8', #PH (also 32794)
|
|
226
228
|
51507 => 'Samyang AF 35mm F1.4', #IB
|
|
227
229
|
51508 => 'Samyang AF 45mm F1.8',
|
|
230
|
+
51510 => 'Samyang AF 18mm F2.8', #JR
|
|
228
231
|
);
|
|
229
232
|
|
|
230
233
|
# ExposureProgram values (ref PH, mainly decoded from A200)
|
|
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
|
|
|
12
12
|
=head1 TAG TABLES
|
|
13
13
|
|
|
14
14
|
The tables listed below give the names of all tags recognized by ExifTool.
|
|
15
|
-
They contain a total of
|
|
15
|
+
They contain a total of 23192 tags, with 15163 unique tag names.
|
|
16
16
|
|
|
17
17
|
B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
|
|
18
18
|
table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
|
|
@@ -16054,17 +16054,10 @@ as the Galaxy S4 and Tab S.
|
|
|
16054
16054
|
|
|
16055
16055
|
=head3 Samsung DualShotExtra Tags
|
|
16056
16056
|
|
|
16057
|
-
These tags tested only for DualShotVersion numbers 1, 4 and 5.
|
|
16058
|
-
|
|
16059
16057
|
Index4 Tag Name Writable
|
|
16060
16058
|
------ -------- --------
|
|
16061
|
-
0 DualShotVersion no
|
|
16062
|
-
9 DepthMapWidth no
|
|
16063
|
-
10 DepthMapHeight no
|
|
16064
16059
|
16 DepthMapWidth no
|
|
16065
16060
|
17 DepthMapHeight no
|
|
16066
|
-
18 DepthMapWidth no
|
|
16067
|
-
19 DepthMapHeight no
|
|
16068
16061
|
|
|
16069
16062
|
=head3 Samsung SingleShotMeta Tags
|
|
16070
16063
|
|
|
@@ -82,6 +82,8 @@ my %qtFormat = (
|
|
|
82
82
|
);
|
|
83
83
|
my $undLang = 0x55c4; # numeric code for default ('und') language
|
|
84
84
|
|
|
85
|
+
my $maxReadLen = 100000000; # maximum size of atom to read into memory (100 MB)
|
|
86
|
+
|
|
85
87
|
# boxes that may exist in an "empty" Meta box:
|
|
86
88
|
my %emptyMeta = (
|
|
87
89
|
hdlr => 'Handler', 'keys' => 'Keys', lang => 'Language', ctry => 'Country', free => 'Free',
|
|
@@ -849,17 +851,35 @@ sub WriteQuickTime($$$)
|
|
|
849
851
|
}
|
|
850
852
|
|
|
851
853
|
# read the atom data
|
|
854
|
+
my $got;
|
|
852
855
|
if (not $size) {
|
|
853
856
|
$buff = '';
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
$
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
$
|
|
862
|
-
|
|
857
|
+
$got = 0;
|
|
858
|
+
} else {
|
|
859
|
+
# read the atom data (but only first 64kB if data is huge)
|
|
860
|
+
$got = $raf->Read($buff, $size > $maxReadLen ? 0x10000 : $size);
|
|
861
|
+
}
|
|
862
|
+
if ($got != $size) {
|
|
863
|
+
# ignore up to 256 bytes of garbage at end of file
|
|
864
|
+
if ($got <= 256 and $size >= 1024 and $tag ne 'mdat') {
|
|
865
|
+
my $bytes = $got + length $hdr;
|
|
866
|
+
if ($$et{OPTIONS}{IgnoreMinorErrors}) {
|
|
867
|
+
$et->Warn("Deleted garbage at end of file ($bytes bytes)");
|
|
868
|
+
$buff = $hdr = '';
|
|
869
|
+
} else {
|
|
870
|
+
$et->Error("Possible garbage at end of file ($bytes bytes)", 1);
|
|
871
|
+
return $rtnVal;
|
|
872
|
+
}
|
|
873
|
+
} else {
|
|
874
|
+
$tag = PrintableTagID($tag,3);
|
|
875
|
+
if ($size > $maxReadLen and $got == 0x10000) {
|
|
876
|
+
my $mb = int($size / 0x100000 + 0.5);
|
|
877
|
+
$et->Error("'${tag}' atom is too large for rewriting ($mb MB)");
|
|
878
|
+
} else {
|
|
879
|
+
$et->Error("Truncated '${tag}' atom");
|
|
880
|
+
}
|
|
881
|
+
return $rtnVal;
|
|
882
|
+
}
|
|
863
883
|
}
|
|
864
884
|
# save the handler type for this track
|
|
865
885
|
if ($tag eq 'hdlr' and length $buff >= 12) {
|
|
@@ -859,7 +859,7 @@ sub WriteXMP($$;$)
|
|
|
859
859
|
#
|
|
860
860
|
if (%{$$et{DEL_GROUP}} and (grep /^XMP-.+$/, keys %{$$et{DEL_GROUP}} or
|
|
861
861
|
# (logic is a bit more complex for group names in exiftool XML files)
|
|
862
|
-
grep m{^http://ns.exiftool.ca/}, values %nsUsed))
|
|
862
|
+
grep m{^http://ns.exiftool.(?:ca|org)/}, values %nsUsed))
|
|
863
863
|
{
|
|
864
864
|
my $del = $$et{DEL_GROUP};
|
|
865
865
|
my $path;
|
|
@@ -870,7 +870,7 @@ sub WriteXMP($$;$)
|
|
|
870
870
|
$ns = $stdXlatNS{$ns} if $stdXlatNS{$ns};
|
|
871
871
|
my ($grp, @g);
|
|
872
872
|
# no "XMP-" added to most groups in exiftool RDF/XML output file
|
|
873
|
-
if ($nsUsed{$ns} and (@g = ($nsUsed{$ns} =~ m{^http://ns.exiftool.ca/(.*?)/(.*?)/}))) {
|
|
873
|
+
if ($nsUsed{$ns} and (@g = ($nsUsed{$ns} =~ m{^http://ns.exiftool.(?:ca|org)/(.*?)/(.*?)/}))) {
|
|
874
874
|
if ($g[1] =~ /^\d/) {
|
|
875
875
|
$grp = "XML-$g[0]";
|
|
876
876
|
#(all XML-* groups stored as uppercase DEL_GROUP key)
|
|
@@ -1461,7 +1461,7 @@ sub WriteXMP($$;$)
|
|
|
1461
1461
|
my @ns = sort keys %nsCur;
|
|
1462
1462
|
$long[-2] .= "$nl$sp<$prop rdf:about='${about}'";
|
|
1463
1463
|
# generate et:toolkit attribute if this is an exiftool RDF/XML output file
|
|
1464
|
-
if (@ns and $nsCur{$ns[0]} =~ m{^http://ns.exiftool.ca/}) {
|
|
1464
|
+
if (@ns and $nsCur{$ns[0]} =~ m{^http://ns.exiftool.(?:ca|org)/}) {
|
|
1465
1465
|
$long[-2] .= "\n$sp${sp}xmlns:et='http://ns.exiftool.ca/1.0/'" .
|
|
1466
1466
|
" et:toolkit='Image::ExifTool $Image::ExifTool::VERSION'";
|
|
1467
1467
|
}
|
|
@@ -186,7 +186,7 @@ my %xmpNS = (
|
|
|
186
186
|
);
|
|
187
187
|
|
|
188
188
|
# build reverse namespace lookup
|
|
189
|
-
my %uri2ns;
|
|
189
|
+
my %uri2ns = ( 'http://ns.exiftool.org/1.0/' => 'et' ); # (allow exiftool.org as well as exiftool.ca)
|
|
190
190
|
{
|
|
191
191
|
my $ns;
|
|
192
192
|
foreach $ns (keys %nsURI) {
|
|
@@ -3103,7 +3103,7 @@ NoLoop:
|
|
|
3103
3103
|
|
|
3104
3104
|
# add tag Namespace entry for tags in variable-namespace tables
|
|
3105
3105
|
$$tagInfo{Namespace} = $xns if $xns;
|
|
3106
|
-
if ($$et{curURI}{$ns} and $$et{curURI}{$ns} =~ m{^http://ns.exiftool.ca/(.*?)/(.*?)/}) {
|
|
3106
|
+
if ($$et{curURI}{$ns} and $$et{curURI}{$ns} =~ m{^http://ns.exiftool.(?:ca|org)/(.*?)/(.*?)/}) {
|
|
3107
3107
|
my %grps = ( 0 => $1, 1 => $2 );
|
|
3108
3108
|
# apply a little magic to recover original group names
|
|
3109
3109
|
# from this exiftool-written RDF/XML file
|
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: 11.
|
|
4
|
+
version: 11.80.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: 2019-12-
|
|
12
|
+
date: 2019-12-17 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: exiftool
|