UNPKG

@eluvio/elv-utils-js

Version:

Utilities for the Eluvio Content Fabric

68 lines (57 loc) 1.62 kB
const fs = require('fs') // const path = require('path') const isNumber = require('@eluvio/elv-js-helpers/Boolean/isNumber') const {ModOpt} = require('./lib/options') const Utility = require('./lib/Utility') const ArgFile = require('./lib/concerns/args/ArgFile') const ArgOutfile = require('./lib/concerns/ArgOutfile') const ArgTimeShift = require('./lib/concerns/ArgTimeShift') const Subtitle = require('./lib/concerns/Subtitle') class VTTShiftTimestamps extends Utility { static blueprint() { return { concerns: [ Subtitle, ArgFile, ArgOutfile, ArgTimeShift ], options: [ ModOpt('file', { demand: true, X: 'subtitle' }), ModOpt('timeShift', { X: 'from timestamps in subtitle file', demand: true }), ModOpt('outfile', { X: 'adjusted subtitles', demand: true }) ] } } async body() { const logger = this.logger const { timeShift } = this.args const filePath = this.args.file // read captions file and apply any time shift let originalData = fs.readFileSync(filePath) const shiftedData = isNumber(timeShift) && (timeShift !== 0) ? Subtitle.adjustTimestamps(timeShift, originalData) : originalData logger.data('adjusted_subtitles', shiftedData) this.concerns.ArgOutfile.write({text: shiftedData}) } header() { return 'Shift VTT timestamps.' } } if (require.main === module) { Utility.cmdLineInvoke(VTTShiftTimestamps) } else { module.exports = VTTShiftTimestamps }