Skip to content

Commit c2d9ec7

Browse files
author
Woss Bot
committed
Update exiftool to version 13.48
1 parent 5b6c00d commit c2d9ec7

File tree

6 files changed

+52
-20
lines changed

6 files changed

+52
-20
lines changed

exiftool/exiftool

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use strict;
1111
use warnings;
1212
require 5.004;
1313

14-
my $version = '13.47';
14+
my $version = '13.48';
1515

1616
$^W = 1; # enable global warnings
1717

@@ -6136,7 +6136,7 @@ with this command:
61366136
61376137
produces output like this:
61386138
6139-
-- Generated by ExifTool 13.47 --
6139+
-- Generated by ExifTool 13.48 --
61406140
File: a.jpg - 2003:10:31 15:44:19
61416141
(f/5.6, 1/60s, ISO 100)
61426142
File: b.jpg - 2006:05:23 11:57:38

exiftool/lib/Image/ExifTool.pm

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
2929
%jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
3030
%static_vars $advFmtSelf $configFile @configFiles $noConfig);
3131

32-
$VERSION = '13.47';
32+
$VERSION = '13.48';
3333
$RELEASE = '';
3434
@ISA = qw(Exporter);
3535
%EXPORT_TAGS = (
@@ -1045,8 +1045,8 @@ $testLen = 1024; # number of bytes to read when testing for magic number
10451045
# file types with weak magic number recognition
10461046
my %weakMagic = ( MP3 => 1 );
10471047

1048-
# file types that are determined by the process proc when FastScan == 3
1049-
# (when done, the process proc must exit after SetFileType if FastScan is 3)
1048+
# file types that are determined by the process proc when FastScan > 2
1049+
# (when done, the process proc must exit after SetFileType if FastScan is > 2)
10501050
my %processType = map { $_ => 1 } qw(JPEG TIFF XMP AIFF EXE Font PS Real VCard TXT);
10511051

10521052
# Compact/XMPShorthand option settings
@@ -3015,8 +3015,8 @@ sub ExtractInfo($;@)
30153015
# save file type in member variable
30163016
$$self{FILE_TYPE} = $type;
30173017
$dirInfo{Parent} = ($type eq 'TIFF') ? $tiffType : $type;
3018-
# don't process the file when FastScan == 3
3019-
if ($fast == 3 and not $processType{$type}) {
3018+
# don't process the file when FastScan > 2
3019+
if ($fast > 2 and not $processType{$type}) {
30203020
unless ($weakMagic{$type} and (not $ext or $ext ne $type)) {
30213021
$self->SetFileType($dirInfo{Parent});
30223022
}
@@ -7256,7 +7256,7 @@ sub ProcessJPEG($$;$)
72567256
}
72577257
if (not $$self{VALUE}{FileType} or ($$self{DOC_NUM} and $$options{ExtractEmbedded})) {
72587258
$self->SetFileType(); # set FileType tag
7259-
return 1 if $fast == 3; # don't process file when FastScan == 3
7259+
return 1 if $fast > 2; # don't process file when FastScan > 2
72607260
$$self{LOW_PRIORITY_DIR}{IFD1} = 1; # lower priority of IFD1 tags
72617261
}
72627262
$$raf{NoBuffer} = 1 if $self->Options('FastScan'); # disable buffering in FastScan mode
@@ -8636,8 +8636,8 @@ sub DoProcessTIFF($$;$)
86368636
my $t = ($baseType eq 'TIFF' or $fileType =~ /RAW/) ? $fileType : undef;
86378637
$self->SetFileType($t);
86388638
}
8639-
# don't process file if FastScan == 3
8640-
return 1 if not $outfile and $$self{OPTIONS}{FastScan} and $$self{OPTIONS}{FastScan} == 3;
8639+
# don't process file if FastScan > 2
8640+
return 1 if not $outfile and $$self{OPTIONS}{FastScan} and $$self{OPTIONS}{FastScan} > 2;
86418641
}
86428642
# (accommodate CR3 images which have a TIFF directory with ExifIFD at the top level)
86438643
my $ifdName = ($$dirInfo{DirName} and $$dirInfo{DirName} =~ /^(ExifIFD|GPS)$/) ? $1 : 'IFD0';
@@ -9288,6 +9288,9 @@ sub HandleTag($$$$;%)
92889288
}
92899289
if ($tagInfo) {
92909290
if ($subdir) {
9291+
if ($$tagInfo{MakerNotes} and $$self{OPTIONS}{FastScan} and $$self{OPTIONS}{FastScan} > 1) {
9292+
return undef; # don't process maker note directories when FastScan > 1
9293+
}
92919294
my $subdirStart = $parms{Start};
92929295
my $subdirLen = $parms{Size};
92939296
if ($$tagInfo{RawConv} and not $$tagInfo{Writable}) {

exiftool/lib/Image/ExifTool/Canon.pm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9728,6 +9728,7 @@ my %filterConv = (
97289728
},
97299729
0x927c => {
97309730
Name => 'MakerNoteCanon',
9731+
MakerNotes => 1,
97319732
SubDirectory => {
97329733
TagTable => 'Image::ExifTool::Canon::Main',
97339734
ProcessProc => \&Image::ExifTool::ProcessTIFF,

exiftool/lib/Image/ExifTool/Geotag.pm

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ use vars qw($VERSION);
3636
use Image::ExifTool qw(:Public);
3737
use Image::ExifTool::GPS;
3838

39-
$VERSION = '1.86';
39+
$VERSION = '1.87';
4040

4141
sub JITTER() { return 2 } # maximum time jitter
4242

@@ -137,6 +137,31 @@ my %otherConv = (
137137

138138
my $secPerDay = 24 * 3600; # a useful constant
139139

140+
#------------------------------------------------------------------------------
141+
# Split a line of CSV
142+
# Inputs: 0) line to split, 1) delimiter
143+
# Returns: list of items
144+
sub SplitCSV($$)
145+
{
146+
my ($line, $delim) = @_;
147+
my @toks = split /\Q$delim/, $line;
148+
my (@vals, $v);
149+
while (@toks) {
150+
($v = shift @toks) =~ s/^ +//; # remove leading spaces
151+
if ($v =~ s/^"//) {
152+
# quoted value must end in an odd number of quotes
153+
while ($v !~ /("+)\s*$/ or not length($1) & 1) {
154+
last unless @toks;
155+
$v .= $delim . shift @toks;
156+
}
157+
$v =~ s/"\s*$//; # remove trailing quote and whitespace
158+
$v =~ s/""/"/g; # un-escape quotes
159+
}
160+
push @vals, $v;
161+
}
162+
return @vals;
163+
}
164+
140165
#------------------------------------------------------------------------------
141166
# Load GPS track log file
142167
# Inputs: 0) ExifTool ref, 1) track log data or file name
@@ -281,7 +306,7 @@ sub LoadTrackLog($$;$)
281306
$format = 'Bramor';
282307
} elsif (((/\b(GPS)?Date/i and /\b(GPS)?(Date)?Time/i) or /\bTime\(seconds\)/i) and /\Q$csvDelim/) {
283308
chomp;
284-
@csvHeadings = split /\Q$csvDelim/;
309+
@csvHeadings = SplitCSV($_, $csvDelim);
285310
my $isColumbus = ($csvHeadings[0] and $csvHeadings[0] eq 'INDEX'); # (Columbus GPS logger)
286311
$format = 'CSV';
287312
# convert recognized headings to our parameter names
@@ -382,7 +407,8 @@ sub LoadTrackLog($$;$)
382407
# parse attributes (eg. GPX 'lat' and 'lon')
383408
# (note: ignore namespace prefixes if they exist)
384409
if ($arg =~ /^(\w+:)?(\w+)=(['"])(.*?)\3/g) {
385-
my $tag = $xmlTag{lc $2} || $userTag{lc $2};
410+
my $tag = $xmlTag{lc $2};
411+
$tag = $userTag{lc $2} unless defined $tag;
386412
if ($tag) {
387413
$$fix{$tag} = $4;
388414
if ($keyCategory{$tag}) {
@@ -399,7 +425,8 @@ sub LoadTrackLog($$;$)
399425
# loop through XML elements
400426
while ($arg =~ m{([^<>]*)<(/)?(\w+:)?(\w+)(>|$)}g) {
401427
$tok = lc $4;
402-
my $tag = $xmlTag{$tok} || $userTag{$tok};
428+
my $tag = $xmlTag{$tok};
429+
$tag = $userTag{$tok} unless defined $tag;
403430
# parse as a simple property if this element has a value
404431
if (defined $tag and not $tag) {
405432
# a containing property was opened or closed
@@ -530,7 +557,7 @@ DoneFix: $isDate = 1;
530557
goto DoneFix; # save this fix
531558
} elsif ($format eq 'CSV') {
532559
chomp;
533-
my @vals = split /\Q$csvDelim/;
560+
my @vals = SplitCSV($_, $csvDelim);
534561
#
535562
# CSV format output of GPS/IMU POS system
536563
# Date* - date in DD/MM/YYYY format
@@ -1557,8 +1584,7 @@ sub ConvertGeosync($$)
15571584
# Returns: UTC time string with fractional seconds
15581585
sub PrintFixTime($)
15591586
{
1560-
my $time = $_[0] + 0.0005; # round off to nearest ms
1561-
my $fsec = int(($time - int($time)) * 1000);
1587+
my $time = shift;
15621588
return Image::ExifTool::ConvertUnixTime($time, undef, 3) . ' UTC';
15631589
}
15641590

exiftool/lib/Image/ExifTool/Nikon.pm

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ use Image::ExifTool::Exif;
6565
use Image::ExifTool::GPS;
6666
use Image::ExifTool::XMP;
6767

68-
$VERSION = '4.52';
68+
$VERSION = '4.53';
6969

7070
sub LensIDConv($$$);
7171
sub ProcessNikonAVI($$$);
@@ -576,6 +576,7 @@ sub GetAFPointGrid($$;$);
576576
'00 40 2D 88 2C 40 00 06' => 'Tamron AF 18-250mm f/3.5-6.3 Di II LD Aspherical (IF) Macro (A18NII)', #JD
577577
'F5 40 2C 8A 2C 40 40 0E' => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical (IF) Macro (B003)',
578578
'F0 3F 2D 8A 2C 40 DF 0E' => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD (B008)',
579+
'E0 40 2D 98 2C 41 DF 0E' => 'Tamron 18-400mm f/3.5-6.3 Di II VC HLD (B028)', #github385 (D90)
579580
'E0 40 2D 98 2C 41 DF 4E' => 'Tamron 18-400mm f/3.5-6.3 Di II VC HLD (B028)', # (removed AF designation, ref 37)
580581
'07 40 2F 44 2C 34 03 02' => 'Tamron AF 19-35mm f/3.5-4.5 (A10)',
581582
'07 40 30 45 2D 35 03 02.1' => 'Tamron AF 19-35mm f/3.5-4.5 (A10)',
@@ -9389,7 +9390,7 @@ my %nikonFocalConversions = (
93899390
%binaryDataAttrs,
93909391
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
93919392
NOTES => 'These tags are used by the Z6III.',
9392-
DATAMEMBER => [ 360, 444, 492, 496, 724, 748, 832, 838, 852, 880, 904, 1050 ],
9393+
DATAMEMBER => [ 360, 364, 444, 492, 496, 724, 748, 832, 838, 852, 880, 904, 1050 ],
93939394
IS_SUBDIR => [ 1255 ],
93949395
360 => {
93959396
Name => 'SingleFrame', #0=> Single Frame 1=> one of the continuous modes
@@ -9399,6 +9400,7 @@ my %nikonFocalConversions = (
93999400
364 => {
94009401
Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
94019402
PrintConv => \%highFrameRateZ9,
9403+
Hook => '$varSize += 4 if $$self{FirmwareVersion} and $$self{FirmwareVersion} ge "02.00"',
94029404
},
94039405
444 => {
94049406
Name => 'MultipleExposureMode',

exiftool/lib/Image/ExifTool/QuickTime.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10325,7 +10325,7 @@ ItemID: foreach $id (reverse sort { $a <=> $b } keys %$items) {
1032510325
if ($tag eq 'ipco' and not $$et{IsItemProperty}) {
1032610326
$$et{ItemPropertyContainer} = [ \%dirInfo, $subTable, $proc ];
1032710327
$et->VPrint(0,"$$et{INDENT}\[Process ipco box later]");
10328-
} else {
10328+
} elsif ($fast < 2 or not $$tagInfo{MakerNotes}) {
1032910329
$et->ProcessDirectory(\%dirInfo, $subTable, $proc);
1033010330
}
1033110331
}

0 commit comments

Comments
 (0)