exiftool_vendored 12.64.0 → 12.65.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +26 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +22 -15
- data/bin/lib/Image/ExifTool/Apple.pm +9 -5
- data/bin/lib/Image/ExifTool/BigTIFF.pm +8 -1
- data/bin/lib/Image/ExifTool/Canon.pm +3 -1
- data/bin/lib/Image/ExifTool/FlashPix.pm +8 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +561 -67
- data/bin/lib/Image/ExifTool/NikonCustom.pm +862 -61
- data/bin/lib/Image/ExifTool/PDF.pm +18 -8
- data/bin/lib/Image/ExifTool/QuickTime.pm +18 -10
- data/bin/lib/Image/ExifTool/Samsung.pm +227 -227
- data/bin/lib/Image/ExifTool/Sony.pm +128 -24
- data/bin/lib/Image/ExifTool/TagLookup.pm +4607 -4591
- data/bin/lib/Image/ExifTool/TagNames.pod +465 -21
- data/bin/lib/Image/ExifTool/Writer.pl +7 -2
- data/bin/lib/Image/ExifTool.pm +112 -92
- data/bin/lib/Image/ExifTool.pod +26 -1
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -184
@@ -2025,7 +2025,7 @@ sub SetFileName($$;$$$)
|
|
2025
2025
|
# protect against empty file name
|
2026
2026
|
length $newName or $self->Warn('New file name is empty'), return -1;
|
2027
2027
|
# don't replace existing file
|
2028
|
-
if ($self->Exists($newName) and (not defined $usedFlag or $usedFlag)) {
|
2028
|
+
if ($self->Exists($newName, 1) and (not defined $usedFlag or $usedFlag)) {
|
2029
2029
|
if ($file ne $newName or $opt =~ /Link$/) {
|
2030
2030
|
# allow for case-insensitive filesystem
|
2031
2031
|
if ($opt =~ /Link$/ or not $self->IsSameFile($file, $newName)) {
|
@@ -2404,7 +2404,7 @@ sub WriteInfo($$;$$)
|
|
2404
2404
|
$outBuff = '';
|
2405
2405
|
$outRef = \$outBuff;
|
2406
2406
|
$outPos = 0;
|
2407
|
-
} elsif ($self->Exists($outfile)) {
|
2407
|
+
} elsif ($self->Exists($outfile, 1)) {
|
2408
2408
|
$self->Error("File already exists: $outfile");
|
2409
2409
|
} elsif ($self->Open(\*EXIFTOOL_OUTFILE, $outfile, '>')) {
|
2410
2410
|
$outRef = \*EXIFTOOL_OUTFILE;
|
@@ -4919,6 +4919,11 @@ sub InverseDateTime($$;$$)
|
|
4919
4919
|
my $fs = ($fmt =~ s/%f$// and $val =~ s/(\.\d+)\s*$//) ? $1 : '';
|
4920
4920
|
my ($lib, $wrn, @a);
|
4921
4921
|
TryLib: for ($lib=$strptimeLib; ; $lib='') {
|
4922
|
+
# handle %s format ourself (not supported in Fedora, see forum15032)
|
4923
|
+
if ($fmt eq '%s') {
|
4924
|
+
$val = ConvertUnixTime($val, 1);
|
4925
|
+
last;
|
4926
|
+
}
|
4922
4927
|
if (not $lib) {
|
4923
4928
|
last unless $$self{OPTIONS}{StrictDate};
|
4924
4929
|
warn $wrn || "Install POSIX::strptime or Time::Piece for inverse date/time conversions\n";
|
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.65';
|
33
33
|
$RELEASE = '';
|
34
34
|
@ISA = qw(Exporter);
|
35
35
|
%EXPORT_TAGS = (
|
@@ -126,7 +126,7 @@ sub MakeTiffHeader($$$$;$$);
|
|
126
126
|
sub SplitFileName($);
|
127
127
|
sub EncodeFileName($$;$);
|
128
128
|
sub Open($*$;$);
|
129
|
-
sub Exists(
|
129
|
+
sub Exists($$;$);
|
130
130
|
sub IsDirectory($$);
|
131
131
|
sub Rename($$$);
|
132
132
|
sub Unlink($@);
|
@@ -1052,6 +1052,93 @@ my %xmpShorthandOpt = ( 0 => 'None', 1 => 'Shorthand', 2 => ['Shorthand','OneDes
|
|
1052
1052
|
maccroatian => 'MacCroatian', cp10082 => 'MacCroatian',
|
1053
1053
|
);
|
1054
1054
|
|
1055
|
+
# list of available options
|
1056
|
+
# +-----------------------------------------------------+
|
1057
|
+
# ! DON'T FORGET!! When adding any new option, must !
|
1058
|
+
# ! decide how it is handled in SetNewValuesFromFile() !
|
1059
|
+
# +-----------------------------------------------------+
|
1060
|
+
# (Note: All options must exist in this lookup, even if undefined,
|
1061
|
+
# to facilitate case-insensitive options. 'Group#' is handled specially)
|
1062
|
+
my @availableOptions = (
|
1063
|
+
[ 'Binary', undef, 'flag to extract binary values even if tag not specified' ],
|
1064
|
+
[ 'ByteOrder', undef, 'default byte order when creating EXIF information' ],
|
1065
|
+
[ 'Charset', 'UTF8', 'character set for converting Unicode characters' ],
|
1066
|
+
[ 'CharsetEXIF', undef, 'internal EXIF "ASCII" string encoding' ],
|
1067
|
+
[ 'CharsetFileName', undef, 'external encoding for file names' ],
|
1068
|
+
[ 'CharsetID3', 'Latin','internal ID3v1 character set' ],
|
1069
|
+
[ 'CharsetIPTC', 'Latin','fallback IPTC character set if no CodedCharacterSet' ],
|
1070
|
+
[ 'CharsetPhotoshop', 'Latin','internal encoding for Photoshop resource names' ],
|
1071
|
+
[ 'CharsetQuickTime', 'MacRoman', 'internal QuickTime string encoding' ],
|
1072
|
+
[ 'CharsetRIFF', 0, 'internal RIFF string encoding (0=default to Latin)' ],
|
1073
|
+
[ 'Compact', { }, 'write compact XMP' ],
|
1074
|
+
[ 'Composite', 1, 'flag to calculate Composite tags' ],
|
1075
|
+
[ 'Compress', undef, 'flag to write new values as compressed if possible' ],
|
1076
|
+
[ 'CoordFormat', undef, 'GPS lat/long coordinate format' ],
|
1077
|
+
[ 'DateFormat', undef, 'format for date/time' ],
|
1078
|
+
[ 'Duplicates', 1, 'flag to save duplicate tag values' ],
|
1079
|
+
[ 'Escape', undef, 'escape special characters' ],
|
1080
|
+
[ 'Exclude', undef, 'tags to exclude' ],
|
1081
|
+
[ 'ExtendedXMP', 1, 'strategy for reading extended XMP' ],
|
1082
|
+
[ 'ExtractEmbedded', undef, 'flag to extract information from embedded documents' ],
|
1083
|
+
[ 'FastScan', undef, 'flag to avoid scanning for trailer' ],
|
1084
|
+
[ 'Filter', undef, 'output filter for all tag values' ],
|
1085
|
+
[ 'FilterW', undef, 'input filter when writing tag values' ],
|
1086
|
+
[ 'FixBase', undef, 'fix maker notes base offsets' ],
|
1087
|
+
[ 'GeoMaxIntSecs', 1800, 'geotag maximum interpolation time (secs)' ],
|
1088
|
+
[ 'GeoMaxExtSecs', 1800, 'geotag maximum extrapolation time (secs)' ],
|
1089
|
+
[ 'GeoMaxHDOP', undef, 'geotag maximum HDOP' ],
|
1090
|
+
[ 'GeoMaxPDOP', undef, 'geotag maximum PDOP' ],
|
1091
|
+
[ 'GeoMinSats', undef, 'geotag minimum satellites' ],
|
1092
|
+
[ 'GeoSpeedRef', undef, 'geotag GPSSpeedRef' ],
|
1093
|
+
[ 'GlobalTimeShift', undef, 'apply time shift to all extracted date/time values' ],
|
1094
|
+
[ 'Group#', undef, 'return tags for specified groups in family #' ],
|
1095
|
+
[ 'HexTagIDs', 0, 'use hex tag ID\'s in family 7 group names' ],
|
1096
|
+
[ 'HtmlDump', 0, 'HTML dump (0-3, higher # = bigger limit)' ],
|
1097
|
+
[ 'HtmlDumpBase', undef, 'base address for HTML dump' ],
|
1098
|
+
[ 'IgnoreMinorErrors',undef, 'ignore minor errors when reading/writing' ],
|
1099
|
+
[ 'IgnoreTags', undef, 'list of tags to ignore when extracting' ],
|
1100
|
+
[ 'ImageHashType', 'MD5', 'image hash algorithm' ],
|
1101
|
+
[ 'Lang', $defaultLang, 'localized language for descriptions etc' ],
|
1102
|
+
[ 'LargeFileSupport', undef, 'flag indicating support of 64-bit file offsets' ],
|
1103
|
+
[ 'List', undef, '[deprecated, use ListSplit and ListJoin instead]' ],
|
1104
|
+
[ 'ListItem', undef, 'used to return a specific item from lists' ],
|
1105
|
+
[ 'ListJoin', ', ', 'join lists together with this separator' ],
|
1106
|
+
[ 'ListSep', ', ', '[deprecated, use ListSplit and ListJoin instead]' ],
|
1107
|
+
[ 'ListSplit', undef, 'regex for splitting list-type tag values when writing' ],
|
1108
|
+
[ 'MakerNotes', undef, 'extract maker notes as a block' ],
|
1109
|
+
[ 'MDItemTags', undef, 'extract MacOS metadata item tags' ],
|
1110
|
+
[ 'MissingTagValue', undef, 'value for missing tags when expanded in expressions' ],
|
1111
|
+
[ 'NoMultiExif', undef, 'raise error when writing multi-segment EXIF' ],
|
1112
|
+
[ 'NoPDFList', undef, 'flag to avoid splitting PDF List-type tag values' ],
|
1113
|
+
[ 'NoWarning', undef, 'regular expression for warnings to suppress' ],
|
1114
|
+
[ 'Password', undef, 'password for password-protected PDF documents' ],
|
1115
|
+
[ 'PrintConv', 1, 'flag to enable print conversion' ],
|
1116
|
+
[ 'QuickTimeHandler', 1, 'flag to add mdir Handler to newly created Meta box' ],
|
1117
|
+
[ 'QuickTimePad', undef, 'flag to preserve padding of QuickTime CR3 tags' ],
|
1118
|
+
[ 'QuickTimeUTC', undef, 'assume that QuickTime date/time tags are stored as UTC' ],
|
1119
|
+
[ 'RequestAll', undef, 'extract all tags that must be specifically requested' ],
|
1120
|
+
[ 'RequestTags', undef, 'extra tags to request (on top of those in the tag list)' ],
|
1121
|
+
[ 'SaveFormat', undef, 'save family 6 tag TIFF format' ],
|
1122
|
+
[ 'SavePath', undef, 'save family 5 location path' ],
|
1123
|
+
[ 'ScanForXMP', undef, 'flag to scan for XMP information in all files' ],
|
1124
|
+
[ 'Sort', 'Input','order to sort found tags (Input, File, Tag, Descr, Group#)' ],
|
1125
|
+
[ 'Sort2', 'File', 'secondary sort order for tags in a group (File, Tag, Descr)' ],
|
1126
|
+
[ 'StrictDate', undef, 'flag to return undef for invalid date conversions' ],
|
1127
|
+
[ 'Struct', undef, 'return structures as hash references' ],
|
1128
|
+
[ 'StructFormat', undef, 'format for structure serialization when reading/writing' ],
|
1129
|
+
[ 'SystemTags', undef, 'extract additional File System tags' ],
|
1130
|
+
[ 'TextOut', \*STDOUT, 'file for Verbose/HtmlDump output' ],
|
1131
|
+
[ 'TimeZone', undef, 'local time zone' ],
|
1132
|
+
[ 'Unknown', 0, 'flag to get values of unknown tags (0-2)' ],
|
1133
|
+
[ 'UserParam', { }, 'user parameters for additional user-defined tag values' ],
|
1134
|
+
[ 'Validate', undef, 'perform additional validation' ],
|
1135
|
+
[ 'Verbose', 0, 'print verbose messages (0-5, higher # = more verbose)' ],
|
1136
|
+
[ 'WriteMode', 'wcg', 'enable all write modes by default' ],
|
1137
|
+
[ 'XAttrTags', undef, 'extract MacOS extended attribute tags' ],
|
1138
|
+
[ 'XMPAutoConv', 1, 'automatic conversion of unknown XMP tag values' ],
|
1139
|
+
[ 'XMPShorthand', 0, '[deprecated, use Compact=Shorthand instead]' ],
|
1140
|
+
);
|
1141
|
+
|
1055
1142
|
# default family 0 group priority for writing
|
1056
1143
|
# (NOTE: tags in groups not specified here will not be written unless
|
1057
1144
|
# overridden by the module or specified when writing)
|
@@ -2368,92 +2455,11 @@ sub ClearOptions($)
|
|
2368
2455
|
local $_;
|
2369
2456
|
my $self = shift;
|
2370
2457
|
|
2371
|
-
|
2372
|
-
|
2373
|
-
#
|
2374
|
-
|
2375
|
-
|
2376
|
-
# (Note: All options must exist in this lookup, even if undefined,
|
2377
|
-
# to facilitate case-insensitive options. 'Group#' is handled specially)
|
2378
|
-
$$self{OPTIONS} = {
|
2379
|
-
Binary => undef, # flag to extract binary values even if tag not specified
|
2380
|
-
ByteOrder => undef, # default byte order when creating EXIF information
|
2381
|
-
Charset => 'UTF8', # character set for converting Unicode characters
|
2382
|
-
CharsetEXIF => undef, # internal EXIF "ASCII" string encoding
|
2383
|
-
CharsetFileName => undef, # external encoding for file names
|
2384
|
-
CharsetID3 => 'Latin', # internal ID3v1 character set
|
2385
|
-
CharsetIPTC => 'Latin', # fallback IPTC character set if no CodedCharacterSet
|
2386
|
-
CharsetPhotoshop => 'Latin', # internal encoding for Photoshop resource names
|
2387
|
-
CharsetQuickTime => 'MacRoman', # internal QuickTime string encoding
|
2388
|
-
CharsetRIFF => 0, # internal RIFF string encoding (0=default to Latin)
|
2389
|
-
Compact => { }, # write compact XMP
|
2390
|
-
Composite => 1, # flag to calculate Composite tags
|
2391
|
-
Compress => undef, # flag to write new values as compressed if possible
|
2392
|
-
CoordFormat => undef, # GPS lat/long coordinate format
|
2393
|
-
DateFormat => undef, # format for date/time
|
2394
|
-
Duplicates => 1, # flag to save duplicate tag values
|
2395
|
-
Escape => undef, # escape special characters
|
2396
|
-
Exclude => undef, # tags to exclude
|
2397
|
-
ExtendedXMP => 1, # strategy for reading extended XMP
|
2398
|
-
ExtractEmbedded =>undef,# flag to extract information from embedded documents
|
2399
|
-
FastScan => undef, # flag to avoid scanning for trailer
|
2400
|
-
Filter => undef, # output filter for all tag values
|
2401
|
-
FilterW => undef, # input filter when writing tag values
|
2402
|
-
FixBase => undef, # fix maker notes base offsets
|
2403
|
-
GeoMaxIntSecs => 1800, # geotag maximum interpolation time (secs)
|
2404
|
-
GeoMaxExtSecs => 1800, # geotag maximum extrapolation time (secs)
|
2405
|
-
GeoMaxHDOP => undef, # geotag maximum HDOP
|
2406
|
-
GeoMaxPDOP => undef, # geotag maximum PDOP
|
2407
|
-
GeoMinSats => undef, # geotag minimum satellites
|
2408
|
-
GeoSpeedRef => undef, # geotag GPSSpeedRef
|
2409
|
-
GlobalTimeShift => undef, # apply time shift to all extracted date/time values
|
2410
|
-
# Group# => undef, # return tags for specified groups in family #
|
2411
|
-
HexTagIDs => 0, # use hex tag ID's in family 7 group names
|
2412
|
-
HtmlDump => 0, # HTML dump (0-3, higher # = bigger limit)
|
2413
|
-
HtmlDumpBase => undef, # base address for HTML dump
|
2414
|
-
IgnoreMinorErrors => undef, # ignore minor errors when reading/writing
|
2415
|
-
IgnoreTags => undef, # list of tags to ignore when extracting
|
2416
|
-
ImageHashType => 'MD5', # image hash algorithm
|
2417
|
-
Lang => $defaultLang,# localized language for descriptions etc
|
2418
|
-
LargeFileSupport => undef, # flag indicating support of 64-bit file offsets
|
2419
|
-
List => undef, # extract lists of PrintConv values into arrays [no longer documented]
|
2420
|
-
ListItem => undef, # used to return a specific item from lists
|
2421
|
-
ListJoin => ', ', # join lists together with this separator
|
2422
|
-
ListSep => ', ', # list item separator [no longer documented]
|
2423
|
-
ListSplit => undef, # regex for splitting list-type tag values when writing
|
2424
|
-
MakerNotes => undef, # extract maker notes as a block
|
2425
|
-
MDItemTags => undef, # extract MacOS metadata item tags
|
2426
|
-
MissingTagValue =>undef,# value for missing tags when expanded in expressions
|
2427
|
-
NoMultiExif => undef, # raise error when writing multi-segment EXIF
|
2428
|
-
NoPDFList => undef, # flag to avoid splitting PDF List-type tag values
|
2429
|
-
NoWarning => undef, # regular expression for warnings to suppress
|
2430
|
-
Password => undef, # password for password-protected PDF documents
|
2431
|
-
PrintConv => 1, # flag to enable print conversion
|
2432
|
-
QuickTimeHandler => 1, # flag to add mdir Handler to newly created Meta box
|
2433
|
-
QuickTimePad=> undef, # flag to preserve padding of QuickTime CR3 tags
|
2434
|
-
QuickTimeUTC=> undef, # assume that QuickTime date/time tags are stored as UTC
|
2435
|
-
RequestAll => undef, # extract all tags that must be specifically requested
|
2436
|
-
RequestTags => undef, # extra tags to request (on top of those in the tag list)
|
2437
|
-
SaveFormat => undef, # save family 6 tag TIFF format
|
2438
|
-
SavePath => undef, # save family 5 location path
|
2439
|
-
ScanForXMP => undef, # flag to scan for XMP information in all files
|
2440
|
-
Sort => 'Input', # order to sort found tags (Input, File, Tag, Descr, Group#)
|
2441
|
-
Sort2 => 'File', # secondary sort order for tags in a group (File, Tag, Descr)
|
2442
|
-
StrictDate => undef, # flag to return undef for invalid date conversions
|
2443
|
-
Struct => undef, # return structures as hash references
|
2444
|
-
StructFormat=> undef, # format for structure serialization when reading/writing
|
2445
|
-
SystemTags => undef, # extract additional File System tags
|
2446
|
-
TextOut => \*STDOUT,# file for Verbose/HtmlDump output
|
2447
|
-
TimeZone => undef, # local time zone
|
2448
|
-
Unknown => 0, # flag to get values of unknown tags (0-2)
|
2449
|
-
UserParam => { }, # user parameters for additional user-defined tag values
|
2450
|
-
Validate => undef, # perform additional validation
|
2451
|
-
Verbose => 0, # print verbose messages (0-5, higher # = more verbose)
|
2452
|
-
WriteMode => 'wcg', # enable all write modes by default
|
2453
|
-
XAttrTags => undef, # extract MacOS extended attribute tags
|
2454
|
-
XMPAutoConv => 1, # automatic conversion of unknown XMP tag values
|
2455
|
-
XMPShorthand=> 0, # (unused, but needed for backward compatibility)
|
2456
|
-
};
|
2458
|
+
$$self{OPTIONS} = { }; # clear all options
|
2459
|
+
|
2460
|
+
# load default options
|
2461
|
+
$$self{OPTIONS}{$$_[0]} = $$_[1] foreach @availableOptions;
|
2462
|
+
|
2457
2463
|
# keep necessary member variables in sync with options
|
2458
2464
|
delete $$self{CUR_LANG};
|
2459
2465
|
delete $$self{ESCAPE_PROC};
|
@@ -3890,6 +3896,15 @@ sub GetCompositeTagInfo($)
|
|
3890
3896
|
return $Image::ExifTool::Composite{$compositeID{$tag}[0]};
|
3891
3897
|
}
|
3892
3898
|
|
3899
|
+
#------------------------------------------------------------------------------
|
3900
|
+
# Return List ExifTool API options
|
3901
|
+
# Returns: 0) reference to list of available options -- each entry is a list
|
3902
|
+
# [0=option name, 1=default value, 2=description]
|
3903
|
+
sub AvailableOptions()
|
3904
|
+
{
|
3905
|
+
return \@availableOptions;
|
3906
|
+
}
|
3907
|
+
|
3893
3908
|
#------------------------------------------------------------------------------
|
3894
3909
|
# Get tag name (removes copy index)
|
3895
3910
|
# Inputs: 0) Tag key
|
@@ -4374,11 +4389,11 @@ sub Open($*$;$)
|
|
4374
4389
|
|
4375
4390
|
#------------------------------------------------------------------------------
|
4376
4391
|
# Check to see if a file exists (with Windows Unicode support)
|
4377
|
-
# Inputs: 0) ExifTool ref, 1) file name
|
4392
|
+
# Inputs: 0) ExifTool ref, 1) file name, 2) flag if we are writing this file
|
4378
4393
|
# Returns: true if file exists
|
4379
|
-
sub Exists(
|
4394
|
+
sub Exists($$;$)
|
4380
4395
|
{
|
4381
|
-
my ($self, $file) = @_;
|
4396
|
+
my ($self, $file, $writing) = @_;
|
4382
4397
|
|
4383
4398
|
if ($self->EncodeFileName($file)) {
|
4384
4399
|
local $SIG{'__WARN__'} = \&SetWarning;
|
@@ -4388,10 +4403,12 @@ sub Exists($$)
|
|
4388
4403
|
Win32API::File::OPEN_EXISTING(), 0, []) };
|
4389
4404
|
return 0 unless $wh;
|
4390
4405
|
eval { Win32API::File::CloseHandle($wh) };
|
4391
|
-
}
|
4406
|
+
} elsif ($writing) {
|
4392
4407
|
# (named pipes already exist, but we pretend that they don't
|
4393
4408
|
# so we will be able to write them, so test with for pipe -p)
|
4394
4409
|
return(-e $file and not -p $file);
|
4410
|
+
} else {
|
4411
|
+
return(-e $file);
|
4395
4412
|
}
|
4396
4413
|
return 1;
|
4397
4414
|
}
|
@@ -4894,6 +4911,7 @@ sub SetFoundTags($)
|
|
4894
4911
|
$groupList = [ $$options{$groupOpt} ];
|
4895
4912
|
}
|
4896
4913
|
foreach (@$groupList) {
|
4914
|
+
next unless defined $_;
|
4897
4915
|
# groups have priority in order they were specified
|
4898
4916
|
++$wantOrder;
|
4899
4917
|
my ($groupName, $want);
|
@@ -7836,6 +7854,8 @@ sub DoProcessTIFF($$;$)
|
|
7836
7854
|
return 1;
|
7837
7855
|
}
|
7838
7856
|
}
|
7857
|
+
} elsif ($fileType eq 'ARW') {
|
7858
|
+
$$self{LOW_PRIORITY_DIR}{IFD1} = 1; # lower priority of IFD1 tags in ARW files
|
7839
7859
|
}
|
7840
7860
|
# we have a valid TIFF (or whatever) file
|
7841
7861
|
if ($fileType and not $$self{VALUE}{FileType}) {
|
data/bin/lib/Image/ExifTool.pod
CHANGED
@@ -1463,7 +1463,9 @@ value should always exist if the tag exists.
|
|
1463
1463
|
|
1464
1464
|
Set the new value for a tag. The routine may be called multiple times to
|
1465
1465
|
set the values of many tags before using L</WriteInfo> to write the new
|
1466
|
-
values to an image.
|
1466
|
+
values to an image. These values remain queued for writing to subsequent
|
1467
|
+
files until L</SetNewValue> is called without arguments to reset the queued
|
1468
|
+
values.
|
1467
1469
|
|
1468
1470
|
For list-type tags (like Keywords), either call repeatedly with the same tag
|
1469
1471
|
name for each value, or call with a reference to the list of values.
|
@@ -2273,6 +2275,29 @@ within L</ImageInfo>, before the file is closed.
|
|
2273
2275
|
|
2274
2276
|
=back
|
2275
2277
|
|
2278
|
+
=head2 AvailableOptions [static]
|
2279
|
+
|
2280
|
+
Get a list of available API options. (See L</Options> for option details.)
|
2281
|
+
|
2282
|
+
=over 4
|
2283
|
+
|
2284
|
+
=item Inputs:
|
2285
|
+
|
2286
|
+
(none)
|
2287
|
+
|
2288
|
+
=item Return Values:
|
2289
|
+
|
2290
|
+
Reference to list of available options. Each entry in the list is a list
|
2291
|
+
reference with 3 items: 0=Option name, 1=Default value, 2=Description.
|
2292
|
+
|
2293
|
+
my $opts = Image::ExifTool::<b>AvailableOptions</b>();
|
2294
|
+
foreach (@$opts) {
|
2295
|
+
my ($optionName, $defaultValue, $description) = @$_;
|
2296
|
+
...
|
2297
|
+
}
|
2298
|
+
|
2299
|
+
=back
|
2300
|
+
|
2276
2301
|
=head2 GetTagName [static]
|
2277
2302
|
|
2278
2303
|
Get name of tag from tag key. This is a convenience function that
|
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.65.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-08-
|
12
|
+
date: 2023-08-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: exiftool
|
@@ -25,188 +25,6 @@ dependencies:
|
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: 0.7.0
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: bundler
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - ">="
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '0'
|
35
|
-
type: :development
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - ">="
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '0'
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
name: minitest
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - ">="
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '0'
|
49
|
-
type: :development
|
50
|
-
prerelease: false
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - ">="
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: '0'
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: minitest-great_expectations
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - ">="
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '0'
|
63
|
-
type: :development
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - ">="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: minitest-reporters
|
72
|
-
requirement: !ruby/object:Gem::Requirement
|
73
|
-
requirements:
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
77
|
-
type: :development
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - ">="
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '0'
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: nokogiri
|
86
|
-
requirement: !ruby/object:Gem::Requirement
|
87
|
-
requirements:
|
88
|
-
- - ">="
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: '0'
|
91
|
-
type: :development
|
92
|
-
prerelease: false
|
93
|
-
version_requirements: !ruby/object:Gem::Requirement
|
94
|
-
requirements:
|
95
|
-
- - ">="
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
version: '0'
|
98
|
-
- !ruby/object:Gem::Dependency
|
99
|
-
name: rake
|
100
|
-
requirement: !ruby/object:Gem::Requirement
|
101
|
-
requirements:
|
102
|
-
- - ">="
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
version: '0'
|
105
|
-
type: :development
|
106
|
-
prerelease: false
|
107
|
-
version_requirements: !ruby/object:Gem::Requirement
|
108
|
-
requirements:
|
109
|
-
- - ">="
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version: '0'
|
112
|
-
- !ruby/object:Gem::Dependency
|
113
|
-
name: rubocop
|
114
|
-
requirement: !ruby/object:Gem::Requirement
|
115
|
-
requirements:
|
116
|
-
- - ">="
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
version: '0'
|
119
|
-
type: :development
|
120
|
-
prerelease: false
|
121
|
-
version_requirements: !ruby/object:Gem::Requirement
|
122
|
-
requirements:
|
123
|
-
- - ">="
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: rubocop-minitest
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
requirements:
|
130
|
-
- - ">="
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
version: '0'
|
133
|
-
type: :development
|
134
|
-
prerelease: false
|
135
|
-
version_requirements: !ruby/object:Gem::Requirement
|
136
|
-
requirements:
|
137
|
-
- - ">="
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: '0'
|
140
|
-
- !ruby/object:Gem::Dependency
|
141
|
-
name: rubocop-rake
|
142
|
-
requirement: !ruby/object:Gem::Requirement
|
143
|
-
requirements:
|
144
|
-
- - ">="
|
145
|
-
- !ruby/object:Gem::Version
|
146
|
-
version: '0'
|
147
|
-
type: :development
|
148
|
-
prerelease: false
|
149
|
-
version_requirements: !ruby/object:Gem::Requirement
|
150
|
-
requirements:
|
151
|
-
- - ">="
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version: '0'
|
154
|
-
- !ruby/object:Gem::Dependency
|
155
|
-
name: simplecov
|
156
|
-
requirement: !ruby/object:Gem::Requirement
|
157
|
-
requirements:
|
158
|
-
- - ">="
|
159
|
-
- !ruby/object:Gem::Version
|
160
|
-
version: '0'
|
161
|
-
type: :development
|
162
|
-
prerelease: false
|
163
|
-
version_requirements: !ruby/object:Gem::Requirement
|
164
|
-
requirements:
|
165
|
-
- - ">="
|
166
|
-
- !ruby/object:Gem::Version
|
167
|
-
version: '0'
|
168
|
-
- !ruby/object:Gem::Dependency
|
169
|
-
name: simplecov-console
|
170
|
-
requirement: !ruby/object:Gem::Requirement
|
171
|
-
requirements:
|
172
|
-
- - ">="
|
173
|
-
- !ruby/object:Gem::Version
|
174
|
-
version: '0'
|
175
|
-
type: :development
|
176
|
-
prerelease: false
|
177
|
-
version_requirements: !ruby/object:Gem::Requirement
|
178
|
-
requirements:
|
179
|
-
- - ">="
|
180
|
-
- !ruby/object:Gem::Version
|
181
|
-
version: '0'
|
182
|
-
- !ruby/object:Gem::Dependency
|
183
|
-
name: simplecov_json_formatter
|
184
|
-
requirement: !ruby/object:Gem::Requirement
|
185
|
-
requirements:
|
186
|
-
- - ">="
|
187
|
-
- !ruby/object:Gem::Version
|
188
|
-
version: '0'
|
189
|
-
type: :development
|
190
|
-
prerelease: false
|
191
|
-
version_requirements: !ruby/object:Gem::Requirement
|
192
|
-
requirements:
|
193
|
-
- - ">="
|
194
|
-
- !ruby/object:Gem::Version
|
195
|
-
version: '0'
|
196
|
-
- !ruby/object:Gem::Dependency
|
197
|
-
name: yard
|
198
|
-
requirement: !ruby/object:Gem::Requirement
|
199
|
-
requirements:
|
200
|
-
- - ">="
|
201
|
-
- !ruby/object:Gem::Version
|
202
|
-
version: '0'
|
203
|
-
type: :development
|
204
|
-
prerelease: false
|
205
|
-
version_requirements: !ruby/object:Gem::Requirement
|
206
|
-
requirements:
|
207
|
-
- - ">="
|
208
|
-
- !ruby/object:Gem::Version
|
209
|
-
version: '0'
|
210
28
|
description: Vendored version of exiftool
|
211
29
|
email:
|
212
30
|
- matthew+github@mceachen.org
|