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.

@@ -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 PDF-update
140
- PhotoMechanic Photoshop PNG PNG-pHYs PrintIM QuickTime RMETA RSRC SubIFD
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 flag for XMP/XML family 1 groups if deleting all XMP
440
- if ($grp =~ /^XM[LP]$/) {
441
- $$delGroup{"$grp-*"} = 1;
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 += $prf if $prf;
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
- } elsif ($$tagInfo{Table}{WRITE_GROUP}) {
638
- next TAG unless $lcWant eq lc $$tagInfo{Table}{WRITE_GROUP};
639
- $writeGroup = $$tagInfo{Table}{WRITE_GROUP};
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 $pref = $preferred{lc $tag} || { };
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')) {
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 11.44
3
+ Version: 11.47
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ExiftoolVendored
4
- VERSION = Gem::Version.new('11.44.0')
4
+ VERSION = Gem::Version.new('11.47.0')
5
5
  end
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.44.0
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-21 00:00:00.000000000 Z
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