exiftool_vendored 12.68.0 → 12.70.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 +63 -15
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +13 -13
- data/bin/lib/Image/ExifTool/CBOR.pm +18 -2
- data/bin/lib/Image/ExifTool/Canon.pm +68 -16
- data/bin/lib/Image/ExifTool/DJI.pm +3 -2
- data/bin/lib/Image/ExifTool/DNG.pm +25 -2
- data/bin/lib/Image/ExifTool/EXE.pm +54 -6
- data/bin/lib/Image/ExifTool/Exif.pm +175 -14
- data/bin/lib/Image/ExifTool/FujiFilm.pm +142 -20
- data/bin/lib/Image/ExifTool/GIF.pm +5 -1
- data/bin/lib/Image/ExifTool/ID3.pm +70 -7
- data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
- data/bin/lib/Image/ExifTool/JPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +30 -15
- data/bin/lib/Image/ExifTool/MakerNotes.pm +2 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +58 -18
- data/bin/lib/Image/ExifTool/Olympus.pm +7 -1
- data/bin/lib/Image/ExifTool/PNG.pm +8 -13
- data/bin/lib/Image/ExifTool/Panasonic.pm +15 -2
- data/bin/lib/Image/ExifTool/PhotoMechanic.pm +2 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +32 -5
- data/bin/lib/Image/ExifTool/README +14 -5
- data/bin/lib/Image/ExifTool/RIFF.pm +60 -10
- data/bin/lib/Image/ExifTool/Sony.pm +95 -34
- data/bin/lib/Image/ExifTool/TagLookup.pm +6937 -6714
- data/bin/lib/Image/ExifTool/TagNames.pod +812 -332
- data/bin/lib/Image/ExifTool/Text.pm +4 -5
- data/bin/lib/Image/ExifTool/Validate.pm +23 -20
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +2 -2
- data/bin/lib/Image/ExifTool/WriteExif.pl +14 -4
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -0
- data/bin/lib/Image/ExifTool/WriteRIFF.pl +31 -6
- data/bin/lib/Image/ExifTool/Writer.pl +40 -14
- data/bin/lib/Image/ExifTool/XMP.pm +67 -2
- data/bin/lib/Image/ExifTool/XMP2.pl +35 -0
- data/bin/lib/Image/ExifTool.pm +79 -40
- data/bin/lib/Image/ExifTool.pod +9 -3
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
29
29
|
%jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
|
30
30
|
%static_vars);
|
31
31
|
|
32
|
-
$VERSION = '12.
|
32
|
+
$VERSION = '12.70';
|
33
33
|
$RELEASE = '';
|
34
34
|
@ISA = qw(Exporter);
|
35
35
|
%EXPORT_TAGS = (
|
@@ -132,7 +132,7 @@ sub Rename($$$);
|
|
132
132
|
sub Unlink($@);
|
133
133
|
sub SetFileTime($$;$$$$);
|
134
134
|
sub DoEscape($$);
|
135
|
-
sub ConvertFileSize(
|
135
|
+
sub ConvertFileSize($;$);
|
136
136
|
sub ParseArguments($;@); #(defined in attempt to avoid mod_perl problem)
|
137
137
|
sub ReadValue($$$;$$$);
|
138
138
|
|
@@ -145,16 +145,16 @@ sub ReadValue($$$;$$$);
|
|
145
145
|
WPG ICO PICT PNG MNG FLIF DjVu DPX OpenEXR ZISRAW MRC LIF MRC::FEI12 MIFF
|
146
146
|
PCX PGF PSP PhotoCD Radiance Other::PFM PDF PostScript Photoshop::Header
|
147
147
|
Photoshop::Layers Photoshop::ImageData FujiFilm::RAF FujiFilm::IFD
|
148
|
-
Samsung::Trailer Sony::SRF2 Sony::SR2SubIFD Sony::PMP ITC ID3
|
149
|
-
FLAC Ogg Vorbis APE APE::NewHeader APE::OldHeader Audible MPC
|
150
|
-
MPEG::Video MPEG::Xing M2TS QuickTime QuickTime::ImageFile
|
151
|
-
QuickTime::Tags360Fly Matroska Matroska::StdTag MOI MXF DV
|
152
|
-
Real::Media Real::Audio Real::Metafile Red RIFF AIFF ASF
|
153
|
-
MIE JSON HTML XMP::SVG Palm Palm::MOBI Palm::EXTH
|
154
|
-
EXE
|
155
|
-
Text VCard::VCalendar VCard::VNote RSRC
|
156
|
-
ZIP::RAR5 RTF OOXML iWork ISO FLIR::AFF
|
157
|
-
FlashPix::DocTable
|
148
|
+
FujiFilm::MRAW Samsung::Trailer Sony::SRF2 Sony::SR2SubIFD Sony::PMP ITC ID3
|
149
|
+
ID3::Lyrics3 FLAC Ogg Vorbis APE APE::NewHeader APE::OldHeader Audible MPC
|
150
|
+
MPEG::Audio MPEG::Video MPEG::Xing M2TS QuickTime QuickTime::ImageFile
|
151
|
+
QuickTime::Stream QuickTime::Tags360Fly Matroska Matroska::StdTag MOI MXF DV
|
152
|
+
Flash Flash::FLV Real::Media Real::Audio Real::Metafile Red RIFF AIFF ASF
|
153
|
+
WTV DICOM FITS XISF MIE JSON HTML XMP::SVG Palm Palm::MOBI Palm::EXTH
|
154
|
+
Torrent EXE EXE::PEVersion EXE::PEString EXE::MachO EXE::PEF EXE::ELF
|
155
|
+
EXE::AR EXE::CHM LNK Font VCard Text VCard::VCalendar VCard::VNote RSRC
|
156
|
+
Rawzor ZIP ZIP::GZIP ZIP::RAR ZIP::RAR5 RTF OOXML iWork ISO FLIR::AFF
|
157
|
+
FLIR::FPF MacOS MacOS::MDItem FlashPix::DocTable
|
158
158
|
);
|
159
159
|
|
160
160
|
# alphabetical list of current Lang modules
|
@@ -365,6 +365,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
|
|
365
365
|
JPC => 'J2C',
|
366
366
|
JPE => 'JPEG',
|
367
367
|
JPEG => ['JPEG', 'Joint Photographic Experts Group'],
|
368
|
+
JPH => ['JP2', 'High-throughput JPEG 2000'],
|
368
369
|
JPF => 'JP2',
|
369
370
|
JPG => 'JPEG',
|
370
371
|
JPM => ['JP2', 'JPEG 2000 compound image'],
|
@@ -677,6 +678,7 @@ my %fileDescription = (
|
|
677
678
|
JNG => 'image/jng',
|
678
679
|
JP2 => 'image/jp2',
|
679
680
|
JPEG => 'image/jpeg',
|
681
|
+
JPH => 'image/jph',
|
680
682
|
JPM => 'image/jpm',
|
681
683
|
JPS => 'image/x-jps',
|
682
684
|
JPX => 'image/jpx',
|
@@ -1066,6 +1068,7 @@ my %xmpShorthandOpt = ( 0 => 'None', 1 => 'Shorthand', 2 => ['Shorthand','OneDes
|
|
1066
1068
|
my @availableOptions = (
|
1067
1069
|
[ 'Binary', undef, 'flag to extract binary values even if tag not specified' ],
|
1068
1070
|
[ 'ByteOrder', undef, 'default byte order when creating EXIF information' ],
|
1071
|
+
[ 'ByteUnit', 'SI', 'units for byte conversions (SI or Binary)'],
|
1069
1072
|
[ 'Charset', 'UTF8', 'character set for converting Unicode characters' ],
|
1070
1073
|
[ 'CharsetEXIF', undef, 'internal EXIF "ASCII" string encoding' ],
|
1071
1074
|
[ 'CharsetFileName', undef, 'external encoding for file names' ],
|
@@ -1307,8 +1310,9 @@ my %systemTagsNotes = (
|
|
1307
1310
|
FileSize => {
|
1308
1311
|
Groups => { 1 => 'System', 2 => 'Other' },
|
1309
1312
|
Notes => q{
|
1310
|
-
note that the print conversion for this tag uses
|
1311
|
-
|
1313
|
+
note that the print conversion for this tag uses SI prefixes by default: 1
|
1314
|
+
kB = 1000 bytes, etc. Set the API ByteUnit option to "Binary" to use binary
|
1315
|
+
prefixes instead: 1 KiB = 1024 bytes, etc.
|
1312
1316
|
},
|
1313
1317
|
PrintConv => \&ConvertFileSize,
|
1314
1318
|
},
|
@@ -2413,17 +2417,28 @@ sub Options($$;@)
|
|
2413
2417
|
}
|
2414
2418
|
$$options{$param} = $newVal;
|
2415
2419
|
} elsif ($param eq 'ImageHashType') {
|
2416
|
-
if (defined $newVal
|
2420
|
+
if (not defined $newVal) {
|
2421
|
+
warn("Can't set $param to undef\n");
|
2422
|
+
} elsif ($newVal =~ /^(MD5|SHA256|SHA512)$/i) {
|
2417
2423
|
$$options{$param} = uc($newVal);
|
2418
2424
|
} else {
|
2419
|
-
warn("Invalid $param setting '${newVal}'\n")
|
2425
|
+
warn("Invalid $param setting '${newVal}'\n");
|
2420
2426
|
}
|
2421
2427
|
} elsif ($param eq 'StructFormat') {
|
2422
2428
|
if (defined $newVal) {
|
2423
|
-
$newVal =~ /^(JSON|JSONQ)$/i or warn("Invalid $param setting '${newVal}'\n"),
|
2429
|
+
$newVal =~ /^(JSON|JSONQ)$/i or warn("Invalid $param setting '${newVal}'\n"), next;
|
2424
2430
|
$newVal = uc($newVal);
|
2425
2431
|
}
|
2426
2432
|
$$options{$param} = $newVal;
|
2433
|
+
} elsif ($param eq 'ByteUnit') {
|
2434
|
+
if (defined $newVal) {
|
2435
|
+
# (allow "Metric" or "SI" for SI, and "IT" or "Binary" for Binary)
|
2436
|
+
my $goodVal = ($newVal =~ /^S|M/i ? 'SI' : ($newVal =~ /^I|B/i ? 'Binary' : undef));
|
2437
|
+
$goodVal or warn("Invalid $param setting '${newVal}'\n"), next;
|
2438
|
+
$$options{$param} = $goodVal;
|
2439
|
+
} else {
|
2440
|
+
warn("Can't set $param to undef\n");
|
2441
|
+
}
|
2427
2442
|
} else {
|
2428
2443
|
if ($param eq 'Escape') {
|
2429
2444
|
# set ESCAPE_PROC
|
@@ -2548,7 +2563,7 @@ sub ExtractInfo($;@)
|
|
2548
2563
|
$self->WarnOnce('Install Time::HiRes to generate ProcessingTime');
|
2549
2564
|
}
|
2550
2565
|
}
|
2551
|
-
|
2566
|
+
|
2552
2567
|
# create Hash object if ImageDataHash is requested
|
2553
2568
|
if ($$req{imagedatahash} and not $$self{ImageDataHash}) {
|
2554
2569
|
my $imageHashType = $self->Options('ImageHashType');
|
@@ -3456,9 +3471,10 @@ sub GetValue($$;$)
|
|
3456
3471
|
} elsif (wantarray) {
|
3457
3472
|
# return array if requested
|
3458
3473
|
return @$value;
|
3459
|
-
} elsif ($type eq 'PrintConv' and not $$self{OPTIONS}{List}
|
3460
|
-
# join PrintConv values in
|
3474
|
+
} elsif ($type eq 'PrintConv' and not $$self{OPTIONS}{List}) {
|
3475
|
+
# join PrintConv values in delimited string if List option not used
|
3461
3476
|
# and list contains simple scalars (otherwise return ARRAY ref)
|
3477
|
+
ref and return $value foreach @$value;
|
3462
3478
|
$value = join $$self{OPTIONS}{ListSep}, @$value;
|
3463
3479
|
}
|
3464
3480
|
}
|
@@ -6023,7 +6039,7 @@ sub ConvertDateTime($$)
|
|
6023
6039
|
++$a[5];
|
6024
6040
|
last; # (this was a goto)
|
6025
6041
|
}
|
6026
|
-
}
|
6042
|
+
}
|
6027
6043
|
}
|
6028
6044
|
$neg and $frac =~ s/^\.//;
|
6029
6045
|
$fmt =~ s/(^|[^%])((%%)*)%-?\.?\d*f/$1$2$frac/g;
|
@@ -6203,16 +6219,26 @@ sub GetUnixTime($;$)
|
|
6203
6219
|
# Print conversion for file size
|
6204
6220
|
# Inputs: 0) file size in bytes
|
6205
6221
|
# Returns: converted file size
|
6206
|
-
sub ConvertFileSize(
|
6207
|
-
{
|
6208
|
-
my $val =
|
6209
|
-
$
|
6210
|
-
|
6211
|
-
|
6212
|
-
|
6213
|
-
|
6214
|
-
|
6215
|
-
|
6222
|
+
sub ConvertFileSize($;$)
|
6223
|
+
{
|
6224
|
+
my ($val, $et) = @_;
|
6225
|
+
if ($et and $$et{OPTIONS}{ByteUnit} eq 'Binary') {
|
6226
|
+
$val < 2048 and return "$val bytes";
|
6227
|
+
$val < 10240 and return sprintf('%.1f KiB', $val / 1024);
|
6228
|
+
$val < 2097152 and return sprintf('%.0f KiB', $val / 1024);
|
6229
|
+
$val < 10485760 and return sprintf('%.1f MiB', $val / 1048576);
|
6230
|
+
$val < 2147483648 and return sprintf('%.0f MiB', $val / 1048576);
|
6231
|
+
$val < 10737418240 and return sprintf('%.1f GiB', $val / 1073741824);
|
6232
|
+
return sprintf('%.0f GiB', $val / 1073741824);
|
6233
|
+
} else {
|
6234
|
+
$val < 2000 and return "$val bytes";
|
6235
|
+
$val < 10000 and return sprintf('%.1f kB', $val / 1000);
|
6236
|
+
$val < 2000000 and return sprintf('%.0f kB', $val / 1000);
|
6237
|
+
$val < 10000000 and return sprintf('%.1f MB', $val / 1000000);
|
6238
|
+
$val < 2000000000 and return sprintf('%.0f MB', $val / 1000000);
|
6239
|
+
$val < 10000000000 and return sprintf('%.1f GB', $val / 1000000000);
|
6240
|
+
return sprintf('%.0f GB', $val / 1000000000);
|
6241
|
+
}
|
6216
6242
|
}
|
6217
6243
|
|
6218
6244
|
#------------------------------------------------------------------------------
|
@@ -7480,7 +7506,8 @@ sub ProcessJPEG($$)
|
|
7480
7506
|
my $hdr = $1;
|
7481
7507
|
$dumpType = 'JUMBF';
|
7482
7508
|
SetByteOrder('MM');
|
7483
|
-
|
7509
|
+
# (sequence should start from 1, but some software incorrectly writes 0)
|
7510
|
+
my $seq = Get32u($segDataPt, 4);
|
7484
7511
|
my $len = Get32u($segDataPt, 8);
|
7485
7512
|
my $type = substr($$segDataPt, 12, 4);
|
7486
7513
|
my $hdrLen;
|
@@ -7490,14 +7517,13 @@ sub ProcessJPEG($$)
|
|
7490
7517
|
} else {
|
7491
7518
|
$hdrLen = 8;
|
7492
7519
|
}
|
7493
|
-
$jumbfChunk{$type} or $jumbfChunk{$type} = [ ];
|
7520
|
+
$jumbfChunk{$type} or $jumbfChunk{$type} = [ '' ];
|
7494
7521
|
if ($len < $hdrLen) {
|
7495
7522
|
$self->Warn('Invalid JUMBF segment');
|
7496
|
-
} elsif ($seq
|
7497
|
-
$self->Warn('Invalid JUMBF sequence number');
|
7498
|
-
} elsif (defined $jumbfChunk{$type}[$seq]) {
|
7523
|
+
} elsif (defined $jumbfChunk{$type}[$seq] and length $jumbfChunk{$type}[$seq]) {
|
7499
7524
|
$self->Warn('Duplicate JUMBF sequence number');
|
7500
7525
|
} else {
|
7526
|
+
$seq or $self->Warn('Incorrect JUMBF sequence numbering (should start from 0, not 1)');
|
7501
7527
|
# add to list of JUMBF chunks
|
7502
7528
|
$jumbfChunk{$type}[$seq] = substr($$segDataPt, 8 + $hdrLen);
|
7503
7529
|
# check to see if we have a complete JUMBF box
|
@@ -7721,6 +7747,19 @@ sub ProcessTIFF($$;$)
|
|
7721
7747
|
return $rtnVal;
|
7722
7748
|
}
|
7723
7749
|
|
7750
|
+
#------------------------------------------------------------------------------
|
7751
|
+
# Process TIFF as a sub-document
|
7752
|
+
# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) optional tag table ref
|
7753
|
+
# Returns: 1 if this looked like a valid EXIF block, 0 otherwise, or -1 on write error
|
7754
|
+
sub ProcessSubTIFF($$;$)
|
7755
|
+
{
|
7756
|
+
my ($self, $dirInfo, $tagTablePtr) = @_;
|
7757
|
+
$$self{DOC_NUM} = ++$$self{DOC_COUNT};
|
7758
|
+
my $rtnVal = $self->ProcessTIFF($dirInfo, $tagTablePtr);
|
7759
|
+
delete $$self{DOC_NUM};
|
7760
|
+
return $rtnVal;
|
7761
|
+
}
|
7762
|
+
|
7724
7763
|
#------------------------------------------------------------------------------
|
7725
7764
|
# Process TIFF data
|
7726
7765
|
# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) optional tag table ref
|
@@ -7736,8 +7775,8 @@ sub DoProcessTIFF($$;$)
|
|
7736
7775
|
my ($err, $sig, $canonSig, $otherSig);
|
7737
7776
|
|
7738
7777
|
# attempt to read TIFF header
|
7739
|
-
$$self{EXIF_DATA} = '';
|
7740
7778
|
if ($raf) {
|
7779
|
+
$$self{EXIF_DATA} = '';
|
7741
7780
|
if ($outfile) {
|
7742
7781
|
$raf->Seek(0, 0) or return 0;
|
7743
7782
|
if ($base) {
|
@@ -8089,8 +8128,8 @@ sub DoProcessTIFF($$;$)
|
|
8089
8128
|
# check DNG version
|
8090
8129
|
if ($$self{DNGVersion}) {
|
8091
8130
|
my $ver = $$self{DNGVersion};
|
8092
|
-
# currently support up to DNG version 1.
|
8093
|
-
unless ($ver =~ /^(\d+) (\d+)/ and "$1.$2" <= 1.
|
8131
|
+
# currently support up to DNG version 1.7
|
8132
|
+
unless ($ver =~ /^(\d+) (\d+)/ and "$1.$2" <= 1.7) {
|
8094
8133
|
$ver =~ tr/ /./;
|
8095
8134
|
$self->Error("DNG Version $ver not yet tested", 1);
|
8096
8135
|
}
|
@@ -8359,7 +8398,7 @@ sub GetTagInfo($$$;$$$)
|
|
8359
8398
|
}
|
8360
8399
|
}
|
8361
8400
|
# don't return Unknown tags unless that option is set (also see forum13716)
|
8362
|
-
if ($$tagInfo{Unknown} and not $$self{OPTIONS}{Unknown} and not
|
8401
|
+
if ($$tagInfo{Unknown} and not $$self{OPTIONS}{Unknown} and not
|
8363
8402
|
($$self{OPTIONS}{Verbose} or $$self{HTML_DUMP} or
|
8364
8403
|
($$self{OPTIONS}{Validate} and not $$tagInfo{AddedUnknown})))
|
8365
8404
|
{
|
data/bin/lib/Image/ExifTool.pod
CHANGED
@@ -467,6 +467,12 @@ big-endian ('MM') order is assumed. This can also be set via the
|
|
467
467
|
L<ExifByteOrder tag|Image::ExifTool::TagNames/Extra Tags>, but the ByteOrder
|
468
468
|
option takes precedence if both are set.
|
469
469
|
|
470
|
+
=item ByteUnit
|
471
|
+
|
472
|
+
Units for print conversion of FileSize and other byte values. Either 'SI'
|
473
|
+
(eg. kB for 1000 bytes) or 'Binary' (eg. KiB for 1024 bytes). Default is
|
474
|
+
'SI'.
|
475
|
+
|
470
476
|
=item Charset
|
471
477
|
|
472
478
|
Character set for encoding character tag values passed to/from ExifTool with
|
@@ -554,12 +560,12 @@ without recoding. Default is 0.
|
|
554
560
|
Comma-delimited list of settings for writing compact XMP. Below is a list
|
555
561
|
of available settings. Note that 'NoPadding' effects only embedded XMP
|
556
562
|
since padding is never written for stand-alone XMP files. Also note that
|
557
|
-
'OneDesc' is not recommended when writing XMP larger than 64
|
563
|
+
'OneDesc' is not recommended when writing XMP larger than 64 KiB to a JPG
|
558
564
|
file because it interferes with ExifTool's technique of splitting off large
|
559
565
|
rdf:Description elements into the extended XMP. Case is not significant for
|
560
566
|
any of these options. Aliases are given in brackets. Default is undef.
|
561
567
|
|
562
|
-
NoPadding - Avoid 2
|
568
|
+
NoPadding - Avoid 2 KiB of recommended padding at end of XMP (NoPad)
|
563
569
|
NoIndent - No spaces to indent lines (NoSpace, NoSpaces)
|
564
570
|
NoNewline - Avoid unnecessary newlines (NoNewlines)
|
565
571
|
Shorthand - Use XMP Shorthand format
|
@@ -2440,7 +2446,7 @@ ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1,
|
|
2440
2446
|
IPTC, IPTC#, ISO, ITC, InfiRay, Insta360, InteropIFD, ItemList, JFIF, JFXX,
|
2441
2447
|
JPEG, JPEG-HDR, JPS, JSON, JUMBF, JVC, Jpeg2000, KDC_IFD, Keys, Kodak,
|
2442
2448
|
KodakBordersIFD, KodakEffectsIFD, KodakIFD, KyoceraRaw, LNK, Leaf,
|
2443
|
-
LeafSubIFD, Leica, Lyrics3, Lytro, M2TS, MAC, MIE-Audio, MIE-Camera,
|
2449
|
+
LeafSubIFD, Leica, Lyrics3, Lytro, M-RAW, M2TS, MAC, MIE-Audio, MIE-Camera,
|
2444
2450
|
MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo, MIE-Image,
|
2445
2451
|
MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta, MIE-Orient, MIE-Preview,
|
2446
2452
|
MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video, MIFF, MISB, MNG, MOBI, MOI,
|
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: 12.
|
4
|
+
version: 12.70.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: 2023-
|
12
|
+
date: 2023-11-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: exiftool
|