exiftool_vendored 11.44.0 → 11.47.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +37 -0
- data/bin/MANIFEST +4 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -2
- data/bin/config_files/example.config +5 -0
- data/bin/config_files/mini0806.config +99 -0
- data/bin/exiftool +2 -2
- data/bin/lib/Image/ExifTool.pm +12 -7
- data/bin/lib/Image/ExifTool.pod +10 -2
- data/bin/lib/Image/ExifTool/Canon.pm +39 -5
- data/bin/lib/Image/ExifTool/CanonVRD.pm +24 -2
- data/bin/lib/Image/ExifTool/ID3.pm +2 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +3 -2
- data/bin/lib/Image/ExifTool/Olympus.pm +2 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +1 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +117 -69
- data/bin/lib/Image/ExifTool/README +1 -0
- data/bin/lib/Image/ExifTool/TagLookup.pm +3 -0
- data/bin/lib/Image/ExifTool/TagNames.pod +47 -15
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +434 -132
- data/bin/lib/Image/ExifTool/Writer.pl +35 -15
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
@@ -136,15 +136,22 @@ my @delGroups = qw(
|
|
136
136
|
Adobe AFCP APP0 APP1 APP2 APP3 APP4 APP5 APP6 APP7 APP8 APP9 APP10 APP11
|
137
137
|
APP12 APP13 APP14 APP15 CanonVRD CIFF Ducky EXIF ExifIFD File FlashPix
|
138
138
|
FotoStation GlobParamIFD GPS ICC_Profile IFD0 IFD1 InteropIFD IPTC ItemList
|
139
|
-
JFIF Jpeg2000 MakerNotes Meta MetaIFD MIE MPF NikonCapture PDF
|
140
|
-
PhotoMechanic Photoshop PNG PNG-pHYs PrintIM QuickTime RMETA RSRC
|
141
|
-
Trailer UserData XML XML-* XMP XMP-*
|
139
|
+
JFIF Jpeg2000 Keys MakerNotes Meta MetaIFD MIE MPF NikonCapture PDF
|
140
|
+
PDF-update PhotoMechanic Photoshop PNG PNG-pHYs PrintIM QuickTime RMETA RSRC
|
141
|
+
SubIFD Trailer UserData XML XML-* XMP XMP-*
|
142
142
|
);
|
143
143
|
# family 2 group names that we can delete
|
144
144
|
my @delGroup2 = qw(
|
145
145
|
Audio Author Camera Document ExifTool Image Location Other Preview Printing
|
146
146
|
Time Video
|
147
147
|
);
|
148
|
+
# Extra groups to delete when deleting another group
|
149
|
+
my %delMore = (
|
150
|
+
QuickTime => [ qw(ItemList UserData Keys) ],
|
151
|
+
XMP => [ 'XMP-*' ],
|
152
|
+
XML => [ 'XML-*' ],
|
153
|
+
);
|
154
|
+
|
148
155
|
# family 0 groups where directories should never be deleted
|
149
156
|
my %permanentDir = ( QuickTime => 1 );
|
150
157
|
|
@@ -181,6 +188,7 @@ my %excludeGroups = (
|
|
181
188
|
CanonVRD => [ 'Trailer' ],
|
182
189
|
PhotoMechanic=> [ 'Trailer' ],
|
183
190
|
MIE => [ 'Trailer' ],
|
191
|
+
QuickTime => [ qw(ItemList UserData Keys) ],
|
184
192
|
);
|
185
193
|
# translate (lower case) wanted group when writing for tags where group name may change
|
186
194
|
my %translateWantGroup = (
|
@@ -436,10 +444,9 @@ sub SetNewValue($;$$%)
|
|
436
444
|
}
|
437
445
|
} else {
|
438
446
|
$$delGroup{$grp} = 1;
|
439
|
-
# add
|
440
|
-
if ($grp
|
441
|
-
$$delGroup{
|
442
|
-
push @donegrps, "$grp-*";
|
447
|
+
# add extra groups to delete if necessary
|
448
|
+
if ($delMore{$grp}) {
|
449
|
+
$$delGroup{$_} = 1, push @donegrps, $_ foreach @{$delMore{$grp}};
|
443
450
|
}
|
444
451
|
# remove all of this group from previous new values
|
445
452
|
$self->RemoveNewValuesForGroup($grp);
|
@@ -583,7 +590,7 @@ sub SetNewValue($;$$%)
|
|
583
590
|
# the highest priority group
|
584
591
|
#
|
585
592
|
my (@tagInfoList, @writeAlsoList, %writeGroup, %preferred, %tagPriority);
|
586
|
-
my (%avoid, $wasProtected, $noCreate, %highestPriority);
|
593
|
+
my (%avoid, $wasProtected, $noCreate, %highestPriority, %highestQT);
|
587
594
|
|
588
595
|
TAG: foreach $tagInfo (@matchingTags) {
|
589
596
|
$tag = $$tagInfo{Name}; # get tag name for warnings
|
@@ -591,6 +598,7 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
591
598
|
# initialize highest priority if we are starting a new tag
|
592
599
|
$highestPriority{$lcTag} = -999 unless defined $highestPriority{$lcTag};
|
593
600
|
my ($priority, $writeGroup);
|
601
|
+
my $prfTag = defined $$tagInfo{Preferred} ? $$tagInfo{Preferred} : $$tagInfo{Table}{PREFERRED};
|
594
602
|
if ($wantGroup) {
|
595
603
|
# a WriteGroup of All is special
|
596
604
|
my $wgAll = ($$tagInfo{WriteGroup} and $$tagInfo{WriteGroup} eq 'All');
|
@@ -600,9 +608,8 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
600
608
|
my ($fam, $lcWant) = @$fg;
|
601
609
|
$lcWant = $translateWantGroup{$lcWant} if $translateWantGroup{$lcWant};
|
602
610
|
# only set tag in specified group
|
603
|
-
my $prf = defined $$tagInfo{Preferred} ? $$tagInfo{Preferred} : $$tagInfo{Table}{PREFERRED};
|
604
611
|
# bump priority of preferred tag
|
605
|
-
$hiPri += $
|
612
|
+
$hiPri += $prfTag if $prfTag;
|
606
613
|
if (not defined $fam) {
|
607
614
|
if ($lcWant eq lc $grp[0]) {
|
608
615
|
# don't go to more general write group of "All"
|
@@ -634,9 +641,10 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
634
641
|
if ($grp[1] eq 'Track#') {
|
635
642
|
next TAG unless $movGroup and $lcWant eq lc($movGroup);
|
636
643
|
$writeGroup = $movGroup;
|
637
|
-
}
|
638
|
-
|
639
|
-
$
|
644
|
+
} else {
|
645
|
+
my $grp = $$tagInfo{Table}{WRITE_GROUP};
|
646
|
+
next TAG unless $grp and $lcWant eq lc $grp;
|
647
|
+
$writeGroup = $grp;
|
640
648
|
}
|
641
649
|
} elsif ($grp[0] eq 'MIE') {
|
642
650
|
next TAG unless $mieGroup and $lcWant eq lc($mieGroup);
|
@@ -688,6 +696,8 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
688
696
|
$priority = $$self{WRITE_PRIORITY}{lc($group0)} || 0;
|
689
697
|
}
|
690
698
|
}
|
699
|
+
# adjust priority based on Preferred level for this tag
|
700
|
+
$priority += $prfTag if $prfTag;
|
691
701
|
}
|
692
702
|
# don't write tag if protected
|
693
703
|
my $prot = $$tagInfo{Protected};
|
@@ -706,6 +716,9 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
706
716
|
}
|
707
717
|
# set priority for this tag
|
708
718
|
$tagPriority{$tagInfo} = $priority;
|
719
|
+
# keep track of highest priority QuickTime tag
|
720
|
+
$highestQT{$lcTag} = $priority if $$table{GROUPS}{0} eq 'QuickTime' and
|
721
|
+
(not defined $highestQT{$lcTag} or $highestQT{$lcTag} < $priority);
|
709
722
|
if ($priority > $highestPriority{$lcTag}) {
|
710
723
|
$highestPriority{$lcTag} = $priority;
|
711
724
|
$preferred{$lcTag} = { $tagInfo => 1 };
|
@@ -794,7 +807,8 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
794
807
|
$writeGroup eq 'MakerNotes' and $permanent = 1 unless defined $permanent;
|
795
808
|
my $wgrp1 = $self->GetWriteGroup1($tagInfo, $writeGroup);
|
796
809
|
$tag = $$tagInfo{Name}; # get tag name for warnings
|
797
|
-
my $
|
810
|
+
my $lcTag = lc $tag;
|
811
|
+
my $pref = $preferred{$lcTag} || { };
|
798
812
|
my $shift = $options{Shift};
|
799
813
|
my $addValue = $options{AddValue};
|
800
814
|
if (defined $shift) {
|
@@ -981,6 +995,10 @@ TAG: foreach $tagInfo (@matchingTags) {
|
|
981
995
|
# (will only create the priority tag if it doesn't exist,
|
982
996
|
# others get changed only if they already exist)
|
983
997
|
my $prf = defined $$tagInfo{Preferred} ? $$tagInfo{Preferred} : $$tagInfo{Table}{PREFERRED};
|
998
|
+
# hack to prefer only a single tag in the QuickTime group
|
999
|
+
if ($$tagInfo{Table}{GROUPS}{0} eq 'QuickTime') {
|
1000
|
+
$prf = 0 if $tagPriority{$tagInfo} < $highestQT{$lcTag};
|
1001
|
+
}
|
984
1002
|
if ($$pref{$tagInfo} or $prf) {
|
985
1003
|
if ($permanent or $shift) {
|
986
1004
|
# don't create permanent or Shift-ed tag but define IsCreating
|
@@ -4029,7 +4047,9 @@ sub WriteDirectory($$$;$)
|
|
4029
4047
|
return $newVal;
|
4030
4048
|
}
|
4031
4049
|
# guard against writing the same directory twice
|
4032
|
-
if (defined $dataPt and defined $$dirInfo{DirStart} and defined $$dirInfo{DataPos}
|
4050
|
+
if (defined $dataPt and defined $$dirInfo{DirStart} and defined $$dirInfo{DataPos} and
|
4051
|
+
not $$dirInfo{NoRefTest})
|
4052
|
+
{
|
4033
4053
|
my $addr = $$dirInfo{DirStart} + $$dirInfo{DataPos} + ($$dirInfo{Base}||0) + $$self{BASE};
|
4034
4054
|
# (Phase One P25 IIQ files have ICC_Profile duplicated in IFD0 and IFD1)
|
4035
4055
|
if ($$self{PROCESSED}{$addr} and ($dirName ne 'ICC_Profile' or $$self{TIFF_TYPE} ne 'IIQ')) {
|
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.47.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-05-
|
12
|
+
date: 2019-05-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: exiftool
|
@@ -197,6 +197,7 @@ files:
|
|
197
197
|
- bin/config_files/example.config
|
198
198
|
- bin/config_files/fotoware.config
|
199
199
|
- bin/config_files/gps2utm.config
|
200
|
+
- bin/config_files/mini0806.config
|
200
201
|
- bin/config_files/nksc.config
|
201
202
|
- bin/config_files/photoshop_paths.config
|
202
203
|
- bin/config_files/picasa_faces.config
|