UNPKG

@hyperaudio/transcript-converter

Version:

Converts various formats of JSON transcripts to Hyperaudio format

82 lines (77 loc) 3.06 kB
"use strict"; exports.__esModule = true; exports.default = function (input) { var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "flat"; var offsets = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var digits = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 2; return new Promise(function (resolve, reject) { try { var unit = 1e3; if (format === "sm") unit = 1; resolve({ words: input.words.map(function (w) { return { text: w.name, start: parseFloat((w.time / unit).toFixed(digits)), end: parseFloat((w.time / unit + w.duration / unit).toFixed(digits)) }; }), paragraphs: format === "sm" ? input.speakers.map(function (s) { return { speaker: s.name, start: parseFloat((s.time / unit).toFixed(digits)), end: parseFloat((s.time / unit + s.duration / unit).toFixed(digits)) }; }) : input.words.reduce(function (acc, w) { var p = acc.lenght > 1 ? acc[acc.length - 1] : {}; if (p.id !== w.para) { acc.push({ id: w.para, start: parseFloat((w.time / unit).toFixed(digits)), end: parseFloat((w.time / unit + w.duration / unit).toFixed(digits)), speaker: input.speakers[w.speaker] ? input.speakers[w.speaker].name : null }); } else { p.end = parseFloat((w.time / unit + w.duration / unit).toFixed(digits)); } return acc; }, []).map(function (p) { delete p.id; return p; }) // speakers: format === `sm` ? input.speakers.map(s => { // return { // name: s.name, // start: parseFloat((s.time / unit).toFixed(digits)), // end: parseFloat((s.time / unit + s.duration / unit).toFixed(digits)) // }; // }) : /*Object.keys(input.words.reduce((acc, w) => { // const speaker = input.speakers[w.speaker] ? input.speakers[w.speaker].name : null; // if (speaker) acc[speaker] = w.speaker; // return acc; // }, {}))*/ // input.words.reduce((acc, w) => { // const p = acc.lenght > 1 ? acc[acc.length - 1] : {}; // if (p.id !== w.para) { // acc.push({ // id: w.para, // start: parseFloat((w.time / unit).toFixed(digits)), // end: parseFloat((w.time / unit + w.duration / unit).toFixed(digits)), // name: input.speakers[w.speaker] ? input.speakers[w.speaker].name : null // }); // } else { // p.end = parseFloat((w.time / unit + w.duration / unit).toFixed(digits)); // } // // return acc; // }, []).map(p => { // delete p.id; // return p; // }) }); } catch (error) { reject(error); } }); }; module.exports = exports["default"];