exiftool_vendored 13.10.0 → 13.14.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 (216) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +82 -19
  3. data/bin/MANIFEST +6 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +3 -3
  7. data/bin/arg_files/exif2xmp.args +4 -0
  8. data/bin/arg_files/xmp2exif.args +2 -1
  9. data/bin/build_geolocation +1 -1
  10. data/bin/exiftool +208 -150
  11. data/bin/lib/File/RandomAccess.pm +1 -1
  12. data/bin/lib/File/RandomAccess.pod +2 -2
  13. data/bin/lib/Image/ExifTool/AAC.pm +1 -1
  14. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  15. data/bin/lib/Image/ExifTool/AFCP.pm +6 -6
  16. data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  17. data/bin/lib/Image/ExifTool/APE.pm +1 -1
  18. data/bin/lib/Image/ExifTool/APP12.pm +1 -1
  19. data/bin/lib/Image/ExifTool/ASF.pm +1 -1
  20. data/bin/lib/Image/ExifTool/Apple.pm +1 -1
  21. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  22. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  23. data/bin/lib/Image/ExifTool/BPG.pm +1 -1
  24. data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  25. data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  26. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +29 -18
  27. data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  28. data/bin/lib/Image/ExifTool/Canon.pm +8 -4
  29. data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  30. data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  31. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  32. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  33. data/bin/lib/Image/ExifTool/Casio.pm +1 -1
  34. data/bin/lib/Image/ExifTool/Charset.pm +1 -1
  35. data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  36. data/bin/lib/Image/ExifTool/DJI.pm +150 -46
  37. data/bin/lib/Image/ExifTool/DNG.pm +1 -1
  38. data/bin/lib/Image/ExifTool/DPX.pm +1 -1
  39. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  40. data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  41. data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  42. data/bin/lib/Image/ExifTool/EXE.pm +123 -32
  43. data/bin/lib/Image/ExifTool/Exif.pm +7 -4
  44. data/bin/lib/Image/ExifTool/FITS.pm +1 -1
  45. data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  46. data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  47. data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
  48. data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
  49. data/bin/lib/Image/ExifTool/Flash.pm +1 -1
  50. data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  51. data/bin/lib/Image/ExifTool/Font.pm +1 -1
  52. data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  53. data/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
  54. data/bin/lib/Image/ExifTool/GE.pm +1 -1
  55. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  56. data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  57. data/bin/lib/Image/ExifTool/GM.pm +1 -1
  58. data/bin/lib/Image/ExifTool/GPS.pm +1 -1
  59. data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  60. data/bin/lib/Image/ExifTool/Geolocation.pm +17 -8
  61. data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
  62. data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  63. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  64. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  65. data/bin/lib/Image/ExifTool/HTML.pm +1 -1
  66. data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  67. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  68. data/bin/lib/Image/ExifTool/ICO.pm +1 -1
  69. data/bin/lib/Image/ExifTool/ID3.pm +1 -1
  70. data/bin/lib/Image/ExifTool/IPTC.pm +8 -5
  71. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  72. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  73. data/bin/lib/Image/ExifTool/Import.pm +5 -4
  74. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  75. data/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
  76. data/bin/lib/Image/ExifTool/JPEG.pm +6 -2
  77. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  78. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  79. data/bin/lib/Image/ExifTool/JVC.pm +1 -1
  80. data/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
  81. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  82. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  83. data/bin/lib/Image/ExifTool/LIF.pm +1 -1
  84. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  85. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  87. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  88. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  89. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
  92. data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  93. data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  94. data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  95. data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  96. data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  97. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  98. data/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
  99. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  100. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  101. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  102. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  103. data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  104. data/bin/lib/Image/ExifTool/LigoGPS.pm +409 -0
  105. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  106. data/bin/lib/Image/ExifTool/M2TS.pm +22 -13
  107. data/bin/lib/Image/ExifTool/MIE.pm +1 -1
  108. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  109. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  110. data/bin/lib/Image/ExifTool/MISB.pm +1 -1
  111. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  112. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  113. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  114. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  115. data/bin/lib/Image/ExifTool/MPF.pm +1 -1
  116. data/bin/lib/Image/ExifTool/MRC.pm +1 -1
  117. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  118. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  119. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  120. data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  121. data/bin/lib/Image/ExifTool/Matroska.pm +12 -4
  122. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  123. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  124. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  125. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  126. data/bin/lib/Image/ExifTool/Nikon.pm +166 -35
  127. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  128. data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
  129. data/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
  130. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  131. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  132. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  133. data/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  134. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  135. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  136. data/bin/lib/Image/ExifTool/Other.pm +1 -1
  137. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  138. data/bin/lib/Image/ExifTool/PDF.pm +1 -1
  139. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  140. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  141. data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
  142. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  143. data/bin/lib/Image/ExifTool/PNG.pm +1 -1
  144. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  145. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  146. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  147. data/bin/lib/Image/ExifTool/Panasonic.pm +20 -2
  148. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  149. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  150. data/bin/lib/Image/ExifTool/Pentax.pm +1 -1
  151. data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  152. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  153. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  154. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  155. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  156. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  157. data/bin/lib/Image/ExifTool/Protobuf.pm +48 -20
  158. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  159. data/bin/lib/Image/ExifTool/QuickTime.pm +206 -66
  160. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +21 -303
  161. data/bin/lib/Image/ExifTool/README +4 -0
  162. data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  163. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  164. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  165. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  166. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  167. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  168. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  169. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  170. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  171. data/bin/lib/Image/ExifTool/Samsung.pm +2 -2
  172. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  173. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  174. data/bin/lib/Image/ExifTool/Shift.pl +1 -1
  175. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  176. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  177. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  178. data/bin/lib/Image/ExifTool/Sony.pm +1 -1
  179. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  180. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  181. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  182. data/bin/lib/Image/ExifTool/TagLookup.pm +3449 -3435
  183. data/bin/lib/Image/ExifTool/TagNames.pod +164 -47
  184. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  185. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  186. data/bin/lib/Image/ExifTool/Torrent.pm +3 -3
  187. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  188. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  189. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  190. data/bin/lib/Image/ExifTool/Vivo.pm +124 -0
  191. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  192. data/bin/lib/Image/ExifTool/WPG.pm +1 -1
  193. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  194. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  195. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  196. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  197. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  198. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  199. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  200. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  201. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +74 -43
  202. data/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  203. data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
  204. data/bin/lib/Image/ExifTool/Writer.pl +21 -16
  205. data/bin/lib/Image/ExifTool/XISF.pm +1 -1
  206. data/bin/lib/Image/ExifTool/XMP.pm +1 -1
  207. data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
  208. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  209. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  210. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  211. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  212. data/bin/lib/Image/ExifTool.pm +34 -12
  213. data/bin/lib/Image/ExifTool.pod +57 -46
  214. data/bin/perl-Image-ExifTool.spec +1 -1
  215. data/lib/exiftool_vendored/version.rb +1 -1
  216. metadata +4 -2
@@ -354,7 +354,7 @@ linear list when ApplyFixups() is called.
354
354
 
355
355
  =head1 AUTHOR
356
356
 
357
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
357
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
358
358
 
359
359
  This library is free software; you can redistribute it and/or modify it
360
360
  under the same terms as Perl itself.
@@ -721,7 +721,7 @@ will add AMF3 support.
721
721
 
722
722
  =head1 AUTHOR
723
723
 
724
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
724
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
725
725
 
726
726
  This library is free software; you can redistribute it and/or modify it
727
727
  under the same terms as Perl itself.
@@ -2557,7 +2557,7 @@ JPEG images.
2557
2557
 
2558
2558
  =head1 AUTHOR
2559
2559
 
2560
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2560
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2561
2561
 
2562
2562
  This library is free software; you can redistribute it and/or modify it
2563
2563
  under the same terms as Perl itself.
@@ -633,7 +633,7 @@ extracted from these formats.
633
633
 
634
634
  =head1 AUTHOR
635
635
 
636
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
636
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
637
637
 
638
638
  This library is free software; you can redistribute it and/or modify it
639
639
  under the same terms as Perl itself.
@@ -243,7 +243,7 @@ write information from the FotoWare FotoStation trailer.
243
243
 
244
244
  =head1 AUTHOR
245
245
 
246
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
246
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
247
247
 
248
248
  This library is free software; you can redistribute it and/or modify it
249
249
  under the same terms as Perl itself.
@@ -1959,7 +1959,7 @@ FujiFilm maker notes in EXIF information, and to read/write FujiFilm RAW
1959
1959
 
1960
1960
  =head1 AUTHOR
1961
1961
 
1962
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1962
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1963
1963
 
1964
1964
  This library is free software; you can redistribute it and/or modify it
1965
1965
  under the same terms as Perl itself.
@@ -68,7 +68,7 @@ General Imaging maker notes.
68
68
 
69
69
  =head1 AUTHOR
70
70
 
71
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
71
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
72
72
 
73
73
  This library is free software; you can redistribute it and/or modify it
74
74
  under the same terms as Perl itself.
@@ -596,7 +596,7 @@ write GIF meta information.
596
596
 
597
597
  =head1 AUTHOR
598
598
 
599
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
599
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
600
600
 
601
601
  This library is free software; you can redistribute it and/or modify it
602
602
  under the same terms as Perl itself.
@@ -270,7 +270,7 @@ GIMP software.
270
270
 
271
271
  =head1 AUTHOR
272
272
 
273
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
273
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
274
274
 
275
275
  This library is free software; you can redistribute it and/or modify it
276
276
  under the same terms as Perl itself.
@@ -531,7 +531,7 @@ metadata from videos written by some GM models such as Corvette and Camero.
531
531
 
532
532
  =head1 AUTHOR
533
533
 
534
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
534
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
535
535
 
536
536
  This library is free software; you can redistribute it and/or modify it
537
537
  under the same terms as Perl itself.
@@ -619,7 +619,7 @@ GPS (Global Positioning System) meta information in EXIF data.
619
619
 
620
620
  =head1 AUTHOR
621
621
 
622
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
622
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
623
623
 
624
624
  This library is free software; you can redistribute it and/or modify it
625
625
  under the same terms as Perl itself.
@@ -2242,7 +2242,7 @@ coordinates.
2242
2242
 
2243
2243
  =head1 AUTHOR
2244
2244
 
2245
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2245
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2246
2246
 
2247
2247
  This library is free software; you can redistribute it and/or modify it
2248
2248
  under the same terms as Perl itself.
@@ -71,7 +71,7 @@ package Image::ExifTool::Geolocation;
71
71
  use strict;
72
72
  use vars qw($VERSION $geoDir $altDir $dbInfo);
73
73
 
74
- $VERSION = '1.08'; # (this is the module version number, not the database version)
74
+ $VERSION = '1.09'; # (this is the module version number, not the database version)
75
75
 
76
76
  my $debug; # set to output processing time for testing
77
77
 
@@ -463,7 +463,7 @@ sub GetAltNames($;$)
463
463
  sub Geolocate($;$)
464
464
  {
465
465
  my ($arg, $opts) = @_;
466
- my ($city, @exact, %regex, @multiCity, $other, $idx, @cargs, $useLastFound);
466
+ my ($city, @exact, %regex, @multiCity, $other, $idx, @cargs);
467
467
  my ($minPop, $minDistU, $minDistC, @matchParms, @coords, %fcOK, $both);
468
468
  my ($pop, $maxDist, $multi, $fcodes, $altNames, @startTime);
469
469
 
@@ -594,8 +594,16 @@ Entry: for (; $i<@cityList; ++$i) {
594
594
  }
595
595
  @startTime and printf("= Processing time: %.3f sec\n", Time::HiRes::tv_interval(\@startTime));
596
596
  if (%lastFound) {
597
- @coords == 2 and $useLastFound = 1, last; # continue to use coords with last city matches
597
+ last if @coords == 2; # continue to use coords with last city matches
598
598
  scalar(keys %lastFound) > 200 and warn("Too many matching cities\n"), return();
599
+ # return nearby cities if "num=" is used and only one match found
600
+ if ($num > 1 and scalar(keys %lastFound) == 1) {
601
+ my ($i) = keys %lastFound;
602
+ my @entry = GetEntry($i);
603
+ @coords = @entry[8,9];
604
+ SortDatabase('Latitude'); # (make sure we are sorted by latitude)
605
+ last;
606
+ }
599
607
  unless (@lastByPop) {
600
608
  @lastByPop = sort { $lastFound{$b} cmp $lastFound{$a} or $cityList[$a] cmp $cityList[$b] } keys %lastFound;
601
609
  }
@@ -777,7 +785,7 @@ on the first call.
777
785
 
778
786
  Sort database in specified order.
779
787
 
780
- Image::ExifTool::Geolocation::ReadDatabase('City');
788
+ Image::ExifTool::Geolocation::SortDatabase('City');
781
789
 
782
790
  =over 4
783
791
 
@@ -924,9 +932,10 @@ to the argument list:
924
932
  both to determine the closest city matching the specified
925
933
  name(s) instead of using GPS only.
926
934
 
927
- 'num=##' - When the search includes GPS coordinates, return the nearest
928
- ## cities instead of just the closest one. Returned cities
929
- are in the order from nearest to farthest.
935
+ 'num=##' - When the search includes GPS coordinates, or when a single
936
+ city is matched by name, return the nearest ## cities instead
937
+ of just the closest or named one. Returned cities are in the
938
+ order from nearest to farthest.
930
939
 
931
940
  See L<https://exiftool.org/geolocation.html#Read> for more details.
932
941
 
@@ -1006,7 +1015,7 @@ the input arguments of the AddEntry method.
1006
1015
 
1007
1016
  =head1 AUTHOR
1008
1017
 
1009
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1018
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1010
1019
 
1011
1020
  This library is free software; you can redistribute it and/or modify it
1012
1021
  under the same terms as Perl itself. The associated database files are
@@ -1561,7 +1561,7 @@ user-defined tag GPSRoll, must be active.
1561
1561
 
1562
1562
  =head1 AUTHOR
1563
1563
 
1564
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1564
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1565
1565
 
1566
1566
  This library is free software; you can redistribute it and/or modify it
1567
1567
  under the same terms as Perl itself.
@@ -860,7 +860,7 @@ metadata from GoPro MP4 videos.
860
860
 
861
861
  =head1 AUTHOR
862
862
 
863
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
863
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
864
864
 
865
865
  This library is free software; you can redistribute it and/or modify it
866
866
  under the same terms as Perl itself.
@@ -1123,7 +1123,7 @@ information from H.264 video streams.
1123
1123
 
1124
1124
  =head1 AUTHOR
1125
1125
 
1126
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1126
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1127
1127
 
1128
1128
  This library is free software; you can redistribute it and/or modify it
1129
1129
  under the same terms as Perl itself.
@@ -250,7 +250,7 @@ Hewlett-Packard maker notes.
250
250
 
251
251
  =head1 AUTHOR
252
252
 
253
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
253
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
254
254
 
255
255
  This library is free software; you can redistribute it and/or modify it
256
256
  under the same terms as Perl itself.
@@ -555,7 +555,7 @@ meta information from HTML documents.
555
555
 
556
556
  =head1 AUTHOR
557
557
 
558
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
558
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
559
559
 
560
560
  This library is free software; you can redistribute it and/or modify it
561
561
  under the same terms as Perl itself.
@@ -920,7 +920,7 @@ page.
920
920
 
921
921
  =head1 AUTHOR
922
922
 
923
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
923
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
924
924
 
925
925
  This library is free software; you can redistribute it and/or modify it
926
926
  under the same terms as Perl itself.
@@ -1436,7 +1436,7 @@ data created on one device into another device's native color space.
1436
1436
 
1437
1437
  =head1 AUTHOR
1438
1438
 
1439
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1439
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1440
1440
 
1441
1441
  This library is free software; you can redistribute it and/or modify it
1442
1442
  under the same terms as Perl itself.
@@ -121,7 +121,7 @@ information from Windows ICO (icon) and CUR (cursor) files.
121
121
 
122
122
  =head1 AUTHOR
123
123
 
124
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
124
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
125
125
 
126
126
  This library is free software; you can redistribute it and/or modify it
127
127
  under the same terms as Perl itself.
@@ -1746,7 +1746,7 @@ other types of audio files.
1746
1746
 
1747
1747
  =head1 AUTHOR
1748
1748
 
1749
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1749
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1750
1750
 
1751
1751
  This library is free software; you can redistribute it and/or modify it
1752
1752
  under the same terms as Perl itself.
@@ -15,7 +15,7 @@ use strict;
15
15
  use vars qw($VERSION $AUTOLOAD %iptcCharset);
16
16
  use Image::ExifTool qw(:DataAccess :Utils);
17
17
 
18
- $VERSION = '1.58';
18
+ $VERSION = '1.59';
19
19
 
20
20
  %iptcCharset = (
21
21
  "\x1b%G" => 'UTF8',
@@ -1057,7 +1057,7 @@ sub ProcessIPTC($$$)
1057
1057
  my $verbose = $et->Options('Verbose');
1058
1058
  my $validate = $et->Options('Validate');
1059
1059
  my $success = 0;
1060
- my ($lastRec, $recordPtr, $recordName);
1060
+ my ($lastRec, $recordPtr, $recordName, %seen);
1061
1061
 
1062
1062
  $verbose and $dirInfo and $et->VerboseDir('IPTC', 0, $$dirInfo{DirLen});
1063
1063
 
@@ -1083,7 +1083,7 @@ sub ProcessIPTC($$$)
1083
1083
  $et->FoundTag('CurrentIPTCDigest', $md5);
1084
1084
  }
1085
1085
  } else {
1086
- if (($Image::ExifTool::MWG::strict or $et->Options('Validate')) and
1086
+ if (($Image::ExifTool::MWG::strict or $validate) and
1087
1087
  $$et{FILE_TYPE} =~ /^(JPEG|TIFF|PSD)$/)
1088
1088
  {
1089
1089
  if ($Image::ExifTool::MWG::strict) {
@@ -1186,8 +1186,11 @@ sub ProcessIPTC($$$)
1186
1186
  # - no Name so name is generated automatically with decimal tag number
1187
1187
  AddTagToTable($recordPtr, $tag, { Unknown => 1 });
1188
1188
  }
1189
-
1190
1189
  my $tagInfo = $et->GetTagInfo($recordPtr, $tag);
1190
+ if ($validate and not $$tagInfo{List} and not $$tagInfo{Unknown}) {
1191
+ $et->Warn("Multiple IPTC $$tagInfo{Name} tags") if $seen{$tagInfo};
1192
+ $seen{$tagInfo} = 1;
1193
+ }
1191
1194
  my $format;
1192
1195
  # (could use $$recordPtr{FORMAT} if no Format below, but don't do this to
1193
1196
  # be backward compatible with improperly written PhotoMechanic tags)
@@ -1284,7 +1287,7 @@ image files.
1284
1287
 
1285
1288
  =head1 AUTHOR
1286
1289
 
1287
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1290
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1288
1291
 
1289
1292
  This library is free software; you can redistribute it and/or modify it
1290
1293
  under the same terms as Perl itself.
@@ -184,7 +184,7 @@ information from ISO 9660 disk images.
184
184
 
185
185
  =head1 AUTHOR
186
186
 
187
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
187
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
188
188
 
189
189
  This library is free software; you can redistribute it and/or modify it
190
190
  under the same terms as Perl itself.
@@ -191,7 +191,7 @@ information (including artwork images) from iTunes Cover Flow files.
191
191
 
192
192
  =head1 AUTHOR
193
193
 
194
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
194
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
195
195
 
196
196
  This library is free software; you can redistribute it and/or modify it
197
197
  under the same terms as Perl itself.
@@ -12,7 +12,7 @@ require Exporter;
12
12
 
13
13
  use vars qw($VERSION @ISA @EXPORT_OK);
14
14
 
15
- $VERSION = '1.13';
15
+ $VERSION = '1.14';
16
16
  @ISA = qw(Exporter);
17
17
  @EXPORT_OK = qw(ReadCSV ReadJSON);
18
18
 
@@ -80,14 +80,15 @@ sub ReadCSV($$;$$)
80
80
  }
81
81
  if (@tags) {
82
82
  # save values for each tag
83
+ $fileInfo{_ordered_keys_} = [ ];
83
84
  for ($i=0; $i<@vals and $i<@tags; ++$i) {
84
85
  # ignore empty entries unless missingValue is empty too
85
86
  next unless length $vals[$i] or defined $missingValue and $missingValue eq '';
86
87
  # delete tag (set value to undef) if value is same as missing tag
87
88
  $fileInfo{$tags[$i]} =
88
89
  (defined $missingValue and $vals[$i] eq $missingValue) ? undef : $vals[$i];
90
+ push @{$fileInfo{_ordered_keys_}}, $tags[$i];
89
91
  }
90
- $fileInfo{_ordered_keys_} = \@tags;
91
92
  # figure out the file name to use
92
93
  if ($fileInfo{SourceFile}) {
93
94
  $$database{$fileInfo{SourceFile}} = \%fileInfo;
@@ -99,7 +100,7 @@ sub ReadCSV($$;$$)
99
100
  # terminate at first blank tag name (eg. extra comma at end of line)
100
101
  last unless length $_;
101
102
  @tags or s/^\xef\xbb\xbf//; # remove UTF-8 BOM if it exists
102
- /^[-\w]+(:[-\w+]+)?#?$/ or $err = "Invalid tag name '${_}'", last;
103
+ /^([-_0-9A-Z]+:)*[-_0-9A-Z]+#?$/i or $err = "Invalid tag name '${_}'", last;
103
104
  push(@tags, $_);
104
105
  }
105
106
  last if $err;
@@ -355,7 +356,7 @@ ARRAY reference in a special "_ordered_keys_" element of this hash.
355
356
 
356
357
  =head1 AUTHOR
357
358
 
358
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
359
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
359
360
 
360
361
  This library is free software; you can redistribute it and/or modify it
361
362
  under the same terms as Perl itself.
@@ -277,7 +277,7 @@ them and the LargeFileSupport option is enabled.
277
277
 
278
278
  =head1 AUTHOR
279
279
 
280
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
280
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
281
281
 
282
282
  This library is free software; you can redistribute it and/or modify it
283
283
  under the same terms as Perl itself.
@@ -206,7 +206,7 @@ IJPEG SDK, used in cameras such as the P2 Pro.
206
206
 
207
207
  =head1 AUTHOR
208
208
 
209
- Copyright 2003-2024, Marcos Del Sol Vives (marcos at orca.pet)
209
+ Copyright 2003-2025, Marcos Del Sol Vives (marcos at orca.pet)
210
210
 
211
211
  This library is free software; you can redistribute it and/or modify it
212
212
  under the same terms as Perl itself.
@@ -11,7 +11,7 @@ use strict;
11
11
  use vars qw($VERSION);
12
12
  use Image::ExifTool qw(:DataAccess :Utils);
13
13
 
14
- $VERSION = '1.38';
14
+ $VERSION = '1.39';
15
15
 
16
16
  sub ProcessOcad($$$);
17
17
  sub ProcessJPEG_HDR($$$);
@@ -347,6 +347,10 @@ sub ProcessJPEG_HDR($$$);
347
347
  Name => 'Samsung',
348
348
  Condition => '$$valPt =~ /QDIOBS$/',
349
349
  SubDirectory => { TagTable => 'Image::ExifTool::Samsung::Trailer' },
350
+ }, {
351
+ Name => 'Vivo',
352
+ Condition => '$$valPt =~ /^(streamdata|vivo\{")/',
353
+ SubDirectory => { TagTable => 'Image::ExifTool::Vivo::Main' },
350
354
  }, {
351
355
  Name => 'EmbeddedVideo',
352
356
  Notes => 'extracted only when ExtractEmbedded option is used',
@@ -791,7 +795,7 @@ segments are included in the Image::ExifTool module itself.
791
795
 
792
796
  =head1 AUTHOR
793
797
 
794
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
798
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
795
799
 
796
800
  This library is free software; you can redistribute it and/or modify it
797
801
  under the same terms as Perl itself.
@@ -2590,7 +2590,7 @@ estimated JPEG quality if requested.
2590
2590
 
2591
2591
  =head1 AUTHOR
2592
2592
 
2593
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2593
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2594
2594
 
2595
2595
  This library is free software; you can redistribute it and/or modify it
2596
2596
  under the same terms as Perl itself.
@@ -183,7 +183,7 @@ information from JSON files.
183
183
 
184
184
  =head1 AUTHOR
185
185
 
186
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
186
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
187
187
 
188
188
  This library is free software; you can redistribute it and/or modify it
189
189
  under the same terms as Perl itself.
@@ -117,7 +117,7 @@ notes.
117
117
 
118
118
  =head1 AUTHOR
119
119
 
120
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
120
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
121
121
 
122
122
  This library is free software; you can redistribute it and/or modify it
123
123
  under the same terms as Perl itself.
@@ -1671,7 +1671,7 @@ files.
1671
1671
 
1672
1672
  =head1 AUTHOR
1673
1673
 
1674
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1674
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1675
1675
 
1676
1676
  This library is free software; you can redistribute it and/or modify it
1677
1677
  under the same terms as Perl itself.
@@ -3252,7 +3252,7 @@ interpret Kodak maker notes EXIF meta information.
3252
3252
 
3253
3253
  =head1 AUTHOR
3254
3254
 
3255
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
3255
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
3256
3256
 
3257
3257
  This library is free software; you can redistribute it and/or modify it
3258
3258
  under the same terms as Perl itself.
@@ -152,7 +152,7 @@ meta information from Kyocera Contax N Digital RAW images.
152
152
 
153
153
  =head1 AUTHOR
154
154
 
155
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
155
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
156
156
 
157
157
  This library is free software; you can redistribute it and/or modify it
158
158
  under the same terms as Perl itself.
@@ -147,7 +147,7 @@ metadata from Leica Image File (LIF) images.
147
147
 
148
148
  =head1 AUTHOR
149
149
 
150
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
150
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
151
151
 
152
152
  This library is free software; you can redistribute it and/or modify it
153
153
  under the same terms as Perl itself.
@@ -703,7 +703,7 @@ information MS Shell Link (Windows shortcut) files.
703
703
 
704
704
  =head1 AUTHOR
705
705
 
706
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
706
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
707
707
 
708
708
  This library is free software; you can redistribute it and/or modify it
709
709
  under the same terms as Perl itself.
@@ -1570,7 +1570,7 @@ and values.
1570
1570
 
1571
1571
  =head1 AUTHOR
1572
1572
 
1573
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1573
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1574
1574
 
1575
1575
  This library is free software; you can redistribute it and/or modify it
1576
1576
  under the same terms as Perl itself.
@@ -8702,7 +8702,7 @@ and values.
8702
8702
 
8703
8703
  =head1 AUTHOR
8704
8704
 
8705
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
8705
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
8706
8706
 
8707
8707
  This library is free software; you can redistribute it and/or modify it
8708
8708
  under the same terms as Perl itself.
@@ -989,7 +989,7 @@ and values.
989
989
 
990
990
  =head1 AUTHOR
991
991
 
992
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
992
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
993
993
 
994
994
  This library is free software; you can redistribute it and/or modify it
995
995
  under the same terms as Perl itself.
@@ -1032,7 +1032,7 @@ and values.
1032
1032
 
1033
1033
  =head1 AUTHOR
1034
1034
 
1035
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1035
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1036
1036
 
1037
1037
  This library is free software; you can redistribute it and/or modify it
1038
1038
  under the same terms as Perl itself.
@@ -4005,7 +4005,7 @@ and values.
4005
4005
 
4006
4006
  =head1 AUTHOR
4007
4007
 
4008
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
4008
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
4009
4009
 
4010
4010
  This library is free software; you can redistribute it and/or modify it
4011
4011
  under the same terms as Perl itself.
@@ -2878,7 +2878,7 @@ and values.
2878
2878
 
2879
2879
  =head1 AUTHOR
2880
2880
 
2881
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2881
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2882
2882
 
2883
2883
  This library is free software; you can redistribute it and/or modify it
2884
2884
  under the same terms as Perl itself.
@@ -11270,7 +11270,7 @@ and values.
11270
11270
 
11271
11271
  =head1 AUTHOR
11272
11272
 
11273
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
11273
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
11274
11274
 
11275
11275
  This library is free software; you can redistribute it and/or modify it
11276
11276
  under the same terms as Perl itself.
@@ -7903,7 +7903,7 @@ and values.
7903
7903
 
7904
7904
  =head1 AUTHOR
7905
7905
 
7906
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
7906
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
7907
7907
 
7908
7908
  This library is free software; you can redistribute it and/or modify it
7909
7909
  under the same terms as Perl itself.
@@ -5841,7 +5841,7 @@ and values.
5841
5841
 
5842
5842
  =head1 AUTHOR
5843
5843
 
5844
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
5844
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
5845
5845
 
5846
5846
  This library is free software; you can redistribute it and/or modify it
5847
5847
  under the same terms as Perl itself.
@@ -2316,7 +2316,7 @@ and values.
2316
2316
 
2317
2317
  =head1 AUTHOR
2318
2318
 
2319
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2319
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2320
2320
 
2321
2321
  This library is free software; you can redistribute it and/or modify it
2322
2322
  under the same terms as Perl itself.
@@ -3208,7 +3208,7 @@ and values.
3208
3208
 
3209
3209
  =head1 AUTHOR
3210
3210
 
3211
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
3211
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
3212
3212
 
3213
3213
  This library is free software; you can redistribute it and/or modify it
3214
3214
  under the same terms as Perl itself.