md-curcuma
Version:
A Typescript library for transporting and converting markdown and other data.
99 lines (98 loc) • 4.3 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Exif_Task = void 0;
const ExifReader = require("exifreader");
const Observable_Abstract_TaskBase_1 = require("./Observable_Abstract_TaskBase");
const core_1 = require("../core");
class Exif_Task extends Observable_Abstract_TaskBase_1.Observable_Abstract_TaskBase {
constructor(props) {
super();
this.props = props;
}
perform(dao) {
Exif_Task.get_tags(core_1.Filesystem.read_file_buffer("test-data-exif/images/P7230231-Verbessert-SR.jpg")).then((tags) => {
console.log("############## EXIF Tags", tags);
Exif_Task.list_tags(tags);
});
return dao;
}
static get_tags(file) {
return __awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => {
ExifReader.load(file || file, { async: true })
.then(function (tags) {
delete tags["MakerNote"];
if (tags["Thumbnail"] && tags["Thumbnail"].image) {
}
resolve(tags);
})
.catch(function (error) {
reject(error);
});
});
});
}
static list_tags(tags) {
for (const group in tags) {
for (const name in tags[group]) {
if (group === "gps") {
console.log(`${group}:${name}: ${tags[group][name]}`);
}
else if (group === "Thumbnail" && name === "type") {
console.log(`${group}:${name}: ${tags[group][name]}`);
}
else if (group === "Thumbnail" && name === "image") {
console.log(`${group}:${name}: <image>`);
}
else if (group === "Thumbnail" && name === "base64") {
console.log(`${group}:${name}: <base64 encoded image>`);
}
else if (group === "mpf" && name === "Images") {
console.log(`${group}:${name}: ${Exif_Task.get_mpf_images_description(tags[group][name])}`);
}
else if (group === "xmp" && name === "_raw") {
console.log(`${group}:${name}: <XMP data string>`);
}
else if (group === "exif" && name === "ImageSourceData") {
console.log(`${group}:${name}: <Adobe data>`);
}
else if (Array.isArray(tags[group][name])) {
console.log(`${group}:${name}: ${tags[group][name]
.map((item) => item.description)
.join(", ")}`);
}
else {
console.log(`${group}:${name}: ${typeof tags[group][name] === "string"
? tags[group][name].trim()
: JSON.stringify(tags[group][name])}`);
}
}
}
}
static get_mpf_images_description(images) {
return images
.map((image, index) => `(${index}) ` +
Object.keys(image)
.map((key) => {
if (key === "image") {
return `${key}: <image>`;
}
if (key === "base64") {
return `${key}: <base64 encoded image>`;
}
return `${key}: ${image[key].description}`;
})
.join(", "))
.join("; ");
}
}
exports.Exif_Task = Exif_Task;