exiftool-vendored 18.1.0 → 18.3.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.
- package/CHANGELOG.md +28 -2
- package/README.md +0 -1
- package/dist/CapturedAtTagNames.d.ts +1 -0
- package/dist/CapturedAtTagNames.js +13 -0
- package/dist/CapturedAtTagNames.js.map +1 -0
- package/dist/ExifTool.d.ts +20 -1
- package/dist/ExifTool.js +6 -1
- package/dist/ExifTool.js.map +1 -1
- package/dist/FirstDateTime.d.ts +9 -0
- package/dist/FirstDateTime.js +27 -0
- package/dist/FirstDateTime.js.map +1 -0
- package/dist/GeoTz.d.ts +2 -0
- package/dist/GeoTz.js +17 -0
- package/dist/GeoTz.js.map +1 -0
- package/dist/MaybeReadonly.d.ts +1 -0
- package/dist/MaybeReadonly.js +3 -0
- package/dist/MaybeReadonly.js.map +1 -0
- package/dist/ReadTask.d.ts +1 -1
- package/dist/ReadTask.js +70 -52
- package/dist/ReadTask.js.map +1 -1
- package/dist/Tags.d.ts +221 -217
- package/dist/Timezones.d.ts +15 -1
- package/dist/Timezones.js +27 -11
- package/dist/Timezones.js.map +1 -1
- package/package.json +17 -18
package/CHANGELOG.md
CHANGED
|
@@ -25,11 +25,37 @@ vendored versions of ExifTool match the version that they vendor.
|
|
|
25
25
|
|
|
26
26
|
## Version history
|
|
27
27
|
|
|
28
|
+
### v18.3.0
|
|
29
|
+
|
|
30
|
+
- 🌱 ExifTool upgraded to [v12.49](https://exiftool.org/history.html#v12.49), which adds write support to WEBP and a bunch of other goodness
|
|
31
|
+
|
|
32
|
+
- 📦 Added new cameras to test image corpus, rebuilt tags and docs
|
|
33
|
+
|
|
34
|
+
- 📦 Updated dependencies
|
|
35
|
+
|
|
36
|
+
### v18.2.0
|
|
37
|
+
|
|
38
|
+
- ✨ Add support for alternative gps timezone lookup libraries. If you want to use `geo-tz` instead, use something like this:
|
|
39
|
+
|
|
40
|
+
```js
|
|
41
|
+
const geoTz = require("geo-tz")
|
|
42
|
+
const { ExifTool } = require("exiftool-vendored")
|
|
43
|
+
const exiftool = new ExifTool({ geoToTz: (lat, lon) => geoTz.find(lat, lon)[0] })
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
- ✨ If a timezone offset tag is present, _and_ GPS metadata can infer a timezone, _and_ they result in the same offset, `Tags.tz` will use the GPS zone name (like `America/Los_Angeles`).
|
|
47
|
+
|
|
48
|
+
- 🐞 We now only apply timezone offset defaults to tag values that are lacking in explicit offsets and are not always encoded in UTC.
|
|
49
|
+
|
|
50
|
+
- 📦 Timezone "normalization" to a single timezone is no longer applied--if a datetime tag has an offset, the ExifDateTime value should retain that offset value now. Use `ExifDateTime.setZone` if you want to normalize any instance.
|
|
51
|
+
|
|
52
|
+
- 📦 Restore `GPSPosition` to the default `numericTags` so all GPS lat/lon values are consistent.
|
|
53
|
+
|
|
28
54
|
### v18.1.0
|
|
29
55
|
|
|
30
|
-
- 📦 Switch from the abandoned `tz-lookup` package to `@photostructure/tz-lookup
|
|
56
|
+
- 📦 Switch from the abandoned `tz-lookup` package to [`@photostructure/tz-lookup`](https://github.com/photostructure/tz-lookup). Note that this uses an updated time zone geo database, so some time zone names and geo shapes have changed.
|
|
31
57
|
|
|
32
|
-
-
|
|
58
|
+
- 📦 The `GPSPosition` tag is no longer included in the default set of numeric tags, as this results in ExifTool returning two floats, whitespace-separated. Use `GPSLatitude` and `GPSLongitude` instead.
|
|
33
59
|
|
|
34
60
|
### v18.0.0
|
|
35
61
|
|
package/README.md
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
[](https://www.npmjs.com/package/exiftool-vendored)
|
|
6
6
|
[](https://github.com/photostructure/exiftool-vendored.js/actions/workflows/node.js.yml)
|
|
7
7
|
[](https://github.com/photostructure/exiftool-vendored.js/issues)
|
|
8
|
-
[](https://lgtm.com/projects/g/photostructure/exiftool-vendored.js/context:javascript)
|
|
9
8
|
[](https://snyk.io/test/github/photostructure/exiftool-vendored.js?targetFile=package.json)
|
|
10
9
|
|
|
11
10
|
## Features
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const CapturedAtTagNames: readonly ["SubSecDateTimeOriginal", "DateTimeOriginal", "SubSecCreateDate", "CreateDate", "SubSecMediaCreateDate", "MediaCreateDate", "DateTimeCreated"];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CapturedAtTagNames = void 0;
|
|
4
|
+
exports.CapturedAtTagNames = [
|
|
5
|
+
"SubSecDateTimeOriginal",
|
|
6
|
+
"DateTimeOriginal",
|
|
7
|
+
"SubSecCreateDate",
|
|
8
|
+
"CreateDate",
|
|
9
|
+
"SubSecMediaCreateDate",
|
|
10
|
+
"MediaCreateDate",
|
|
11
|
+
"DateTimeCreated",
|
|
12
|
+
];
|
|
13
|
+
//# sourceMappingURL=CapturedAtTagNames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CapturedAtTagNames.js","sourceRoot":"","sources":["../src/CapturedAtTagNames.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG;IAChC,wBAAwB;IACxB,kBAAkB;IAClB,kBAAkB;IAClB,YAAY;IACZ,uBAAuB;IACvB,iBAAiB;IACjB,iBAAiB;CACT,CAAA"}
|
package/dist/ExifTool.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { ApplicationRecordTags } from "./ApplicationRecordTags";
|
|
|
5
5
|
import { ExifDate } from "./ExifDate";
|
|
6
6
|
import { ExifDateTime } from "./ExifDateTime";
|
|
7
7
|
import { ExifToolTask } from "./ExifToolTask";
|
|
8
|
+
import { geoTz } from "./GeoTz";
|
|
8
9
|
import { ICCProfileTags } from "./ICCProfileTags";
|
|
9
10
|
import { Maybe } from "./Maybe";
|
|
10
11
|
import { PreviewTag } from "./PreviewTag";
|
|
@@ -17,7 +18,7 @@ export { ExifDateTime } from "./ExifDateTime";
|
|
|
17
18
|
export { ExifTime } from "./ExifTime";
|
|
18
19
|
export { ExifToolTask } from "./ExifToolTask";
|
|
19
20
|
export { parseJSON } from "./JSON";
|
|
20
|
-
export { offsetMinutesToZoneName, UnsetZone, UnsetZoneName, UnsetZoneOffsetMinutes, } from "./Timezones";
|
|
21
|
+
export { defaultVideosToUTC, offsetMinutesToZoneName, UnsetZone, UnsetZoneName, UnsetZoneOffsetMinutes, } from "./Timezones";
|
|
21
22
|
export type { AdditionalWriteTags, APP12Tags, APP14Tags, APP1Tags, APP4Tags, APP5Tags, APP6Tags, ApplicationRecordTags, CompositeTags, EXIFTags, ExifToolTags, ExpandedDateTags, FileTags, FlashPixTags, ICCProfileTags, IPTCTags, JFIFTags, MakerNotesTags, Maybe, MetaTags, MPFTags, Omit, PanasonicRawTags, PhotoshopTags, PrintIMTags, QuickTimeTags, RAFTags, ResourceEvent, RIFFTags, Struct, Tags, Version, XMPTags, };
|
|
22
23
|
export declare const DefaultExifToolPath: string;
|
|
23
24
|
export declare const DefaultExiftoolArgs: string[];
|
|
@@ -141,6 +142,24 @@ export interface ExifToolOptions extends bc.BatchClusterOptions, bc.BatchProcess
|
|
|
141
142
|
* situations. Note also that `perl` will be spawned in a sub-shell.
|
|
142
143
|
*/
|
|
143
144
|
ignoreShebang: boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Override the default geo-to-timezone lookup service.
|
|
147
|
+
*
|
|
148
|
+
* This defaults to `@photostructure/tz-lookup`, but if you have the
|
|
149
|
+
* resources, consider using `geo-tz` for more accurate results.
|
|
150
|
+
*
|
|
151
|
+
* Here's a snippet of how to use `geo-tz` instead of `tz-lookup`:
|
|
152
|
+
*
|
|
153
|
+
```js
|
|
154
|
+
const geotz = require("geo-tz")
|
|
155
|
+
const { ExifTool } = require("exiftool-vendored")
|
|
156
|
+
const exiftool = new ExifTool({ geoTz: (lat, lon) => geotz.find(lat, lon)[0] })
|
|
157
|
+
```
|
|
158
|
+
*
|
|
159
|
+
* @see https://github.com/photostructure/tz-lookup
|
|
160
|
+
* @see https://github.com/evansiroky/node-geo-tz/
|
|
161
|
+
*/
|
|
162
|
+
geoTz: typeof geoTz;
|
|
144
163
|
}
|
|
145
164
|
declare type Omit<T, K> = Pick<T, Exclude<keyof T, K>>;
|
|
146
165
|
/**
|
package/dist/ExifTool.js
CHANGED
|
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.exiftool = exports.ExifTool = exports.DefaultExifToolOptions = exports.DefaultMaxProcs = exports.DefaultExiftoolArgs = exports.DefaultExifToolPath = exports.UnsetZoneOffsetMinutes = exports.UnsetZoneName = exports.UnsetZone = exports.offsetMinutesToZoneName = exports.parseJSON = exports.ExifToolTask = exports.ExifTime = exports.ExifDateTime = exports.ExifDate = void 0;
|
|
29
|
+
exports.exiftool = exports.ExifTool = exports.DefaultExifToolOptions = exports.DefaultMaxProcs = exports.DefaultExiftoolArgs = exports.DefaultExifToolPath = exports.UnsetZoneOffsetMinutes = exports.UnsetZoneName = exports.UnsetZone = exports.offsetMinutesToZoneName = exports.defaultVideosToUTC = exports.parseJSON = exports.ExifToolTask = exports.ExifTime = exports.ExifDateTime = exports.ExifDate = void 0;
|
|
30
30
|
const bc = __importStar(require("batch-cluster"));
|
|
31
31
|
const _cp = __importStar(require("child_process"));
|
|
32
32
|
const _fs = __importStar(require("fs"));
|
|
@@ -37,6 +37,7 @@ const AsyncRetry_1 = require("./AsyncRetry");
|
|
|
37
37
|
const BinaryExtractionTask_1 = require("./BinaryExtractionTask");
|
|
38
38
|
const BinaryToBufferTask_1 = require("./BinaryToBufferTask");
|
|
39
39
|
const DeleteAllTagsArgs_1 = require("./DeleteAllTagsArgs");
|
|
40
|
+
const GeoTz_1 = require("./GeoTz");
|
|
40
41
|
const Lazy_1 = require("./Lazy");
|
|
41
42
|
const ReadRawTask_1 = require("./ReadRawTask");
|
|
42
43
|
const ReadTask_1 = require("./ReadTask");
|
|
@@ -55,6 +56,7 @@ Object.defineProperty(exports, "ExifToolTask", { enumerable: true, get: function
|
|
|
55
56
|
var JSON_1 = require("./JSON");
|
|
56
57
|
Object.defineProperty(exports, "parseJSON", { enumerable: true, get: function () { return JSON_1.parseJSON; } });
|
|
57
58
|
var Timezones_1 = require("./Timezones");
|
|
59
|
+
Object.defineProperty(exports, "defaultVideosToUTC", { enumerable: true, get: function () { return Timezones_1.defaultVideosToUTC; } });
|
|
58
60
|
Object.defineProperty(exports, "offsetMinutesToZoneName", { enumerable: true, get: function () { return Timezones_1.offsetMinutesToZoneName; } });
|
|
59
61
|
Object.defineProperty(exports, "UnsetZone", { enumerable: true, get: function () { return Timezones_1.UnsetZone; } });
|
|
60
62
|
Object.defineProperty(exports, "UnsetZoneName", { enumerable: true, get: function () { return Timezones_1.UnsetZoneName; } });
|
|
@@ -114,9 +116,11 @@ exports.DefaultExifToolOptions = Object.freeze({
|
|
|
114
116
|
"GPSAltitude",
|
|
115
117
|
"GPSLatitude",
|
|
116
118
|
"GPSLongitude",
|
|
119
|
+
"GPSPosition",
|
|
117
120
|
"Orientation",
|
|
118
121
|
],
|
|
119
122
|
defaultVideosToUTC: true,
|
|
123
|
+
geoTz: GeoTz_1.geoTz,
|
|
120
124
|
});
|
|
121
125
|
/**
|
|
122
126
|
* Manages delegating calls to a vendored running instance of ExifTool.
|
|
@@ -189,6 +193,7 @@ class ExifTool {
|
|
|
189
193
|
optionalArgs,
|
|
190
194
|
numericTags: this.options.numericTags,
|
|
191
195
|
defaultVideosToUTC: this.options.defaultVideosToUTC,
|
|
196
|
+
geoTz: this.options.geoTz,
|
|
192
197
|
})); // < no way to know at compile time if we're going to get back a T!
|
|
193
198
|
}
|
|
194
199
|
/**
|
package/dist/ExifTool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExifTool.js","sourceRoot":"","sources":["../src/ExifTool.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAmC;AACnC,mDAAoC;AACpC,wCAAyB;AACzB,wCAAyB;AACzB,4CAA6B;AAC7B,sDAA6B;AAE7B,6CAA4C;AAC5C,iEAA6D;AAC7D,6DAAyD;AACzD,2DAAuD;
|
|
1
|
+
{"version":3,"file":"ExifTool.js","sourceRoot":"","sources":["../src/ExifTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ExifDateTime } from "./ExifDateTime";
|
|
2
|
+
import { Maybe } from "./Maybe";
|
|
3
|
+
import { MaybeReadonly } from "./MaybeReadonly";
|
|
4
|
+
import { Tags } from "./Tags";
|
|
5
|
+
/**
|
|
6
|
+
* Returns the first date/time tag in `dateTimeTags` that strictly parses from
|
|
7
|
+
* EXIF.
|
|
8
|
+
*/
|
|
9
|
+
export declare function firstDateTime(tags: Maybe<Tags>, dateTimeTags?: MaybeReadonly<(keyof Tags)[]>): Maybe<ExifDateTime>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.firstDateTime = void 0;
|
|
4
|
+
const CapturedAtTagNames_1 = require("./CapturedAtTagNames");
|
|
5
|
+
const ExifDateTime_1 = require("./ExifDateTime");
|
|
6
|
+
const String_1 = require("./String");
|
|
7
|
+
/**
|
|
8
|
+
* Returns the first date/time tag in `dateTimeTags` that strictly parses from
|
|
9
|
+
* EXIF.
|
|
10
|
+
*/
|
|
11
|
+
function firstDateTime(tags, dateTimeTags = CapturedAtTagNames_1.CapturedAtTagNames) {
|
|
12
|
+
for (const tag of dateTimeTags) {
|
|
13
|
+
const dt = tags === null || tags === void 0 ? void 0 : tags[tag];
|
|
14
|
+
if (dt instanceof ExifDateTime_1.ExifDateTime) {
|
|
15
|
+
return dt;
|
|
16
|
+
}
|
|
17
|
+
else if ((0, String_1.isString)(dt)) {
|
|
18
|
+
const edt = ExifDateTime_1.ExifDateTime.fromEXIF(dt);
|
|
19
|
+
if (edt != null) {
|
|
20
|
+
return edt;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
exports.firstDateTime = firstDateTime;
|
|
27
|
+
//# sourceMappingURL=FirstDateTime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FirstDateTime.js","sourceRoot":"","sources":["../src/FirstDateTime.ts"],"names":[],"mappings":";;;AAAA,6DAAyD;AACzD,iDAA6C;AAG7C,qCAAmC;AAGnC;;;GAGG;AACH,SAAgB,aAAa,CAC3B,IAAiB,EACjB,eAA8C,uCAAkB;IAEhE,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;QAC9B,MAAM,EAAE,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,GAAG,CAAQ,CAAA;QAC7B,IAAI,EAAE,YAAY,2BAAY,EAAE;YAC9B,OAAO,EAAE,CAAA;SACV;aAAM,IAAI,IAAA,iBAAQ,EAAC,EAAE,CAAC,EAAE;YACvB,MAAM,GAAG,GAAG,2BAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YACrC,IAAI,GAAG,IAAI,IAAI,EAAE;gBACf,OAAO,GAAG,CAAA;aACX;SACF;KACF;IACD,OAAM;AACR,CAAC;AAhBD,sCAgBC"}
|
package/dist/GeoTz.d.ts
ADDED
package/dist/GeoTz.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.geoTz = void 0;
|
|
7
|
+
const tz_lookup_1 = __importDefault(require("@photostructure/tz-lookup"));
|
|
8
|
+
function geoTz(lat, lon) {
|
|
9
|
+
try {
|
|
10
|
+
return (0, tz_lookup_1.default)(lat, lon);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.geoTz = geoTz;
|
|
17
|
+
//# sourceMappingURL=GeoTz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeoTz.js","sourceRoot":"","sources":["../src/GeoTz.ts"],"names":[],"mappings":";;;;;;AAAA,0EAAiD;AAGjD,SAAgB,KAAK,CAAC,GAAW,EAAE,GAAW;IAC5C,IAAI;QACF,OAAO,IAAA,mBAAS,EAAC,GAAG,EAAE,GAAG,CAAC,CAAA;KAC3B;IAAC,MAAM;QACN,OAAM;KACP;AACH,CAAC;AAND,sBAMC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare type MaybeReadonly<T> = T | Readonly<T>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaybeReadonly.js","sourceRoot":"","sources":["../src/MaybeReadonly.ts"],"names":[],"mappings":""}
|
package/dist/ReadTask.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { Tags } from "./Tags";
|
|
|
4
4
|
export declare function nullish(s: string | undefined): s is undefined;
|
|
5
5
|
export declare type ReadTaskOptions = {
|
|
6
6
|
optionalArgs: string[];
|
|
7
|
-
} & Pick<ExifToolOptions, "numericTags" | "defaultVideosToUTC">;
|
|
7
|
+
} & Pick<ExifToolOptions, "numericTags" | "defaultVideosToUTC" | "geoTz">;
|
|
8
8
|
export declare class ReadTask extends ExifToolTask<Tags> {
|
|
9
9
|
#private;
|
|
10
10
|
readonly sourceFile: string;
|
package/dist/ReadTask.js
CHANGED
|
@@ -27,19 +27,17 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
27
27
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
28
28
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
29
29
|
};
|
|
30
|
-
var
|
|
31
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
32
|
-
};
|
|
33
|
-
var _ReadTask_instances, _ReadTask_tagName, _ReadTask_parseTags, _ReadTask_extractLatLon, _ReadTask_latlon, _ReadTask_extractTzOffset, _ReadTask_normalizeDateTime, _ReadTask_parseTag;
|
|
30
|
+
var _ReadTask_instances, _ReadTask_tagName, _ReadTask_parseTags, _ReadTask_extractLatLon, _ReadTask_latlon, _ReadTask_geoTz, _ReadTask_extractTzOffset, _ReadTask_parseTag;
|
|
34
31
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
32
|
exports.ReadTask = exports.nullish = void 0;
|
|
36
|
-
const tz_lookup_1 = __importDefault(require("@photostructure/tz-lookup"));
|
|
37
33
|
const batch_cluster_1 = require("batch-cluster");
|
|
38
34
|
const _path = __importStar(require("path"));
|
|
39
35
|
const ExifDate_1 = require("./ExifDate");
|
|
40
36
|
const ExifDateTime_1 = require("./ExifDateTime");
|
|
41
37
|
const ExifTime_1 = require("./ExifTime");
|
|
42
38
|
const ExifToolTask_1 = require("./ExifToolTask");
|
|
39
|
+
const FirstDateTime_1 = require("./FirstDateTime");
|
|
40
|
+
const Lazy_1 = require("./Lazy");
|
|
43
41
|
const Maybe_1 = require("./Maybe");
|
|
44
42
|
const Number_1 = require("./Number");
|
|
45
43
|
const String_1 = require("./String");
|
|
@@ -71,6 +69,27 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
|
|
|
71
69
|
/** Always has non-group-prefixed keys */
|
|
72
70
|
this._tags = {};
|
|
73
71
|
this.invalidLatLon = false;
|
|
72
|
+
_ReadTask_extractLatLon.set(this, (0, Lazy_1.lazy)(() => {
|
|
73
|
+
var _a, _b;
|
|
74
|
+
(_a = this.lat) !== null && _a !== void 0 ? _a : (this.lat = __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_latlon).call(this, "GPSLatitude", "S", 90));
|
|
75
|
+
(_b = this.lon) !== null && _b !== void 0 ? _b : (this.lon = __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_latlon).call(this, "GPSLongitude", "W", 180));
|
|
76
|
+
if (this.invalidLatLon) {
|
|
77
|
+
this.lat = this.lon = undefined;
|
|
78
|
+
}
|
|
79
|
+
}));
|
|
80
|
+
_ReadTask_geoTz.set(this, (0, Lazy_1.lazy)(() => {
|
|
81
|
+
__classPrivateFieldGet(this, _ReadTask_extractLatLon, "f").call(this);
|
|
82
|
+
if (this.invalidLatLon || this.lat == null || this.lon == null)
|
|
83
|
+
return;
|
|
84
|
+
try {
|
|
85
|
+
const geoTz = this.options.geoTz(this.lat, this.lon);
|
|
86
|
+
return (0, Timezones_1.normalizeZone)(geoTz);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
this.invalidLatLon = true;
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
}));
|
|
74
93
|
this.degroup = this.args.indexOf("-G") !== -1;
|
|
75
94
|
this.tags = { SourceFile: sourceFile };
|
|
76
95
|
this.tags.errors = this.errors;
|
|
@@ -126,11 +145,11 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
|
|
|
126
145
|
}
|
|
127
146
|
}
|
|
128
147
|
exports.ReadTask = ReadTask;
|
|
129
|
-
_ReadTask_instances = new WeakSet(), _ReadTask_tagName = function _ReadTask_tagName(k) {
|
|
148
|
+
_ReadTask_extractLatLon = new WeakMap(), _ReadTask_geoTz = new WeakMap(), _ReadTask_instances = new WeakSet(), _ReadTask_tagName = function _ReadTask_tagName(k) {
|
|
130
149
|
var _a;
|
|
131
150
|
return this.degroup ? (_a = k.split(":")[1]) !== null && _a !== void 0 ? _a : k : k;
|
|
132
151
|
}, _ReadTask_parseTags = function _ReadTask_parseTags() {
|
|
133
|
-
__classPrivateFieldGet(this,
|
|
152
|
+
__classPrivateFieldGet(this, _ReadTask_extractLatLon, "f").call(this);
|
|
134
153
|
__classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_extractTzOffset).call(this);
|
|
135
154
|
(0, Maybe_1.map)(this.tz, (ea) => (this.tags.tz = ea));
|
|
136
155
|
(0, Maybe_1.map)(this.tzSource, (ea) => (this.tags.tzSource = ea));
|
|
@@ -141,13 +160,6 @@ _ReadTask_instances = new WeakSet(), _ReadTask_tagName = function _ReadTask_tagN
|
|
|
141
160
|
if (this.errors.length > 0)
|
|
142
161
|
this.tags.errors = this.errors;
|
|
143
162
|
return this.tags;
|
|
144
|
-
}, _ReadTask_extractLatLon = function _ReadTask_extractLatLon() {
|
|
145
|
-
var _a, _b;
|
|
146
|
-
(_a = this.lat) !== null && _a !== void 0 ? _a : (this.lat = __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_latlon).call(this, "GPSLatitude", "S", 90));
|
|
147
|
-
(_b = this.lon) !== null && _b !== void 0 ? _b : (this.lon = __classPrivateFieldGet(this, _ReadTask_instances, "m", _ReadTask_latlon).call(this, "GPSLongitude", "W", 180));
|
|
148
|
-
if (this.invalidLatLon) {
|
|
149
|
-
this.lat = this.lon = undefined;
|
|
150
|
-
}
|
|
151
163
|
}, _ReadTask_latlon = function _ReadTask_latlon(tagName, negateRef, maxValid) {
|
|
152
164
|
const tagValue = this._tags[tagName];
|
|
153
165
|
const ref = this._tags[tagName + "Ref"];
|
|
@@ -174,48 +186,54 @@ _ReadTask_instances = new WeakSet(), _ReadTask_tagName = function _ReadTask_tagN
|
|
|
174
186
|
}
|
|
175
187
|
}, _ReadTask_extractTzOffset = function _ReadTask_extractTzOffset() {
|
|
176
188
|
(0, Maybe_1.map)((0, Maybe_1.firstDefinedThunk)([
|
|
189
|
+
// If there is an explicit TimeZone tag (which is rare), defer to that
|
|
190
|
+
// before defaulting to UTC for videos:
|
|
191
|
+
() => {
|
|
192
|
+
const tz = (0, Timezones_1.extractTzOffsetFromTags)(this._tags);
|
|
193
|
+
// If this tz offset matches the GPS zone, use the GPS zone name (like "America/Los_Angeles") instead of the offset.
|
|
194
|
+
const z = (0, Timezones_1.normalizeZone)(tz === null || tz === void 0 ? void 0 : tz.tz);
|
|
195
|
+
if (tz != null && z != null) {
|
|
196
|
+
const geoTz = __classPrivateFieldGet(this, _ReadTask_geoTz, "f").call(this);
|
|
197
|
+
if (geoTz != null) {
|
|
198
|
+
const edt = (0, FirstDateTime_1.firstDateTime)(this._raw);
|
|
199
|
+
if (edt != null) {
|
|
200
|
+
const ts = edt.toMillis();
|
|
201
|
+
const zOffset = z.offset(ts);
|
|
202
|
+
const geoTzOffset = geoTz.offset(ts);
|
|
203
|
+
if (zOffset === geoTzOffset) {
|
|
204
|
+
return {
|
|
205
|
+
tz: geoTz.name,
|
|
206
|
+
src: tz.src + " & Lat/Lon",
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return tz;
|
|
213
|
+
},
|
|
177
214
|
// See https://github.com/photostructure/exiftool-vendored.js/issues/113
|
|
215
|
+
// Videos are frequently encoded in UTC, but don't include the timezone offset in their datetime stamps.
|
|
216
|
+
// This must be before the tz_lookup/geoTz strategy, as smartphone videos
|
|
217
|
+
// will contain GPS, but still encode timestamps in UTC without an
|
|
218
|
+
// explicit offset. HURRAY
|
|
178
219
|
() => {
|
|
179
220
|
var _a, _b, _c;
|
|
180
|
-
|
|
181
|
-
this.options.defaultVideosToUTC === true
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
return;
|
|
221
|
+
return ((_b = (_a = this._tags) === null || _a === void 0 ? void 0 : _a.MIMEType) === null || _b === void 0 ? void 0 : _b.startsWith("video/")) &&
|
|
222
|
+
this.options.defaultVideosToUTC === true
|
|
223
|
+
? // If there is a TimeZone tag, defer to that before defaulting to UTC:
|
|
224
|
+
(_c = (0, Timezones_1.extractTzOffsetFromTags)(this._tags)) !== null && _c !== void 0 ? _c : {
|
|
225
|
+
tz: "UTC",
|
|
226
|
+
src: "defaultVideosToUTC",
|
|
227
|
+
}
|
|
228
|
+
: // not applicable:
|
|
229
|
+
undefined;
|
|
190
230
|
},
|
|
191
231
|
// If lat/lon is valid, use the tzlookup library, as it will be a proper
|
|
192
232
|
// Zone name (like "America/New_York"), rather than just an hour offset.
|
|
193
|
-
() => {
|
|
194
|
-
|
|
195
|
-
try {
|
|
196
|
-
return (0, Maybe_1.map)((0, tz_lookup_1.default)(this.lat, this.lon), (tz) => ({
|
|
197
|
-
tz,
|
|
198
|
-
src: "from Lat/Lon",
|
|
199
|
-
}));
|
|
200
|
-
}
|
|
201
|
-
catch (err) {
|
|
202
|
-
/* */
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
return;
|
|
206
|
-
},
|
|
207
|
-
() => (0, Timezones_1.extractTzOffsetFromTags)(this._tags),
|
|
233
|
+
() => (0, Maybe_1.map)(__classPrivateFieldGet(this, _ReadTask_geoTz, "f").call(this), (ea) => ({ tz: ea.name, src: "from Lat/Lon" })),
|
|
234
|
+
// This is a last-ditch estimation heuristic:
|
|
208
235
|
() => (0, Timezones_1.extractTzOffsetFromUTCOffset)(this._tags),
|
|
209
236
|
]), (ea) => ({ tz: this.tz, src: this.tzSource } = ea));
|
|
210
|
-
}, _ReadTask_normalizeDateTime = function _ReadTask_normalizeDateTime(tagName, value) {
|
|
211
|
-
if (tagName.startsWith("File") ||
|
|
212
|
-
!(value instanceof ExifDateTime_1.ExifDateTime) ||
|
|
213
|
-
utcTagName(tagName) ||
|
|
214
|
-
this.tz == null) {
|
|
215
|
-
return value;
|
|
216
|
-
}
|
|
217
|
-
// ExifTool may have put this in the current system time, instead of the timezone of the file.
|
|
218
|
-
return value.zone !== this.tz ? value.setZone(this.tz) : value;
|
|
219
237
|
}, _ReadTask_parseTag = function _ReadTask_parseTag(tagName, value) {
|
|
220
238
|
var _a, _b, _c, _d, _e, _f;
|
|
221
239
|
if (nullish(value))
|
|
@@ -241,18 +259,18 @@ _ReadTask_instances = new WeakSet(), _ReadTask_tagName = function _ReadTask_tagN
|
|
|
241
259
|
return this.lon;
|
|
242
260
|
}
|
|
243
261
|
if (typeof value === "string") {
|
|
244
|
-
const tz =
|
|
262
|
+
const tz = isUtcTagName(tagName) ? "UTC" : this.tz;
|
|
245
263
|
if (tagName === "When" ||
|
|
246
264
|
tagName.includes("DateTime") ||
|
|
247
265
|
tagName.toLowerCase().includes("timestamp")) {
|
|
248
266
|
const d = (_a = ExifDateTime_1.ExifDateTime.fromExifStrict(value, tz)) !== null && _a !== void 0 ? _a : ExifDateTime_1.ExifDateTime.fromISO(value, tz);
|
|
249
267
|
if (d != null)
|
|
250
|
-
return
|
|
268
|
+
return d;
|
|
251
269
|
}
|
|
252
270
|
if (tagName === "When" || tagName.includes("Date")) {
|
|
253
271
|
const d = (_f = (_e = (_d = (_c = (_b = ExifDateTime_1.ExifDateTime.fromExifStrict(value, tz)) !== null && _b !== void 0 ? _b : ExifDateTime_1.ExifDateTime.fromISO(value, tz)) !== null && _c !== void 0 ? _c : ExifDateTime_1.ExifDateTime.fromExifLoose(value, tz)) !== null && _d !== void 0 ? _d : ExifDate_1.ExifDate.fromExifStrict(value)) !== null && _e !== void 0 ? _e : ExifDate_1.ExifDate.fromISO(value)) !== null && _f !== void 0 ? _f : ExifDate_1.ExifDate.fromExifLoose(value);
|
|
254
272
|
if (d != null) {
|
|
255
|
-
return
|
|
273
|
+
return d;
|
|
256
274
|
}
|
|
257
275
|
}
|
|
258
276
|
if (tagName.includes("Time")) {
|
|
@@ -269,7 +287,7 @@ _ReadTask_instances = new WeakSet(), _ReadTask_tagName = function _ReadTask_tagN
|
|
|
269
287
|
return value;
|
|
270
288
|
}
|
|
271
289
|
};
|
|
272
|
-
function
|
|
290
|
+
function isUtcTagName(tagName) {
|
|
273
291
|
return tagName.includes("UTC") || tagName.startsWith("GPS");
|
|
274
292
|
}
|
|
275
293
|
//# sourceMappingURL=ReadTask.js.map
|
package/dist/ReadTask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadTask.js","sourceRoot":"","sources":["../src/ReadTask.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReadTask.js","sourceRoot":"","sources":["../src/ReadTask.ts"],"names":[],"mappings":"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"}
|