2
0
mirror of https://github.com/thumbsup/thumbsup synced 2024-11-15 18:12:46 +00:00
thumbsup/test/fixtures.js
Geoffrey Lowney cebb0327fe
Options to specify EXIF tags where keywords and "people in image" are found (#224)
* Add dynamic keyword and people-in-photo handling.
Add new options include-keywords, exclude-keyword.
Add new options include-people, exclude-people.
2021-01-12 23:05:21 +01:00

74 lines
1.8 KiB
JavaScript

const _ = require('lodash')
const fs = require('fs-extra')
const moment = require('moment')
const path = require('path')
const tmp = require('tmp')
const File = require('../src/model/file')
const Metadata = require('../src/model/metadata')
exports.exiftool = function (opts) {
opts = opts || {}
return {
SourceFile: opts.path || 'path/image.jpg',
File: {
FileModifyDate: opts.date || '2016:08:24 14:51:36',
MIMEType: opts.mimeType || 'image/jpg'
},
EXIF: {},
IPTC: {
Keywords: opts.keywords
},
XMP: {
PersonInImage: opts.people,
Subject: opts.subjects
},
H264: {},
QuickTime: {}
}
}
exports.metadata = function (opts) {
return new Metadata(exports.exiftool(opts))
}
exports.file = function (fileOpts, opts) {
const exiftool = exports.exiftool(fileOpts)
const meta = new Metadata(exiftool, undefined, opts)
return new File(exiftool, meta)
}
exports.date = function (str) {
return new Date(moment(str, 'YYYYMMDD HHmmss').valueOf())
// return new Date(Date.parse(str))
}
exports.photo = function (photoOpts, opts) {
if (typeof photoOpts === 'string') {
photoOpts = { path: photoOpts }
} else {
photoOpts = photoOpts || {}
}
photoOpts.mimeType = 'image/jpg'
return exports.file(photoOpts, opts)
}
exports.video = function (opts) {
opts = opts || {}
opts.mimeType = 'video/mp4'
return exports.file(opts)
}
exports.fromDisk = function (filename) {
const filepath = path.join(__dirname, '..', 'test-fixtures', filename)
return fs.readFileSync(filepath)
}
exports.createTempStructure = function (files) {
const tmpdir = tmp.dirSync({ unsafeCleanup: true }).name
_.each(files, (content, filepath) => {
fs.ensureFileSync(`${tmpdir}/${filepath}`)
fs.writeFileSync(`${tmpdir}/${filepath}`, content)
})
return tmpdir
}