Skip to content

Commit

Permalink
Upgrading to exiftool v12.89
Browse files Browse the repository at this point in the history
  • Loading branch information
morozgrafix committed Jul 18, 2024
1 parent 31cab57 commit 8d0362a
Show file tree
Hide file tree
Showing 41 changed files with 7,630 additions and 7,010 deletions.
60 changes: 59 additions & 1 deletion bin/Changes
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,68 @@ RSS feed: https://exiftool.org/rss.xml
Note: The most recent production release is Version 12.76. (Other versions are
considered development releases, and are not uploaded to MetaCPAN.)

July 12, 2024 - Version 12.89

- Added new Sony lenses and updated decoding of some tags (thanks Jos Roost)
- Minor change to description of NKA files
- Fixed Archive::Zip problem in Windows executable version

July 11, 2024 - Version 12.88 - "New Windows/MacOS packages"

-

NOTE: The install procedure for the Windows executable has changed!
- Windows EXE version now uses Oliver Betz's bundle with Strawberry Perl and
comes in 32- and 64-bit versions
- MacOS distribution now uses a flattened package
- Added ability to read/write deflate-compressed XMP in HEIC files
- Added a new Canon LensType (thanks Norbert Wasser)
- Added a new XMP-GCamera tag (thanks Herb)
- Added a new Nikon LensID
- Added a few new Canon AFAreaMode values (thanks Wernfried)
- Added config_files/onone.config to the distribution
- Decode timed accelerometer readings from NextBase 622GW videos
- Decode Pentax K-3III CameraOrentation (thanks Peter)
- Improved German translation for LensModel
- Enhanced the API StructFormat JSONQ setting to quote all JSON values, even
if they aren't in a structure
- Changed -geolocate option so specifying the Keys group writes
Keys:GPSPosition only if an input city is specified, and Keys:LocationName
only for input GPS coordinates
- Tweaked API Geolocation option recognized space-separated lat/lon even when
there is no decimal point in the numbers
- API Changes:
- Changed LargeFileSupport default to 2 and added a warning if a large
chunk is encountered. Set to 1 to avoid the warning.

June 13, 2024 - Version 12.87

- Added ability to write Google Container XMP tags (using the namespace prefix
'GContainer' to avoid conflict with the Google Device Container prefix)
- Decode a few new tags for the Canon EOS R5 (thanks John Moyer)
- Decode battery information for the Pentax K-3 III (thanks Peter)
- Decode RAFCompression from FujiFilm RAF images (thanks Albert Shan)
- Avoid reporting FileSize for pipes
- Updated Geolocation databases from current geonames.org files
- Enhanced Geolocation feature to allow lat/lon to be input with a space
separator instead of a comma
- Skip over Matroska Cluster if necessary to read Tags when referenced from
SeekHead
- Changed conversion for Matroska SeekID (now in hex with tag name in
brackets) and SeekPosition (now returns an absolute offset)
- Fixed problem writing XMP-Device:EarthPos coordinates
- Fixed typo in a value of Canon:DigitalLensOptimizer (thanks Martin B.)
- Fixed decoding of Matroska VideoScanType
- Fixed misleading error message when -o option was used to write to an
unsupported file type

June 7, 2024 - Version 12.86

- Added a new value for a couple of Olympus tags (thanks Herb)
- Improved handling of ID3 user-defined tags
- Decode all JPEG segments from RICO box in Ricoh MOV videos
- Decode a few new values for some tags written by Canon EOS R cameras
- Decode a few new values for some tags written by Canon EOS R cameras (thanks
John Moyer and Martin B.)
- Patched some Olympus WB_RBLevels tags to allow 4 values to be written as per
some newer models
- Fixed issue when writing IPTC date tags with a date/time value containing
Expand Down Expand Up @@ -47,6 +103,8 @@ Apr. 23, 2024 - Version 12.84
- Decode a few more Apple tags and a new CanonVRD tag
- Enhanced Geolocation feature with the ability to return any number of nearby
cities
- Allow coordinates to be entered without comma separator for the Geolocation
feature as long as both coordinates have a decimal point
- Fixed long-standing bug in Windows version that didn't properly handle dates
older than 50 years when writing FileModifyDate or FileCreateDate
- Fixed API TimeZone option to work in Windows
Expand Down
1 change: 1 addition & 0 deletions bin/MANIFEST
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ config_files/frameCount.config
config_files/gps2utm.config
config_files/guano.config
config_files/nksc.config
config_files/onone.config
config_files/photoshop_paths.config
config_files/picasa_faces.config
config_files/pix4d.config
Expand Down
4 changes: 2 additions & 2 deletions bin/META.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"Phil Harvey (philharvey66 at gmail.com)"
],
"dynamic_config" : 1,
"generated_by" : "ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.133380",
"generated_by" : "ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 2.143240",
"license" : [
"perl_5"
],
Expand Down Expand Up @@ -50,5 +50,5 @@
}
},
"release_status" : "stable",
"version" : "12.86"
"version" : "12.89"
}
34 changes: 17 additions & 17 deletions bin/META.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,32 +3,32 @@ abstract: 'Read and write meta information'
author:
- 'Phil Harvey (philharvey66 at gmail.com)'
build_requires:
ExtUtils::MakeMaker: 0
ExtUtils::MakeMaker: '0'
configure_requires:
ExtUtils::MakeMaker: 0
ExtUtils::MakeMaker: '0'
dynamic_config: 1
generated_by: 'ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.133380'
generated_by: 'ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 2.143240'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: 1.4
version: '1.4'
name: Image-ExifTool
no_index:
directory:
- t
- inc
recommends:
Archive::Zip: 0
Compress::Raw::Lzma: 0
Compress::Zlib: 0
Digest::MD5: 0
Digest::SHA: 0
IO::Compress::Brotli: 0
IO::Compress::RawDeflate: 0
IO::Uncompress::Brotli: 0
IO::Uncompress::RawInflate: 0
POSIX::strptime: 0
Time::HiRes: 0
Archive::Zip: '0'
Compress::Raw::Lzma: '0'
Compress::Zlib: '0'
Digest::MD5: '0'
Digest::SHA: '0'
IO::Compress::Brotli: '0'
IO::Compress::RawDeflate: '0'
IO::Uncompress::Brotli: '0'
IO::Uncompress::RawInflate: '0'
POSIX::strptime: '0'
Time::HiRes: '0'
requires:
perl: 5.004
version: 12.86
perl: '5.004'
version: '12.89'
5 changes: 3 additions & 2 deletions bin/README
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,8 @@ your home directory, then you would type the following commands in a
terminal window to extract and run ExifTool:

cd ~/Desktop
gzip -dc Image-ExifTool-12.86.tar.gz | tar -xf -
cd Image-ExifTool-12.86
gzip -dc Image-ExifTool-12.89.tar.gz | tar -xf -
cd Image-ExifTool-12.89
./exiftool t/images/ExifTool.jpg

Note: These commands extract meta information from one of the test images.
Expand Down Expand Up @@ -209,6 +209,7 @@ distribution package:
gps2utm.config - Generate UTM coordinate tags from GPS info
guano.config - Decode individual tags from Guano metadata
nksc.config - Decode tags in Nikon ViewNX NKSC files
onone.config - Definitions for writing On1 XMP tags
photoshop_paths.config - For extracting or copying Photoshop paths
picasa_faces.config - Convert from Picasa to MWG/MP face regions
pix4d.config - Definitions for writing Pix4D XMP tags
Expand Down
9 changes: 6 additions & 3 deletions bin/build_geolocation
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
# 2024-04-24 - PH Fixed problem with population exponent when run
# under ActivePerl
# 2024-04-29 - PH Added feature types and default to db v1.03
# 2024-06-13 - PH Tweaked case of imported feature types
#
# Notes: Requires these files from https://download.geonames.org/export/
#
Expand Down Expand Up @@ -208,8 +209,9 @@ Syntax: build_geolocation [OPTIONS] [DBFILE] ...
Options:
DBFILE - Input database file name or directory. Multiple input database
files may be specified. The -p, -c and -cp options apply to
the database that comes after them on the command line.
Default is "$dbFile".
the database that comes after them on the command line. The
other input files are assumed to be in the same directory as
the first database file. Default is "$dbFile".
-p POP - Minimum population for cities to include. POP may be a number
or be of the form "CC[,C2...]=###" to set different limits for
specific countries/regions, where CC and C2 are country codes
Expand Down Expand Up @@ -250,7 +252,7 @@ Input files (download from https://download.geonames.org/export/dump/):
$countryFile - mandatory country names file
$regionFile - mandatory region names file
$admin2File - mandatory subregion names file
$featureFile - optional feature codes file
$featureFile - optional feature codes file(s)
$altNamesFile - optional alternate names file (must exist to
to generate $outAltNames and $geoLang files)
Expand Down Expand Up @@ -478,6 +480,7 @@ if (open INFILE, '<', "$dbdir/$featureFile") {
next unless $featureCodes{$items[0]};
my $name = ucfirst $items[1];
$name =~ s/ ([a-z])/ \U$1/g;
$name =~ s/(.)\b(Of|Or|A|An|On|In|The|By|For|And)\b/$1\L$2/g;
$featureNames{$items[0]} = $name;
}
close INFILE;
Expand Down
28 changes: 28 additions & 0 deletions bin/config_files/onone.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#------------------------------------------------------------------------------
# File: onone.config
#
# Description: This config file defines On1 XMP tags for writing.
#
# Usage: exiftool -config onone.config -UserFlag=VALUE FILE ...
#
# Requires: ExifTool version 10.28 or later
#
# Revisions: 2024/07/10 - P. Harvey Created
#------------------------------------------------------------------------------

%Image::ExifTool::UserDefined = (
'Image::ExifTool::XMP::Main' => {
onone => {
SubDirectory => { TagTable => 'Image::ExifTool::UserDefined::onone' },
},
},
);

%Image::ExifTool::UserDefined::onone = (
GROUPS => { 0 => 'XMP', 1 => 'XMP-onone', 2 => 'Other' },
NAMESPACE => { 'onone' => 'http://www.ononesoftware.com/vcb/1.0/' },
WRITABLE => 'string',
UserFlag => { },
);

1; #end
32 changes: 20 additions & 12 deletions bin/exiftool
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use strict;
use warnings;
require 5.004;

my $version = '12.86';
my $version = '12.89';

# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
my $exePath;
Expand Down Expand Up @@ -51,7 +51,7 @@ sub CleanXML($);
sub EncodeXML($);
sub FormatXML($$$);
sub EscapeJSON($;$);
sub FormatJSON($$$);
sub FormatJSON($$$;$);
sub PrintCSV();
sub AddGroups($$$$);
sub ConvertBinary($);
Expand Down Expand Up @@ -1802,7 +1802,12 @@ if ($outOpt) {
my $type = GetFileType($outOpt);
if ($type) {
# (must test original file name because we can write .webp but not other RIFF types)
unless (CanWrite($outOpt)) {
my $canWrite = CanWrite($outOpt);
unless ($canWrite) {
if (defined $canWrite and $canWrite eq '') {
$type = Image::ExifTool::GetFileExtension($outOpt);
$type = uc($outOpt) unless defined $type;
}
Warn "Can't write $type files\n";
$rtnVal = 1;
next;
Expand Down Expand Up @@ -2366,7 +2371,7 @@ sub GetImageInfo($$)
my $errs = $et->GetInfo('Warning', 'Error');
PrintErrors($et, $errs, $file) and EFile($file);
} elsif (not $disableOutput) {
my ($tag, $line, %noDups, %csvInfo, $bra, $ket, $sep);
my ($tag, $line, %noDups, %csvInfo, $bra, $ket, $sep, $quote);
if ($fp) {
# print file header (only once)
if ($fileHeader) {
Expand Down Expand Up @@ -2409,6 +2414,7 @@ sub GetImageInfo($$)
} elsif ($json) {
# set delimiters for JSON or PHP output
($bra, $ket, $sep) = $json == 1 ? ('{','}',':') : ('Array(',')',' =>');
$quote = 1 if $$et{OPTIONS}{StructFormat} and $$et{OPTIONS}{StructFormat} eq 'JSONQ';
print $fp ",\n" if $comma;
print $fp qq($bra\n "SourceFile"$sep ), EscapeJSON(MyConvertFileName($et,$file),1);
$comma = 1;
Expand Down Expand Up @@ -2702,7 +2708,7 @@ TAG: foreach $tag (@foundTags) {
}
}
}
FormatJSON($fp, $val, $ind);
FormatJSON($fp, $val, $ind, $quote);
$comma = 1;
next;
}
Expand Down Expand Up @@ -3494,17 +3500,17 @@ sub EscapeJSON($;$)

#------------------------------------------------------------------------------
# Print JSON or PHP value
# Inputs: 0) file reference, 1) value, 2) indentation
sub FormatJSON($$$)
# Inputs: 0) file reference, 1) value, 2) indentation, 3) true to quote numbers
sub FormatJSON($$$;$)
{
local $_;
my ($fp, $val, $ind) = @_;
my ($fp, $val, $ind, $quote) = @_;
my $comma;
if (not ref $val) {
print $fp EscapeJSON($val);
print $fp EscapeJSON($val, $quote);
} elsif (ref $val eq 'ARRAY') {
if ($joinLists and not ref $$val[0]) {
print $fp EscapeJSON(join $listSep, @$val);
print $fp EscapeJSON(join($listSep, @$val), $quote);
} else {
my ($bra, $ket) = $json == 1 ? ('[',']') : ('Array(',')');
print $fp $bra;
Expand Down Expand Up @@ -5678,7 +5684,7 @@ with this command:
produces output like this:
-- Generated by ExifTool 12.86 --
-- Generated by ExifTool 12.89 --
File: a.jpg - 2003:10:31 15:44:19
(f/5.6, 1/60s, ISO 100)
File: b.jpg - 2006:05:23 11:57:38
Expand Down Expand Up @@ -6119,7 +6125,9 @@ B<-if> and B<-fileOrder> options for details.
=item B<-fileOrder>[I<NUM>] [-]I<TAG>
Set file processing order according to the sorted value of the specified
I<TAG>. For example, to process files in order of date:
I<TAG>. Without this option, files are processed in the order returned by
the system, which is commonly by file name, but this is filesystem
dependent. For example, to process files in order of date:
exiftool -fileOrder DateTimeOriginal DIR
Expand Down
Loading

0 comments on commit 8d0362a

Please sign in to comment.