exiftool-vendored.pl 12.41.0 → 12.44.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.
Files changed (43) hide show
  1. package/bin/Changes +60 -1
  2. package/bin/META.json +1 -1
  3. package/bin/META.yml +1 -1
  4. package/bin/README +2 -2
  5. package/bin/exiftool +5 -4
  6. package/bin/lib/Image/ExifTool/Apple.pm +11 -2
  7. package/bin/lib/Image/ExifTool/Canon.pm +39 -24
  8. package/bin/lib/Image/ExifTool/DJI.pm +60 -1
  9. package/bin/lib/Image/ExifTool/DNG.pm +8 -2
  10. package/bin/lib/Image/ExifTool/DarwinCore.pm +13 -1
  11. package/bin/lib/Image/ExifTool/Exif.pm +9 -0
  12. package/bin/lib/Image/ExifTool/FlashPix.pm +23 -2
  13. package/bin/lib/Image/ExifTool/FujiFilm.pm +23 -2
  14. package/bin/lib/Image/ExifTool/GPS.pm +21 -1
  15. package/bin/lib/Image/ExifTool/Geotag.pm +24 -4
  16. package/bin/lib/Image/ExifTool/ICC_Profile.pm +10 -8
  17. package/bin/lib/Image/ExifTool/ID3.pm +5 -5
  18. package/bin/lib/Image/ExifTool/LNK.pm +5 -2
  19. package/bin/lib/Image/ExifTool/MakerNotes.pm +5 -0
  20. package/bin/lib/Image/ExifTool/Motorola.pm +8 -2
  21. package/bin/lib/Image/ExifTool/Nikon.pm +84 -29
  22. package/bin/lib/Image/ExifTool/NikonCustom.pm +4 -1
  23. package/bin/lib/Image/ExifTool/Olympus.pm +21 -2
  24. package/bin/lib/Image/ExifTool/PDF.pm +2 -1
  25. package/bin/lib/Image/ExifTool/Panasonic.pm +10 -1
  26. package/bin/lib/Image/ExifTool/Parrot.pm +96 -2
  27. package/bin/lib/Image/ExifTool/Pentax.pm +1 -1
  28. package/bin/lib/Image/ExifTool/Photoshop.pm +6 -5
  29. package/bin/lib/Image/ExifTool/QuickTime.pm +7 -1
  30. package/bin/lib/Image/ExifTool/QuickTimeStream.pl +41 -6
  31. package/bin/lib/Image/ExifTool/README +8 -2
  32. package/bin/lib/Image/ExifTool/Samsung.pm +233 -2
  33. package/bin/lib/Image/ExifTool/Shortcuts.pm +2 -1
  34. package/bin/lib/Image/ExifTool/Sony.pm +36 -28
  35. package/bin/lib/Image/ExifTool/TagLookup.pm +2528 -2483
  36. package/bin/lib/Image/ExifTool/TagNames.pod +192 -97
  37. package/bin/lib/Image/ExifTool/WritePhotoshop.pl +5 -5
  38. package/bin/lib/Image/ExifTool/Writer.pl +4 -3
  39. package/bin/lib/Image/ExifTool.pm +40 -16
  40. package/bin/lib/Image/ExifTool.pod +13 -4
  41. package/bin/perl-Image-ExifTool.spec +1 -1
  42. package/bin/pp_build_exe.args +4 -4
  43. package/package.json +3 -3
@@ -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.41';
32
+ $VERSION = '12.44';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -2209,6 +2209,20 @@ sub Options($$;@)
2209
2209
  } else {
2210
2210
  $$options{$param} = undef; # clear the list
2211
2211
  }
2212
+ } elsif ($param eq 'IgnoreTags') {
2213
+ if (defined $newVal) {
2214
+ # parse list from delimited string if necessary
2215
+ my @ignoreList = (ref $newVal eq 'ARRAY') ? @$newVal : ($newVal =~ /[-\w?*:]+/g);
2216
+ ExpandShortcuts(\@ignoreList);
2217
+ # add to existing tags to ignore
2218
+ $$options{$param} or $$options{$param} = { };
2219
+ foreach (@ignoreList) {
2220
+ /^(.*:)?([-\w?*]+)#?$/ or next;
2221
+ $$options{$param}{lc $2} = 1;
2222
+ }
2223
+ } else {
2224
+ $$options{$param} = undef; # clear the option
2225
+ }
2212
2226
  } elsif ($param eq 'ListJoin') {
2213
2227
  $$options{$param} = $newVal;
2214
2228
  # set the old List and ListSep options for backward compatibility
@@ -2321,6 +2335,7 @@ sub ClearOptions($)
2321
2335
  HtmlDump => 0, # HTML dump (0-3, higher # = bigger limit)
2322
2336
  HtmlDumpBase => undef, # base address for HTML dump
2323
2337
  IgnoreMinorErrors => undef, # ignore minor errors when reading/writing
2338
+ IgnoreTags => undef, # list of tags to ignore when extracting
2324
2339
  Lang => $defaultLang,# localized language for descriptions etc
2325
2340
  LargeFileSupport => undef, # flag indicating support of 64-bit file offsets
2326
2341
  List => undef, # extract lists of PrintConv values into arrays [no longer documented]
@@ -5863,7 +5878,7 @@ sub GetUnixTime($;$)
5863
5878
  {
5864
5879
  my ($timeStr, $isLocal) = @_;
5865
5880
  return 0 if $timeStr eq '0000:00:00 00:00:00';
5866
- my @tm = ($timeStr =~ /^(\d+):(\d+):(\d+)\s+(\d+):(\d+):(\d+)(.*)/);
5881
+ my @tm = ($timeStr =~ /^(\d+)[-:](\d+)[-:](\d+)\s+(\d+):(\d+):(\d+)(.*)/);
5867
5882
  return undef unless @tm == 7;
5868
5883
  unless (eval { require Time::Local }) {
5869
5884
  warn "Time::Local is not installed\n";
@@ -5896,13 +5911,13 @@ sub GetUnixTime($;$)
5896
5911
  sub ConvertFileSize($)
5897
5912
  {
5898
5913
  my $val = shift;
5899
- $val < 2048 and return "$val bytes";
5900
- $val < 10240 and return sprintf('%.1f KiB', $val / 1024);
5901
- $val < 2097152 and return sprintf('%.0f KiB', $val / 1024);
5902
- $val < 10485760 and return sprintf('%.1f MiB', $val / 1048576);
5903
- $val < 2147483648 and return sprintf('%.0f MiB', $val / 1048576);
5904
- $val < 10737418240 and return sprintf('%.1f GiB', $val / 1073741824);
5905
- return sprintf('%.0f GiB', $val / 1073741824);
5914
+ $val < 2000 and return "$val bytes";
5915
+ $val < 10000 and return sprintf('%.1f kB', $val / 1000);
5916
+ $val < 2000000 and return sprintf('%.0f kB', $val / 1000);
5917
+ $val < 10000000 and return sprintf('%.1f MB', $val / 1000000);
5918
+ $val < 2000000000 and return sprintf('%.0f MB', $val / 1000000);
5919
+ $val < 10000000000 and return sprintf('%.1f GB', $val / 1000000000);
5920
+ return sprintf('%.0f GB', $val / 1000000000);
5906
5921
  }
5907
5922
 
5908
5923
  #------------------------------------------------------------------------------
@@ -7686,8 +7701,8 @@ sub DoProcessTIFF($$;$)
7686
7701
  # check DNG version
7687
7702
  if ($$self{DNGVersion}) {
7688
7703
  my $ver = $$self{DNGVersion};
7689
- # currently support up to DNG version 1.5
7690
- unless ($ver =~ /^(\d+) (\d+)/ and "$1.$2" <= 1.5) {
7704
+ # currently support up to DNG version 1.6
7705
+ unless ($ver =~ /^(\d+) (\d+)/ and "$1.$2" <= 1.6) {
7691
7706
  $ver =~ tr/ /./;
7692
7707
  $self->Error("DNG Version $ver not yet tested", 1);
7693
7708
  }
@@ -7955,11 +7970,11 @@ sub GetTagInfo($$$;$$$)
7955
7970
  next;
7956
7971
  }
7957
7972
  }
7958
- if ($$tagInfo{Unknown} and not $$self{OPTIONS}{Unknown} and
7959
- not $$self{OPTIONS}{Verbose} and not $$self{OPTIONS}{Validate} and
7960
- not $$self{HTML_DUMP})
7973
+ # don't return Unknown tags unless that option is set (also see forum13716)
7974
+ if ($$tagInfo{Unknown} and not $$self{OPTIONS}{Unknown} and not
7975
+ ($$self{OPTIONS}{Verbose} or $$self{HTML_DUMP} or
7976
+ ($$self{OPTIONS}{Validate} and not $$tagInfo{AddedUnknown})))
7961
7977
  {
7962
- # don't return Unknown tags unless that option is set
7963
7978
  return undef;
7964
7979
  }
7965
7980
  # return the tag information we found
@@ -7984,6 +7999,7 @@ sub GetTagInfo($$$;$$$)
7984
7999
  Unknown => 1,
7985
8000
  Writable => 0, # can't write unknown tags
7986
8001
  PrintConv => $printConv,
8002
+ AddedUnknown => 1,
7987
8003
  };
7988
8004
  # add tag information to table
7989
8005
  AddTagToTable($tagTablePtr, $tagID, $tagInfo);
@@ -8233,6 +8249,14 @@ sub FoundTag($$$;@)
8233
8249
  $self->Warn("RawConv $tag: " . CleanWarning()) if $evalWarning;
8234
8250
  return undef unless defined $value;
8235
8251
  }
8252
+ # ignore specified tags (AFTER doing RawConv if necessary!)
8253
+ if ($$options{IgnoreTags}) {
8254
+ if ($$options{IgnoreTags}{all}) {
8255
+ return undef unless $$self{REQ_TAG_LOOKUP}{lc $tag};
8256
+ } else {
8257
+ return undef if $$options{IgnoreTags}{lc $tag};
8258
+ }
8259
+ }
8236
8260
  # handle duplicate tag names
8237
8261
  if (defined $$valueHash{$tag}) {
8238
8262
  # add to list if there is an active list for this tag
@@ -8444,7 +8468,7 @@ sub SetFileType($;$$$)
8444
8468
 
8445
8469
  #------------------------------------------------------------------------------
8446
8470
  # Override the FileType and MIMEType tags
8447
- # Inputs: 0) ExifTool object ref, 1) file type, 2) MIME type, 3) normal extension
8471
+ # Inputs: 0) ExifTool object ref, 1) file type, 2) MIME type, 3) normal extension (lower case)
8448
8472
  # Notes: does nothing if FileType was not previously defined (ie. when writing)
8449
8473
  sub OverrideFileType($$;$$)
8450
8474
  {
@@ -776,6 +776,15 @@ images even if they don't have a recognizable header). Minor errors and
776
776
  warnings are denoted by "[minor]" at the start of the message, or "[Minor]"
777
777
  (with a capital "M") for warnings that affect processing when ignored.
778
778
 
779
+ =item IgnoreTags
780
+
781
+ List of tag names to ignore when reading. This may help in situations where
782
+ memory is limited because the ignored tag values are not stored in memory.
783
+ The tag names are case insensitive and group names and wildcards are not
784
+ allowed. A special tag name of "All" may be used to ignore all tags except
785
+ those specified by the L</RequestTags> option. Set to undef to clear the
786
+ previous IgnoreTags list. Default is undef.
787
+
779
788
  =item Lang
780
789
 
781
790
  Localized language for exiftool tag descriptions, etc. Available languages
@@ -1103,10 +1112,10 @@ L</ExtractInfo>:
1103
1112
  Binary, Charset, CharsetEXIF, CharsetFileName, CharsetID3, CharsetIPTC,
1104
1113
  CharsetPhotoshop, CharsetQuickTime, CharsetRIFF, Composite, ExtendedXMP,
1105
1114
  ExtractEmbedded, FastScan, FixBase, HtmlDump, HtmlDumpBase,
1106
- IgnoreMinorErrors, Lang, LargeFileSupport, MakerNotes, MDItemTags,
1107
- NoPDFList, Password, QuickTimeUTC (enforced 1904 time zero), RequestAll,
1108
- RequestTags, SaveFormat, SavePath, ScanForXMP, Struct, TextOut, Unknown,
1109
- Verbose, XAttrTags and XMPAutoConv.
1115
+ IgnoreMinorErrors, IgnoreTags, Lang, LargeFileSupport, MakerNotes,
1116
+ MDItemTags, NoPDFList, Password, QuickTimeUTC (enforced 1904 time zero),
1117
+ RequestAll, RequestTags, SaveFormat, SavePath, ScanForXMP, Struct, TextOut,
1118
+ Unknown, Verbose, XAttrTags and XMPAutoConv.
1110
1119
 
1111
1120
  =item Return Value:
1112
1121
 
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 12.41
3
+ Version: 12.44
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -21,10 +21,10 @@
21
21
  # 10) Copy zip archive to web servers.
22
22
  # 11) Update zip file version in link and text of html/index.html.
23
23
  #------------------------------------------------------------------------------
24
- -T exiftool-12.41
25
- #--info=FileVersion=12.4.1.0
26
- #--info=ProductVersion=12.4.1.0
27
- ##"--info=Build Date=2022:04:07 11:32:41-04:00"
24
+ -T exiftool-12.44
25
+ #--info=FileVersion=12.4.4.0
26
+ #--info=ProductVersion=12.4.4.0
27
+ ##"--info=Build Date=2022:07:21 06:23:10-04:00"
28
28
  ##"--info=Bundled Perl Version=ActivePerl 5.24.0"
29
29
  ##"--info=LegalCopyright=Copyright (c) 2003-2022, Phil Harvey"
30
30
  ##"--info=ProductName=ExifTool"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "exiftool-vendored.pl",
3
- "version": "12.41.0",
3
+ "version": "12.44.0",
4
4
  "description": "Vendored perl ExifTool for Node.js",
5
5
  "main": "./index.js",
6
6
  "homepage": "https://github.com/mceachen/exiftool-vendored.pl#readme",
@@ -42,8 +42,8 @@
42
42
  }
43
43
  },
44
44
  "devDependencies": {
45
- "mocha": "^9.2.2",
46
- "prettier": "^2.6.2",
45
+ "mocha": "^10.0.0",
46
+ "prettier": "^2.7.1",
47
47
  "rimraf": "^3.0.2"
48
48
  }
49
49
  }